001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050import org.hl7.fhir.r4b.utils.structuremap.StructureMapUtilities;
051/**
052 * A Map of relationships between 2 structures that can be used to transform data.
053 */
054@ResourceDef(name="StructureMap", profile="http://hl7.org/fhir/StructureDefinition/StructureMap")
055public class StructureMap extends CanonicalResource {
056
057    public enum StructureMapContextType {
058        /**
059         * The context specifies a type.
060         */
061        TYPE, 
062        /**
063         * The context specifies a variable.
064         */
065        VARIABLE, 
066        /**
067         * added to help the parsers with the generic types
068         */
069        NULL;
070        public static StructureMapContextType fromCode(String codeString) throws FHIRException {
071            if (codeString == null || "".equals(codeString))
072                return null;
073        if ("type".equals(codeString))
074          return TYPE;
075        if ("variable".equals(codeString))
076          return VARIABLE;
077        if (Configuration.isAcceptInvalidEnums())
078          return null;
079        else
080          throw new FHIRException("Unknown StructureMapContextType code '"+codeString+"'");
081        }
082        public String toCode() {
083          switch (this) {
084            case TYPE: return "type";
085            case VARIABLE: return "variable";
086            case NULL: return null;
087            default: return "?";
088          }
089        }
090        public String getSystem() {
091          switch (this) {
092            case TYPE: return "http://hl7.org/fhir/map-context-type";
093            case VARIABLE: return "http://hl7.org/fhir/map-context-type";
094            case NULL: return null;
095            default: return "?";
096          }
097        }
098        public String getDefinition() {
099          switch (this) {
100            case TYPE: return "The context specifies a type.";
101            case VARIABLE: return "The context specifies a variable.";
102            case NULL: return null;
103            default: return "?";
104          }
105        }
106        public String getDisplay() {
107          switch (this) {
108            case TYPE: return "Type";
109            case VARIABLE: return "Variable";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114    }
115
116  public static class StructureMapContextTypeEnumFactory implements EnumFactory<StructureMapContextType> {
117    public StructureMapContextType fromCode(String codeString) throws IllegalArgumentException {
118      if (codeString == null || "".equals(codeString))
119            if (codeString == null || "".equals(codeString))
120                return null;
121        if ("type".equals(codeString))
122          return StructureMapContextType.TYPE;
123        if ("variable".equals(codeString))
124          return StructureMapContextType.VARIABLE;
125        throw new IllegalArgumentException("Unknown StructureMapContextType code '"+codeString+"'");
126        }
127        public Enumeration<StructureMapContextType> fromType(Base code) throws FHIRException {
128          if (code == null)
129            return null;
130          if (code.isEmpty())
131            return new Enumeration<StructureMapContextType>(this);
132          String codeString = ((PrimitiveType) code).asStringValue();
133          if (codeString == null || "".equals(codeString))
134            return null;
135        if ("type".equals(codeString))
136          return new Enumeration<StructureMapContextType>(this, StructureMapContextType.TYPE);
137        if ("variable".equals(codeString))
138          return new Enumeration<StructureMapContextType>(this, StructureMapContextType.VARIABLE);
139        throw new FHIRException("Unknown StructureMapContextType code '"+codeString+"'");
140        }
141    public String toCode(StructureMapContextType code) {
142      if (code == StructureMapContextType.TYPE)
143        return "type";
144      if (code == StructureMapContextType.VARIABLE)
145        return "variable";
146      return "?";
147      }
148    public String toSystem(StructureMapContextType code) {
149      return code.getSystem();
150      }
151    }
152
153    public enum StructureMapGroupTypeMode {
154        /**
155         * This group is not a default group for the types.
156         */
157        NONE, 
158        /**
159         * This group is a default mapping group for the specified types and for the primary source type.
160         */
161        TYPES, 
162        /**
163         * This group is a default mapping group for the specified types.
164         */
165        TYPEANDTYPES, 
166        /**
167         * added to help the parsers with the generic types
168         */
169        NULL;
170        public static StructureMapGroupTypeMode fromCode(String codeString) throws FHIRException {
171            if (codeString == null || "".equals(codeString))
172                return null;
173        if ("none".equals(codeString))
174          return NONE;
175        if ("types".equals(codeString))
176          return TYPES;
177        if ("type-and-types".equals(codeString))
178          return TYPEANDTYPES;
179        if (Configuration.isAcceptInvalidEnums())
180          return null;
181        else
182          throw new FHIRException("Unknown StructureMapGroupTypeMode code '"+codeString+"'");
183        }
184        public String toCode() {
185          switch (this) {
186            case NONE: return "none";
187            case TYPES: return "types";
188            case TYPEANDTYPES: return "type-and-types";
189            case NULL: return null;
190            default: return "?";
191          }
192        }
193        public String getSystem() {
194          switch (this) {
195            case NONE: return "http://hl7.org/fhir/map-group-type-mode";
196            case TYPES: return "http://hl7.org/fhir/map-group-type-mode";
197            case TYPEANDTYPES: return "http://hl7.org/fhir/map-group-type-mode";
198            case NULL: return null;
199            default: return "?";
200          }
201        }
202        public String getDefinition() {
203          switch (this) {
204            case NONE: return "This group is not a default group for the types.";
205            case TYPES: return "This group is a default mapping group for the specified types and for the primary source type.";
206            case TYPEANDTYPES: return "This group is a default mapping group for the specified types.";
207            case NULL: return null;
208            default: return "?";
209          }
210        }
211        public String getDisplay() {
212          switch (this) {
213            case NONE: return "Not a Default";
214            case TYPES: return "Default for Type Combination";
215            case TYPEANDTYPES: return "Default for type + combination";
216            case NULL: return null;
217            default: return "?";
218          }
219        }
220    }
221
222  public static class StructureMapGroupTypeModeEnumFactory implements EnumFactory<StructureMapGroupTypeMode> {
223    public StructureMapGroupTypeMode fromCode(String codeString) throws IllegalArgumentException {
224      if (codeString == null || "".equals(codeString))
225            if (codeString == null || "".equals(codeString))
226                return null;
227        if ("none".equals(codeString))
228          return StructureMapGroupTypeMode.NONE;
229        if ("types".equals(codeString))
230          return StructureMapGroupTypeMode.TYPES;
231        if ("type-and-types".equals(codeString))
232          return StructureMapGroupTypeMode.TYPEANDTYPES;
233        throw new IllegalArgumentException("Unknown StructureMapGroupTypeMode code '"+codeString+"'");
234        }
235        public Enumeration<StructureMapGroupTypeMode> fromType(Base code) throws FHIRException {
236          if (code == null)
237            return null;
238          if (code.isEmpty())
239            return new Enumeration<StructureMapGroupTypeMode>(this);
240          String codeString = ((PrimitiveType) code).asStringValue();
241          if (codeString == null || "".equals(codeString))
242            return null;
243        if ("none".equals(codeString))
244          return new Enumeration<StructureMapGroupTypeMode>(this, StructureMapGroupTypeMode.NONE);
245        if ("types".equals(codeString))
246          return new Enumeration<StructureMapGroupTypeMode>(this, StructureMapGroupTypeMode.TYPES);
247        if ("type-and-types".equals(codeString))
248          return new Enumeration<StructureMapGroupTypeMode>(this, StructureMapGroupTypeMode.TYPEANDTYPES);
249        throw new FHIRException("Unknown StructureMapGroupTypeMode code '"+codeString+"'");
250        }
251    public String toCode(StructureMapGroupTypeMode code) {
252      if (code == StructureMapGroupTypeMode.NONE)
253        return "none";
254      if (code == StructureMapGroupTypeMode.TYPES)
255        return "types";
256      if (code == StructureMapGroupTypeMode.TYPEANDTYPES)
257        return "type-and-types";
258      return "?";
259      }
260    public String toSystem(StructureMapGroupTypeMode code) {
261      return code.getSystem();
262      }
263    }
264
265    public enum StructureMapInputMode {
266        /**
267         * Names an input instance used a source for mapping.
268         */
269        SOURCE, 
270        /**
271         * Names an instance that is being populated.
272         */
273        TARGET, 
274        /**
275         * added to help the parsers with the generic types
276         */
277        NULL;
278        public static StructureMapInputMode fromCode(String codeString) throws FHIRException {
279            if (codeString == null || "".equals(codeString))
280                return null;
281        if ("source".equals(codeString))
282          return SOURCE;
283        if ("target".equals(codeString))
284          return TARGET;
285        if (Configuration.isAcceptInvalidEnums())
286          return null;
287        else
288          throw new FHIRException("Unknown StructureMapInputMode code '"+codeString+"'");
289        }
290        public String toCode() {
291          switch (this) {
292            case SOURCE: return "source";
293            case TARGET: return "target";
294            case NULL: return null;
295            default: return "?";
296          }
297        }
298        public String getSystem() {
299          switch (this) {
300            case SOURCE: return "http://hl7.org/fhir/map-input-mode";
301            case TARGET: return "http://hl7.org/fhir/map-input-mode";
302            case NULL: return null;
303            default: return "?";
304          }
305        }
306        public String getDefinition() {
307          switch (this) {
308            case SOURCE: return "Names an input instance used a source for mapping.";
309            case TARGET: return "Names an instance that is being populated.";
310            case NULL: return null;
311            default: return "?";
312          }
313        }
314        public String getDisplay() {
315          switch (this) {
316            case SOURCE: return "Source Instance";
317            case TARGET: return "Target Instance";
318            case NULL: return null;
319            default: return "?";
320          }
321        }
322    }
323
324  public static class StructureMapInputModeEnumFactory implements EnumFactory<StructureMapInputMode> {
325    public StructureMapInputMode fromCode(String codeString) throws IllegalArgumentException {
326      if (codeString == null || "".equals(codeString))
327            if (codeString == null || "".equals(codeString))
328                return null;
329        if ("source".equals(codeString))
330          return StructureMapInputMode.SOURCE;
331        if ("target".equals(codeString))
332          return StructureMapInputMode.TARGET;
333        throw new IllegalArgumentException("Unknown StructureMapInputMode code '"+codeString+"'");
334        }
335        public Enumeration<StructureMapInputMode> fromType(Base code) throws FHIRException {
336          if (code == null)
337            return null;
338          if (code.isEmpty())
339            return new Enumeration<StructureMapInputMode>(this);
340          String codeString = ((PrimitiveType) code).asStringValue();
341          if (codeString == null || "".equals(codeString))
342            return null;
343        if ("source".equals(codeString))
344          return new Enumeration<StructureMapInputMode>(this, StructureMapInputMode.SOURCE);
345        if ("target".equals(codeString))
346          return new Enumeration<StructureMapInputMode>(this, StructureMapInputMode.TARGET);
347        throw new FHIRException("Unknown StructureMapInputMode code '"+codeString+"'");
348        }
349    public String toCode(StructureMapInputMode code) {
350      if (code == StructureMapInputMode.SOURCE)
351        return "source";
352      if (code == StructureMapInputMode.TARGET)
353        return "target";
354      return "?";
355      }
356    public String toSystem(StructureMapInputMode code) {
357      return code.getSystem();
358      }
359    }
360
361    public enum StructureMapModelMode {
362        /**
363         * This structure describes an instance passed to the mapping engine that is used a source of data.
364         */
365        SOURCE, 
366        /**
367         * This structure describes an instance that the mapping engine may ask for that is used a source of data.
368         */
369        QUERIED, 
370        /**
371         * This structure describes an instance passed to the mapping engine that is used a target of data.
372         */
373        TARGET, 
374        /**
375         * This structure describes an instance that the mapping engine may ask to create that is used a target of data.
376         */
377        PRODUCED, 
378        /**
379         * added to help the parsers with the generic types
380         */
381        NULL;
382        public static StructureMapModelMode fromCode(String codeString) throws FHIRException {
383            if (codeString == null || "".equals(codeString))
384                return null;
385        if ("source".equals(codeString))
386          return SOURCE;
387        if ("queried".equals(codeString))
388          return QUERIED;
389        if ("target".equals(codeString))
390          return TARGET;
391        if ("produced".equals(codeString))
392          return PRODUCED;
393        if (Configuration.isAcceptInvalidEnums())
394          return null;
395        else
396          throw new FHIRException("Unknown StructureMapModelMode code '"+codeString+"'");
397        }
398        public String toCode() {
399          switch (this) {
400            case SOURCE: return "source";
401            case QUERIED: return "queried";
402            case TARGET: return "target";
403            case PRODUCED: return "produced";
404            case NULL: return null;
405            default: return "?";
406          }
407        }
408        public String getSystem() {
409          switch (this) {
410            case SOURCE: return "http://hl7.org/fhir/map-model-mode";
411            case QUERIED: return "http://hl7.org/fhir/map-model-mode";
412            case TARGET: return "http://hl7.org/fhir/map-model-mode";
413            case PRODUCED: return "http://hl7.org/fhir/map-model-mode";
414            case NULL: return null;
415            default: return "?";
416          }
417        }
418        public String getDefinition() {
419          switch (this) {
420            case SOURCE: return "This structure describes an instance passed to the mapping engine that is used a source of data.";
421            case QUERIED: return "This structure describes an instance that the mapping engine may ask for that is used a source of data.";
422            case TARGET: return "This structure describes an instance passed to the mapping engine that is used a target of data.";
423            case PRODUCED: return "This structure describes an instance that the mapping engine may ask to create that is used a target of data.";
424            case NULL: return null;
425            default: return "?";
426          }
427        }
428        public String getDisplay() {
429          switch (this) {
430            case SOURCE: return "Source Structure Definition";
431            case QUERIED: return "Queried Structure Definition";
432            case TARGET: return "Target Structure Definition";
433            case PRODUCED: return "Produced Structure Definition";
434            case NULL: return null;
435            default: return "?";
436          }
437        }
438    }
439
440  public static class StructureMapModelModeEnumFactory implements EnumFactory<StructureMapModelMode> {
441    public StructureMapModelMode fromCode(String codeString) throws IllegalArgumentException {
442      if (codeString == null || "".equals(codeString))
443            if (codeString == null || "".equals(codeString))
444                return null;
445        if ("source".equals(codeString))
446          return StructureMapModelMode.SOURCE;
447        if ("queried".equals(codeString))
448          return StructureMapModelMode.QUERIED;
449        if ("target".equals(codeString))
450          return StructureMapModelMode.TARGET;
451        if ("produced".equals(codeString))
452          return StructureMapModelMode.PRODUCED;
453        throw new IllegalArgumentException("Unknown StructureMapModelMode code '"+codeString+"'");
454        }
455        public Enumeration<StructureMapModelMode> fromType(Base code) throws FHIRException {
456          if (code == null)
457            return null;
458          if (code.isEmpty())
459            return new Enumeration<StructureMapModelMode>(this);
460          String codeString = ((PrimitiveType) code).asStringValue();
461          if (codeString == null || "".equals(codeString))
462            return null;
463        if ("source".equals(codeString))
464          return new Enumeration<StructureMapModelMode>(this, StructureMapModelMode.SOURCE);
465        if ("queried".equals(codeString))
466          return new Enumeration<StructureMapModelMode>(this, StructureMapModelMode.QUERIED);
467        if ("target".equals(codeString))
468          return new Enumeration<StructureMapModelMode>(this, StructureMapModelMode.TARGET);
469        if ("produced".equals(codeString))
470          return new Enumeration<StructureMapModelMode>(this, StructureMapModelMode.PRODUCED);
471        throw new FHIRException("Unknown StructureMapModelMode code '"+codeString+"'");
472        }
473    public String toCode(StructureMapModelMode code) {
474      if (code == StructureMapModelMode.SOURCE)
475        return "source";
476      if (code == StructureMapModelMode.QUERIED)
477        return "queried";
478      if (code == StructureMapModelMode.TARGET)
479        return "target";
480      if (code == StructureMapModelMode.PRODUCED)
481        return "produced";
482      return "?";
483      }
484    public String toSystem(StructureMapModelMode code) {
485      return code.getSystem();
486      }
487    }
488
489    public enum StructureMapSourceListMode {
490        /**
491         * Only process this rule for the first in the list.
492         */
493        FIRST, 
494        /**
495         * Process this rule for all but the first.
496         */
497        NOTFIRST, 
498        /**
499         * Only process this rule for the last in the list.
500         */
501        LAST, 
502        /**
503         * Process this rule for all but the last.
504         */
505        NOTLAST, 
506        /**
507         * Only process this rule is there is only item.
508         */
509        ONLYONE, 
510        /**
511         * added to help the parsers with the generic types
512         */
513        NULL;
514        public static StructureMapSourceListMode fromCode(String codeString) throws FHIRException {
515            if (codeString == null || "".equals(codeString))
516                return null;
517        if ("first".equals(codeString))
518          return FIRST;
519        if ("not_first".equals(codeString))
520          return NOTFIRST;
521        if ("last".equals(codeString))
522          return LAST;
523        if ("not_last".equals(codeString))
524          return NOTLAST;
525        if ("only_one".equals(codeString))
526          return ONLYONE;
527        if (Configuration.isAcceptInvalidEnums())
528          return null;
529        else
530          throw new FHIRException("Unknown StructureMapSourceListMode code '"+codeString+"'");
531        }
532        public String toCode() {
533          switch (this) {
534            case FIRST: return "first";
535            case NOTFIRST: return "not_first";
536            case LAST: return "last";
537            case NOTLAST: return "not_last";
538            case ONLYONE: return "only_one";
539            case NULL: return null;
540            default: return "?";
541          }
542        }
543        public String getSystem() {
544          switch (this) {
545            case FIRST: return "http://hl7.org/fhir/map-source-list-mode";
546            case NOTFIRST: return "http://hl7.org/fhir/map-source-list-mode";
547            case LAST: return "http://hl7.org/fhir/map-source-list-mode";
548            case NOTLAST: return "http://hl7.org/fhir/map-source-list-mode";
549            case ONLYONE: return "http://hl7.org/fhir/map-source-list-mode";
550            case NULL: return null;
551            default: return "?";
552          }
553        }
554        public String getDefinition() {
555          switch (this) {
556            case FIRST: return "Only process this rule for the first in the list.";
557            case NOTFIRST: return "Process this rule for all but the first.";
558            case LAST: return "Only process this rule for the last in the list.";
559            case NOTLAST: return "Process this rule for all but the last.";
560            case ONLYONE: return "Only process this rule is there is only item.";
561            case NULL: return null;
562            default: return "?";
563          }
564        }
565        public String getDisplay() {
566          switch (this) {
567            case FIRST: return "First";
568            case NOTFIRST: return "All but the first";
569            case LAST: return "Last";
570            case NOTLAST: return "All but the last";
571            case ONLYONE: return "Enforce only one";
572            case NULL: return null;
573            default: return "?";
574          }
575        }
576    }
577
578  public static class StructureMapSourceListModeEnumFactory implements EnumFactory<StructureMapSourceListMode> {
579    public StructureMapSourceListMode fromCode(String codeString) throws IllegalArgumentException {
580      if (codeString == null || "".equals(codeString))
581            if (codeString == null || "".equals(codeString))
582                return null;
583        if ("first".equals(codeString))
584          return StructureMapSourceListMode.FIRST;
585        if ("not_first".equals(codeString))
586          return StructureMapSourceListMode.NOTFIRST;
587        if ("last".equals(codeString))
588          return StructureMapSourceListMode.LAST;
589        if ("not_last".equals(codeString))
590          return StructureMapSourceListMode.NOTLAST;
591        if ("only_one".equals(codeString))
592          return StructureMapSourceListMode.ONLYONE;
593        throw new IllegalArgumentException("Unknown StructureMapSourceListMode code '"+codeString+"'");
594        }
595        public Enumeration<StructureMapSourceListMode> fromType(Base code) throws FHIRException {
596          if (code == null)
597            return null;
598          if (code.isEmpty())
599            return new Enumeration<StructureMapSourceListMode>(this);
600          String codeString = ((PrimitiveType) code).asStringValue();
601          if (codeString == null || "".equals(codeString))
602            return null;
603        if ("first".equals(codeString))
604          return new Enumeration<StructureMapSourceListMode>(this, StructureMapSourceListMode.FIRST);
605        if ("not_first".equals(codeString))
606          return new Enumeration<StructureMapSourceListMode>(this, StructureMapSourceListMode.NOTFIRST);
607        if ("last".equals(codeString))
608          return new Enumeration<StructureMapSourceListMode>(this, StructureMapSourceListMode.LAST);
609        if ("not_last".equals(codeString))
610          return new Enumeration<StructureMapSourceListMode>(this, StructureMapSourceListMode.NOTLAST);
611        if ("only_one".equals(codeString))
612          return new Enumeration<StructureMapSourceListMode>(this, StructureMapSourceListMode.ONLYONE);
613        throw new FHIRException("Unknown StructureMapSourceListMode code '"+codeString+"'");
614        }
615    public String toCode(StructureMapSourceListMode code) {
616      if (code == StructureMapSourceListMode.FIRST)
617        return "first";
618      if (code == StructureMapSourceListMode.NOTFIRST)
619        return "not_first";
620      if (code == StructureMapSourceListMode.LAST)
621        return "last";
622      if (code == StructureMapSourceListMode.NOTLAST)
623        return "not_last";
624      if (code == StructureMapSourceListMode.ONLYONE)
625        return "only_one";
626      return "?";
627      }
628    public String toSystem(StructureMapSourceListMode code) {
629      return code.getSystem();
630      }
631    }
632
633    public enum StructureMapTargetListMode {
634        /**
635         * when the target list is being assembled, the items for this rule go first. If more than one rule defines a first item (for a given instance of mapping) then this is an error.
636         */
637        FIRST, 
638        /**
639         * the target instance is shared with the target instances generated by another rule (up to the first common n items, then create new ones).
640         */
641        SHARE, 
642        /**
643         * when the target list is being assembled, the items for this rule go last. If more than one rule defines a last item (for a given instance of mapping) then this is an error.
644         */
645        LAST, 
646        /**
647         * re-use the first item in the list, and keep adding content to it.
648         */
649        COLLATE, 
650        /**
651         * added to help the parsers with the generic types
652         */
653        NULL;
654        public static StructureMapTargetListMode fromCode(String codeString) throws FHIRException {
655            if (codeString == null || "".equals(codeString))
656                return null;
657        if ("first".equals(codeString))
658          return FIRST;
659        if ("share".equals(codeString))
660          return SHARE;
661        if ("last".equals(codeString))
662          return LAST;
663        if ("collate".equals(codeString))
664          return COLLATE;
665        if (Configuration.isAcceptInvalidEnums())
666          return null;
667        else
668          throw new FHIRException("Unknown StructureMapTargetListMode code '"+codeString+"'");
669        }
670        public String toCode() {
671          switch (this) {
672            case FIRST: return "first";
673            case SHARE: return "share";
674            case LAST: return "last";
675            case COLLATE: return "collate";
676            case NULL: return null;
677            default: return "?";
678          }
679        }
680        public String getSystem() {
681          switch (this) {
682            case FIRST: return "http://hl7.org/fhir/map-target-list-mode";
683            case SHARE: return "http://hl7.org/fhir/map-target-list-mode";
684            case LAST: return "http://hl7.org/fhir/map-target-list-mode";
685            case COLLATE: return "http://hl7.org/fhir/map-target-list-mode";
686            case NULL: return null;
687            default: return "?";
688          }
689        }
690        public String getDefinition() {
691          switch (this) {
692            case FIRST: return "when the target list is being assembled, the items for this rule go first. If more than one rule defines a first item (for a given instance of mapping) then this is an error.";
693            case SHARE: return "the target instance is shared with the target instances generated by another rule (up to the first common n items, then create new ones).";
694            case LAST: return "when the target list is being assembled, the items for this rule go last. If more than one rule defines a last item (for a given instance of mapping) then this is an error.";
695            case COLLATE: return "re-use the first item in the list, and keep adding content to it.";
696            case NULL: return null;
697            default: return "?";
698          }
699        }
700        public String getDisplay() {
701          switch (this) {
702            case FIRST: return "First";
703            case SHARE: return "Share";
704            case LAST: return "Last";
705            case COLLATE: return "Collate";
706            case NULL: return null;
707            default: return "?";
708          }
709        }
710    }
711
712  public static class StructureMapTargetListModeEnumFactory implements EnumFactory<StructureMapTargetListMode> {
713    public StructureMapTargetListMode fromCode(String codeString) throws IllegalArgumentException {
714      if (codeString == null || "".equals(codeString))
715            if (codeString == null || "".equals(codeString))
716                return null;
717        if ("first".equals(codeString))
718          return StructureMapTargetListMode.FIRST;
719        if ("share".equals(codeString))
720          return StructureMapTargetListMode.SHARE;
721        if ("last".equals(codeString))
722          return StructureMapTargetListMode.LAST;
723        if ("collate".equals(codeString))
724          return StructureMapTargetListMode.COLLATE;
725        throw new IllegalArgumentException("Unknown StructureMapTargetListMode code '"+codeString+"'");
726        }
727        public Enumeration<StructureMapTargetListMode> fromType(Base code) throws FHIRException {
728          if (code == null)
729            return null;
730          if (code.isEmpty())
731            return new Enumeration<StructureMapTargetListMode>(this);
732          String codeString = ((PrimitiveType) code).asStringValue();
733          if (codeString == null || "".equals(codeString))
734            return null;
735        if ("first".equals(codeString))
736          return new Enumeration<StructureMapTargetListMode>(this, StructureMapTargetListMode.FIRST);
737        if ("share".equals(codeString))
738          return new Enumeration<StructureMapTargetListMode>(this, StructureMapTargetListMode.SHARE);
739        if ("last".equals(codeString))
740          return new Enumeration<StructureMapTargetListMode>(this, StructureMapTargetListMode.LAST);
741        if ("collate".equals(codeString))
742          return new Enumeration<StructureMapTargetListMode>(this, StructureMapTargetListMode.COLLATE);
743        throw new FHIRException("Unknown StructureMapTargetListMode code '"+codeString+"'");
744        }
745    public String toCode(StructureMapTargetListMode code) {
746      if (code == StructureMapTargetListMode.FIRST)
747        return "first";
748      if (code == StructureMapTargetListMode.SHARE)
749        return "share";
750      if (code == StructureMapTargetListMode.LAST)
751        return "last";
752      if (code == StructureMapTargetListMode.COLLATE)
753        return "collate";
754      return "?";
755      }
756    public String toSystem(StructureMapTargetListMode code) {
757      return code.getSystem();
758      }
759    }
760
761    public enum StructureMapTransform {
762        /**
763         * create(type : string) - type is passed through to the application on the standard API, and must be known by it.
764         */
765        CREATE, 
766        /**
767         * copy(source).
768         */
769        COPY, 
770        /**
771         * truncate(source, length) - source must be stringy type.
772         */
773        TRUNCATE, 
774        /**
775         * escape(source, fmt1, fmt2) - change source from one kind of escaping to another (plain, java, xml, json). note that this is for when the string itself is escaped.
776         */
777        ESCAPE, 
778        /**
779         * cast(source, type?) - case source from one type to another. target type can be left as implicit if there is one and only one target type known.
780         */
781        CAST, 
782        /**
783         * append(source...) - source is element or string.
784         */
785        APPEND, 
786        /**
787         * translate(source, uri_of_map) - use the translate operation.
788         */
789        TRANSLATE, 
790        /**
791         * reference(source : object) - return a string that references the provided tree properly.
792         */
793        REFERENCE, 
794        /**
795         * Perform a date operation. *Parameters to be documented*.
796         */
797        DATEOP, 
798        /**
799         * Generate a random UUID (in lowercase). No Parameters.
800         */
801        UUID, 
802        /**
803         * Return the appropriate string to put in a reference that refers to the resource provided as a parameter.
804         */
805        POINTER, 
806        /**
807         * Execute the supplied FHIRPath expression and use the value returned by that.
808         */
809        EVALUATE, 
810        /**
811         * Create a CodeableConcept. Parameters = (text) or (system. Code[, display]).
812         */
813        CC, 
814        /**
815         * Create a Coding. Parameters = (system. Code[, display]).
816         */
817        C, 
818        /**
819         * Create a quantity. Parameters = (text) or (value, unit, [system, code]) where text is the natural representation e.g. [comparator]value[space]unit.
820         */
821        QTY, 
822        /**
823         * Create an identifier. Parameters = (system, value[, type]) where type is a code from the identifier type value set.
824         */
825        ID, 
826        /**
827         * Create a contact details. Parameters = (value) or (system, value). If no system is provided, the system should be inferred from the content of the value.
828         */
829        CP, 
830        /**
831         * added to help the parsers with the generic types
832         */
833        NULL;
834        public static StructureMapTransform fromCode(String codeString) throws FHIRException {
835            if (codeString == null || "".equals(codeString))
836                return null;
837        if ("create".equals(codeString))
838          return CREATE;
839        if ("copy".equals(codeString))
840          return COPY;
841        if ("truncate".equals(codeString))
842          return TRUNCATE;
843        if ("escape".equals(codeString))
844          return ESCAPE;
845        if ("cast".equals(codeString))
846          return CAST;
847        if ("append".equals(codeString))
848          return APPEND;
849        if ("translate".equals(codeString))
850          return TRANSLATE;
851        if ("reference".equals(codeString))
852          return REFERENCE;
853        if ("dateOp".equals(codeString))
854          return DATEOP;
855        if ("uuid".equals(codeString))
856          return UUID;
857        if ("pointer".equals(codeString))
858          return POINTER;
859        if ("evaluate".equals(codeString))
860          return EVALUATE;
861        if ("cc".equals(codeString))
862          return CC;
863        if ("c".equals(codeString))
864          return C;
865        if ("qty".equals(codeString))
866          return QTY;
867        if ("id".equals(codeString))
868          return ID;
869        if ("cp".equals(codeString))
870          return CP;
871        if (Configuration.isAcceptInvalidEnums())
872          return null;
873        else
874          throw new FHIRException("Unknown StructureMapTransform code '"+codeString+"'");
875        }
876        public String toCode() {
877          switch (this) {
878            case CREATE: return "create";
879            case COPY: return "copy";
880            case TRUNCATE: return "truncate";
881            case ESCAPE: return "escape";
882            case CAST: return "cast";
883            case APPEND: return "append";
884            case TRANSLATE: return "translate";
885            case REFERENCE: return "reference";
886            case DATEOP: return "dateOp";
887            case UUID: return "uuid";
888            case POINTER: return "pointer";
889            case EVALUATE: return "evaluate";
890            case CC: return "cc";
891            case C: return "c";
892            case QTY: return "qty";
893            case ID: return "id";
894            case CP: return "cp";
895            case NULL: return null;
896            default: return "?";
897          }
898        }
899        public String getSystem() {
900          switch (this) {
901            case CREATE: return "http://hl7.org/fhir/map-transform";
902            case COPY: return "http://hl7.org/fhir/map-transform";
903            case TRUNCATE: return "http://hl7.org/fhir/map-transform";
904            case ESCAPE: return "http://hl7.org/fhir/map-transform";
905            case CAST: return "http://hl7.org/fhir/map-transform";
906            case APPEND: return "http://hl7.org/fhir/map-transform";
907            case TRANSLATE: return "http://hl7.org/fhir/map-transform";
908            case REFERENCE: return "http://hl7.org/fhir/map-transform";
909            case DATEOP: return "http://hl7.org/fhir/map-transform";
910            case UUID: return "http://hl7.org/fhir/map-transform";
911            case POINTER: return "http://hl7.org/fhir/map-transform";
912            case EVALUATE: return "http://hl7.org/fhir/map-transform";
913            case CC: return "http://hl7.org/fhir/map-transform";
914            case C: return "http://hl7.org/fhir/map-transform";
915            case QTY: return "http://hl7.org/fhir/map-transform";
916            case ID: return "http://hl7.org/fhir/map-transform";
917            case CP: return "http://hl7.org/fhir/map-transform";
918            case NULL: return null;
919            default: return "?";
920          }
921        }
922        public String getDefinition() {
923          switch (this) {
924            case CREATE: return "create(type : string) - type is passed through to the application on the standard API, and must be known by it.";
925            case COPY: return "copy(source).";
926            case TRUNCATE: return "truncate(source, length) - source must be stringy type.";
927            case ESCAPE: return "escape(source, fmt1, fmt2) - change source from one kind of escaping to another (plain, java, xml, json). note that this is for when the string itself is escaped.";
928            case CAST: return "cast(source, type?) - case source from one type to another. target type can be left as implicit if there is one and only one target type known.";
929            case APPEND: return "append(source...) - source is element or string.";
930            case TRANSLATE: return "translate(source, uri_of_map) - use the translate operation.";
931            case REFERENCE: return "reference(source : object) - return a string that references the provided tree properly.";
932            case DATEOP: return "Perform a date operation. *Parameters to be documented*.";
933            case UUID: return "Generate a random UUID (in lowercase). No Parameters.";
934            case POINTER: return "Return the appropriate string to put in a reference that refers to the resource provided as a parameter.";
935            case EVALUATE: return "Execute the supplied FHIRPath expression and use the value returned by that.";
936            case CC: return "Create a CodeableConcept. Parameters = (text) or (system. Code[, display]).";
937            case C: return "Create a Coding. Parameters = (system. Code[, display]).";
938            case QTY: return "Create a quantity. Parameters = (text) or (value, unit, [system, code]) where text is the natural representation e.g. [comparator]value[space]unit.";
939            case ID: return "Create an identifier. Parameters = (system, value[, type]) where type is a code from the identifier type value set.";
940            case CP: return "Create a contact details. Parameters = (value) or (system, value). If no system is provided, the system should be inferred from the content of the value.";
941            case NULL: return null;
942            default: return "?";
943          }
944        }
945        public String getDisplay() {
946          switch (this) {
947            case CREATE: return "create";
948            case COPY: return "copy";
949            case TRUNCATE: return "truncate";
950            case ESCAPE: return "escape";
951            case CAST: return "cast";
952            case APPEND: return "append";
953            case TRANSLATE: return "translate";
954            case REFERENCE: return "reference";
955            case DATEOP: return "dateOp";
956            case UUID: return "uuid";
957            case POINTER: return "pointer";
958            case EVALUATE: return "evaluate";
959            case CC: return "cc";
960            case C: return "c";
961            case QTY: return "qty";
962            case ID: return "id";
963            case CP: return "cp";
964            case NULL: return null;
965            default: return "?";
966          }
967        }
968    }
969
970  public static class StructureMapTransformEnumFactory implements EnumFactory<StructureMapTransform> {
971    public StructureMapTransform fromCode(String codeString) throws IllegalArgumentException {
972      if (codeString == null || "".equals(codeString))
973            if (codeString == null || "".equals(codeString))
974                return null;
975        if ("create".equals(codeString))
976          return StructureMapTransform.CREATE;
977        if ("copy".equals(codeString))
978          return StructureMapTransform.COPY;
979        if ("truncate".equals(codeString))
980          return StructureMapTransform.TRUNCATE;
981        if ("escape".equals(codeString))
982          return StructureMapTransform.ESCAPE;
983        if ("cast".equals(codeString))
984          return StructureMapTransform.CAST;
985        if ("append".equals(codeString))
986          return StructureMapTransform.APPEND;
987        if ("translate".equals(codeString))
988          return StructureMapTransform.TRANSLATE;
989        if ("reference".equals(codeString))
990          return StructureMapTransform.REFERENCE;
991        if ("dateOp".equals(codeString))
992          return StructureMapTransform.DATEOP;
993        if ("uuid".equals(codeString))
994          return StructureMapTransform.UUID;
995        if ("pointer".equals(codeString))
996          return StructureMapTransform.POINTER;
997        if ("evaluate".equals(codeString))
998          return StructureMapTransform.EVALUATE;
999        if ("cc".equals(codeString))
1000          return StructureMapTransform.CC;
1001        if ("c".equals(codeString))
1002          return StructureMapTransform.C;
1003        if ("qty".equals(codeString))
1004          return StructureMapTransform.QTY;
1005        if ("id".equals(codeString))
1006          return StructureMapTransform.ID;
1007        if ("cp".equals(codeString))
1008          return StructureMapTransform.CP;
1009        throw new IllegalArgumentException("Unknown StructureMapTransform code '"+codeString+"'");
1010        }
1011        public Enumeration<StructureMapTransform> fromType(Base code) throws FHIRException {
1012          if (code == null)
1013            return null;
1014          if (code.isEmpty())
1015            return new Enumeration<StructureMapTransform>(this);
1016          String codeString = ((PrimitiveType) code).asStringValue();
1017          if (codeString == null || "".equals(codeString))
1018            return null;
1019        if ("create".equals(codeString))
1020          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.CREATE);
1021        if ("copy".equals(codeString))
1022          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.COPY);
1023        if ("truncate".equals(codeString))
1024          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.TRUNCATE);
1025        if ("escape".equals(codeString))
1026          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.ESCAPE);
1027        if ("cast".equals(codeString))
1028          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.CAST);
1029        if ("append".equals(codeString))
1030          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.APPEND);
1031        if ("translate".equals(codeString))
1032          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.TRANSLATE);
1033        if ("reference".equals(codeString))
1034          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.REFERENCE);
1035        if ("dateOp".equals(codeString))
1036          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.DATEOP);
1037        if ("uuid".equals(codeString))
1038          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.UUID);
1039        if ("pointer".equals(codeString))
1040          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.POINTER);
1041        if ("evaluate".equals(codeString))
1042          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.EVALUATE);
1043        if ("cc".equals(codeString))
1044          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.CC);
1045        if ("c".equals(codeString))
1046          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.C);
1047        if ("qty".equals(codeString))
1048          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.QTY);
1049        if ("id".equals(codeString))
1050          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.ID);
1051        if ("cp".equals(codeString))
1052          return new Enumeration<StructureMapTransform>(this, StructureMapTransform.CP);
1053        throw new FHIRException("Unknown StructureMapTransform code '"+codeString+"'");
1054        }
1055    public String toCode(StructureMapTransform code) {
1056      if (code == StructureMapTransform.CREATE)
1057        return "create";
1058      if (code == StructureMapTransform.COPY)
1059        return "copy";
1060      if (code == StructureMapTransform.TRUNCATE)
1061        return "truncate";
1062      if (code == StructureMapTransform.ESCAPE)
1063        return "escape";
1064      if (code == StructureMapTransform.CAST)
1065        return "cast";
1066      if (code == StructureMapTransform.APPEND)
1067        return "append";
1068      if (code == StructureMapTransform.TRANSLATE)
1069        return "translate";
1070      if (code == StructureMapTransform.REFERENCE)
1071        return "reference";
1072      if (code == StructureMapTransform.DATEOP)
1073        return "dateOp";
1074      if (code == StructureMapTransform.UUID)
1075        return "uuid";
1076      if (code == StructureMapTransform.POINTER)
1077        return "pointer";
1078      if (code == StructureMapTransform.EVALUATE)
1079        return "evaluate";
1080      if (code == StructureMapTransform.CC)
1081        return "cc";
1082      if (code == StructureMapTransform.C)
1083        return "c";
1084      if (code == StructureMapTransform.QTY)
1085        return "qty";
1086      if (code == StructureMapTransform.ID)
1087        return "id";
1088      if (code == StructureMapTransform.CP)
1089        return "cp";
1090      return "?";
1091      }
1092    public String toSystem(StructureMapTransform code) {
1093      return code.getSystem();
1094      }
1095    }
1096
1097    @Block()
1098    public static class StructureMapStructureComponent extends BackboneElement implements IBaseBackboneElement {
1099        /**
1100         * The canonical reference to the structure.
1101         */
1102        @Child(name = "url", type = {CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=true)
1103        @Description(shortDefinition="Canonical reference to structure definition", formalDefinition="The canonical reference to the structure." )
1104        protected CanonicalType url;
1105
1106        /**
1107         * How the referenced structure is used in this mapping.
1108         */
1109        @Child(name = "mode", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1110        @Description(shortDefinition="source | queried | target | produced", formalDefinition="How the referenced structure is used in this mapping." )
1111        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/map-model-mode")
1112        protected Enumeration<StructureMapModelMode> mode;
1113
1114        /**
1115         * The name used for this type in the map.
1116         */
1117        @Child(name = "alias", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
1118        @Description(shortDefinition="Name for type in this map", formalDefinition="The name used for this type in the map." )
1119        protected StringType alias;
1120
1121        /**
1122         * Documentation that describes how the structure is used in the mapping.
1123         */
1124        @Child(name = "documentation", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1125        @Description(shortDefinition="Documentation on use of structure", formalDefinition="Documentation that describes how the structure is used in the mapping." )
1126        protected StringType documentation;
1127
1128        private static final long serialVersionUID = 364750586L;
1129
1130    /**
1131     * Constructor
1132     */
1133      public StructureMapStructureComponent() {
1134        super();
1135      }
1136
1137    /**
1138     * Constructor
1139     */
1140      public StructureMapStructureComponent(String url, StructureMapModelMode mode) {
1141        super();
1142        this.setUrl(url);
1143        this.setMode(mode);
1144      }
1145
1146        /**
1147         * @return {@link #url} (The canonical reference to the structure.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1148         */
1149        public CanonicalType getUrlElement() { 
1150          if (this.url == null)
1151            if (Configuration.errorOnAutoCreate())
1152              throw new Error("Attempt to auto-create StructureMapStructureComponent.url");
1153            else if (Configuration.doAutoCreate())
1154              this.url = new CanonicalType(); // bb
1155          return this.url;
1156        }
1157
1158        public boolean hasUrlElement() { 
1159          return this.url != null && !this.url.isEmpty();
1160        }
1161
1162        public boolean hasUrl() { 
1163          return this.url != null && !this.url.isEmpty();
1164        }
1165
1166        /**
1167         * @param value {@link #url} (The canonical reference to the structure.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1168         */
1169        public StructureMapStructureComponent setUrlElement(CanonicalType value) { 
1170          this.url = value;
1171          return this;
1172        }
1173
1174        /**
1175         * @return The canonical reference to the structure.
1176         */
1177        public String getUrl() { 
1178          return this.url == null ? null : this.url.getValue();
1179        }
1180
1181        /**
1182         * @param value The canonical reference to the structure.
1183         */
1184        public StructureMapStructureComponent setUrl(String value) { 
1185            if (this.url == null)
1186              this.url = new CanonicalType();
1187            this.url.setValue(value);
1188          return this;
1189        }
1190
1191        /**
1192         * @return {@link #mode} (How the referenced structure is used in this mapping.). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
1193         */
1194        public Enumeration<StructureMapModelMode> getModeElement() { 
1195          if (this.mode == null)
1196            if (Configuration.errorOnAutoCreate())
1197              throw new Error("Attempt to auto-create StructureMapStructureComponent.mode");
1198            else if (Configuration.doAutoCreate())
1199              this.mode = new Enumeration<StructureMapModelMode>(new StructureMapModelModeEnumFactory()); // bb
1200          return this.mode;
1201        }
1202
1203        public boolean hasModeElement() { 
1204          return this.mode != null && !this.mode.isEmpty();
1205        }
1206
1207        public boolean hasMode() { 
1208          return this.mode != null && !this.mode.isEmpty();
1209        }
1210
1211        /**
1212         * @param value {@link #mode} (How the referenced structure is used in this mapping.). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
1213         */
1214        public StructureMapStructureComponent setModeElement(Enumeration<StructureMapModelMode> value) { 
1215          this.mode = value;
1216          return this;
1217        }
1218
1219        /**
1220         * @return How the referenced structure is used in this mapping.
1221         */
1222        public StructureMapModelMode getMode() { 
1223          return this.mode == null ? null : this.mode.getValue();
1224        }
1225
1226        /**
1227         * @param value How the referenced structure is used in this mapping.
1228         */
1229        public StructureMapStructureComponent setMode(StructureMapModelMode value) { 
1230            if (this.mode == null)
1231              this.mode = new Enumeration<StructureMapModelMode>(new StructureMapModelModeEnumFactory());
1232            this.mode.setValue(value);
1233          return this;
1234        }
1235
1236        /**
1237         * @return {@link #alias} (The name used for this type in the map.). This is the underlying object with id, value and extensions. The accessor "getAlias" gives direct access to the value
1238         */
1239        public StringType getAliasElement() { 
1240          if (this.alias == null)
1241            if (Configuration.errorOnAutoCreate())
1242              throw new Error("Attempt to auto-create StructureMapStructureComponent.alias");
1243            else if (Configuration.doAutoCreate())
1244              this.alias = new StringType(); // bb
1245          return this.alias;
1246        }
1247
1248        public boolean hasAliasElement() { 
1249          return this.alias != null && !this.alias.isEmpty();
1250        }
1251
1252        public boolean hasAlias() { 
1253          return this.alias != null && !this.alias.isEmpty();
1254        }
1255
1256        /**
1257         * @param value {@link #alias} (The name used for this type in the map.). This is the underlying object with id, value and extensions. The accessor "getAlias" gives direct access to the value
1258         */
1259        public StructureMapStructureComponent setAliasElement(StringType value) { 
1260          this.alias = value;
1261          return this;
1262        }
1263
1264        /**
1265         * @return The name used for this type in the map.
1266         */
1267        public String getAlias() { 
1268          return this.alias == null ? null : this.alias.getValue();
1269        }
1270
1271        /**
1272         * @param value The name used for this type in the map.
1273         */
1274        public StructureMapStructureComponent setAlias(String value) { 
1275          if (Utilities.noString(value))
1276            this.alias = null;
1277          else {
1278            if (this.alias == null)
1279              this.alias = new StringType();
1280            this.alias.setValue(value);
1281          }
1282          return this;
1283        }
1284
1285        /**
1286         * @return {@link #documentation} (Documentation that describes how the structure is used in the mapping.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
1287         */
1288        public StringType getDocumentationElement() { 
1289          if (this.documentation == null)
1290            if (Configuration.errorOnAutoCreate())
1291              throw new Error("Attempt to auto-create StructureMapStructureComponent.documentation");
1292            else if (Configuration.doAutoCreate())
1293              this.documentation = new StringType(); // bb
1294          return this.documentation;
1295        }
1296
1297        public boolean hasDocumentationElement() { 
1298          return this.documentation != null && !this.documentation.isEmpty();
1299        }
1300
1301        public boolean hasDocumentation() { 
1302          return this.documentation != null && !this.documentation.isEmpty();
1303        }
1304
1305        /**
1306         * @param value {@link #documentation} (Documentation that describes how the structure is used in the mapping.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
1307         */
1308        public StructureMapStructureComponent setDocumentationElement(StringType value) { 
1309          this.documentation = value;
1310          return this;
1311        }
1312
1313        /**
1314         * @return Documentation that describes how the structure is used in the mapping.
1315         */
1316        public String getDocumentation() { 
1317          return this.documentation == null ? null : this.documentation.getValue();
1318        }
1319
1320        /**
1321         * @param value Documentation that describes how the structure is used in the mapping.
1322         */
1323        public StructureMapStructureComponent setDocumentation(String value) { 
1324          if (Utilities.noString(value))
1325            this.documentation = null;
1326          else {
1327            if (this.documentation == null)
1328              this.documentation = new StringType();
1329            this.documentation.setValue(value);
1330          }
1331          return this;
1332        }
1333
1334        protected void listChildren(List<Property> children) {
1335          super.listChildren(children);
1336          children.add(new Property("url", "canonical(StructureDefinition)", "The canonical reference to the structure.", 0, 1, url));
1337          children.add(new Property("mode", "code", "How the referenced structure is used in this mapping.", 0, 1, mode));
1338          children.add(new Property("alias", "string", "The name used for this type in the map.", 0, 1, alias));
1339          children.add(new Property("documentation", "string", "Documentation that describes how the structure is used in the mapping.", 0, 1, documentation));
1340        }
1341
1342        @Override
1343        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1344          switch (_hash) {
1345          case 116079: /*url*/  return new Property("url", "canonical(StructureDefinition)", "The canonical reference to the structure.", 0, 1, url);
1346          case 3357091: /*mode*/  return new Property("mode", "code", "How the referenced structure is used in this mapping.", 0, 1, mode);
1347          case 92902992: /*alias*/  return new Property("alias", "string", "The name used for this type in the map.", 0, 1, alias);
1348          case 1587405498: /*documentation*/  return new Property("documentation", "string", "Documentation that describes how the structure is used in the mapping.", 0, 1, documentation);
1349          default: return super.getNamedProperty(_hash, _name, _checkValid);
1350          }
1351
1352        }
1353
1354      @Override
1355      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1356        switch (hash) {
1357        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // CanonicalType
1358        case 3357091: /*mode*/ return this.mode == null ? new Base[0] : new Base[] {this.mode}; // Enumeration<StructureMapModelMode>
1359        case 92902992: /*alias*/ return this.alias == null ? new Base[0] : new Base[] {this.alias}; // StringType
1360        case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // StringType
1361        default: return super.getProperty(hash, name, checkValid);
1362        }
1363
1364      }
1365
1366      @Override
1367      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1368        switch (hash) {
1369        case 116079: // url
1370          this.url = TypeConvertor.castToCanonical(value); // CanonicalType
1371          return value;
1372        case 3357091: // mode
1373          value = new StructureMapModelModeEnumFactory().fromType(TypeConvertor.castToCode(value));
1374          this.mode = (Enumeration) value; // Enumeration<StructureMapModelMode>
1375          return value;
1376        case 92902992: // alias
1377          this.alias = TypeConvertor.castToString(value); // StringType
1378          return value;
1379        case 1587405498: // documentation
1380          this.documentation = TypeConvertor.castToString(value); // StringType
1381          return value;
1382        default: return super.setProperty(hash, name, value);
1383        }
1384
1385      }
1386
1387      @Override
1388      public Base setProperty(String name, Base value) throws FHIRException {
1389        if (name.equals("url")) {
1390          this.url = TypeConvertor.castToCanonical(value); // CanonicalType
1391        } else if (name.equals("mode")) {
1392          value = new StructureMapModelModeEnumFactory().fromType(TypeConvertor.castToCode(value));
1393          this.mode = (Enumeration) value; // Enumeration<StructureMapModelMode>
1394        } else if (name.equals("alias")) {
1395          this.alias = TypeConvertor.castToString(value); // StringType
1396        } else if (name.equals("documentation")) {
1397          this.documentation = TypeConvertor.castToString(value); // StringType
1398        } else
1399          return super.setProperty(name, value);
1400        return value;
1401      }
1402
1403      @Override
1404      public Base makeProperty(int hash, String name) throws FHIRException {
1405        switch (hash) {
1406        case 116079:  return getUrlElement();
1407        case 3357091:  return getModeElement();
1408        case 92902992:  return getAliasElement();
1409        case 1587405498:  return getDocumentationElement();
1410        default: return super.makeProperty(hash, name);
1411        }
1412
1413      }
1414
1415      @Override
1416      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1417        switch (hash) {
1418        case 116079: /*url*/ return new String[] {"canonical"};
1419        case 3357091: /*mode*/ return new String[] {"code"};
1420        case 92902992: /*alias*/ return new String[] {"string"};
1421        case 1587405498: /*documentation*/ return new String[] {"string"};
1422        default: return super.getTypesForProperty(hash, name);
1423        }
1424
1425      }
1426
1427      @Override
1428      public Base addChild(String name) throws FHIRException {
1429        if (name.equals("url")) {
1430          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.structure.url");
1431        }
1432        else if (name.equals("mode")) {
1433          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.structure.mode");
1434        }
1435        else if (name.equals("alias")) {
1436          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.structure.alias");
1437        }
1438        else if (name.equals("documentation")) {
1439          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.structure.documentation");
1440        }
1441        else
1442          return super.addChild(name);
1443      }
1444
1445      public StructureMapStructureComponent copy() {
1446        StructureMapStructureComponent dst = new StructureMapStructureComponent();
1447        copyValues(dst);
1448        return dst;
1449      }
1450
1451      public void copyValues(StructureMapStructureComponent dst) {
1452        super.copyValues(dst);
1453        dst.url = url == null ? null : url.copy();
1454        dst.mode = mode == null ? null : mode.copy();
1455        dst.alias = alias == null ? null : alias.copy();
1456        dst.documentation = documentation == null ? null : documentation.copy();
1457      }
1458
1459      @Override
1460      public boolean equalsDeep(Base other_) {
1461        if (!super.equalsDeep(other_))
1462          return false;
1463        if (!(other_ instanceof StructureMapStructureComponent))
1464          return false;
1465        StructureMapStructureComponent o = (StructureMapStructureComponent) other_;
1466        return compareDeep(url, o.url, true) && compareDeep(mode, o.mode, true) && compareDeep(alias, o.alias, true)
1467           && compareDeep(documentation, o.documentation, true);
1468      }
1469
1470      @Override
1471      public boolean equalsShallow(Base other_) {
1472        if (!super.equalsShallow(other_))
1473          return false;
1474        if (!(other_ instanceof StructureMapStructureComponent))
1475          return false;
1476        StructureMapStructureComponent o = (StructureMapStructureComponent) other_;
1477        return compareValues(url, o.url, true) && compareValues(mode, o.mode, true) && compareValues(alias, o.alias, true)
1478           && compareValues(documentation, o.documentation, true);
1479      }
1480
1481      public boolean isEmpty() {
1482        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, mode, alias, documentation
1483          );
1484      }
1485
1486  public String fhirType() {
1487    return "StructureMap.structure";
1488
1489  }
1490
1491  }
1492
1493    @Block()
1494    public static class StructureMapGroupComponent extends BackboneElement implements IBaseBackboneElement {
1495        /**
1496         * A unique name for the group for the convenience of human readers.
1497         */
1498        @Child(name = "name", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
1499        @Description(shortDefinition="Human-readable label", formalDefinition="A unique name for the group for the convenience of human readers." )
1500        protected IdType name;
1501
1502        /**
1503         * Another group that this group adds rules to.
1504         */
1505        @Child(name = "extends", type = {IdType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1506        @Description(shortDefinition="Another group that this group adds rules to", formalDefinition="Another group that this group adds rules to." )
1507        protected IdType extends_;
1508
1509        /**
1510         * If this is the default rule set to apply for the source type or this combination of types.
1511         */
1512        @Child(name = "typeMode", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1513        @Description(shortDefinition="none | types | type-and-types", formalDefinition="If this is the default rule set to apply for the source type or this combination of types." )
1514        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/map-group-type-mode")
1515        protected Enumeration<StructureMapGroupTypeMode> typeMode;
1516
1517        /**
1518         * Additional supporting documentation that explains the purpose of the group and the types of mappings within it.
1519         */
1520        @Child(name = "documentation", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1521        @Description(shortDefinition="Additional description/explanation for group", formalDefinition="Additional supporting documentation that explains the purpose of the group and the types of mappings within it." )
1522        protected StringType documentation;
1523
1524        /**
1525         * A name assigned to an instance of data. The instance must be provided when the mapping is invoked.
1526         */
1527        @Child(name = "input", type = {}, order=5, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1528        @Description(shortDefinition="Named instance provided when invoking the map", formalDefinition="A name assigned to an instance of data. The instance must be provided when the mapping is invoked." )
1529        protected List<StructureMapGroupInputComponent> input;
1530
1531        /**
1532         * Transform Rule from source to target.
1533         */
1534        @Child(name = "rule", type = {}, order=6, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1535        @Description(shortDefinition="Transform Rule from source to target", formalDefinition="Transform Rule from source to target." )
1536        protected List<StructureMapGroupRuleComponent> rule;
1537
1538        private static final long serialVersionUID = -1474595081L;
1539
1540    /**
1541     * Constructor
1542     */
1543      public StructureMapGroupComponent() {
1544        super();
1545      }
1546
1547    /**
1548     * Constructor
1549     */
1550      public StructureMapGroupComponent(String name, StructureMapGroupTypeMode typeMode, StructureMapGroupInputComponent input, StructureMapGroupRuleComponent rule) {
1551        super();
1552        this.setName(name);
1553        this.setTypeMode(typeMode);
1554        this.addInput(input);
1555        this.addRule(rule);
1556      }
1557
1558        /**
1559         * @return {@link #name} (A unique name for the group for the convenience of human readers.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1560         */
1561        public IdType getNameElement() { 
1562          if (this.name == null)
1563            if (Configuration.errorOnAutoCreate())
1564              throw new Error("Attempt to auto-create StructureMapGroupComponent.name");
1565            else if (Configuration.doAutoCreate())
1566              this.name = new IdType(); // bb
1567          return this.name;
1568        }
1569
1570        public boolean hasNameElement() { 
1571          return this.name != null && !this.name.isEmpty();
1572        }
1573
1574        public boolean hasName() { 
1575          return this.name != null && !this.name.isEmpty();
1576        }
1577
1578        /**
1579         * @param value {@link #name} (A unique name for the group for the convenience of human readers.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1580         */
1581        public StructureMapGroupComponent setNameElement(IdType value) { 
1582          this.name = value;
1583          return this;
1584        }
1585
1586        /**
1587         * @return A unique name for the group for the convenience of human readers.
1588         */
1589        public String getName() { 
1590          return this.name == null ? null : this.name.getValue();
1591        }
1592
1593        /**
1594         * @param value A unique name for the group for the convenience of human readers.
1595         */
1596        public StructureMapGroupComponent setName(String value) { 
1597            if (this.name == null)
1598              this.name = new IdType();
1599            this.name.setValue(value);
1600          return this;
1601        }
1602
1603        /**
1604         * @return {@link #extends_} (Another group that this group adds rules to.). This is the underlying object with id, value and extensions. The accessor "getExtends" gives direct access to the value
1605         */
1606        public IdType getExtendsElement() { 
1607          if (this.extends_ == null)
1608            if (Configuration.errorOnAutoCreate())
1609              throw new Error("Attempt to auto-create StructureMapGroupComponent.extends_");
1610            else if (Configuration.doAutoCreate())
1611              this.extends_ = new IdType(); // bb
1612          return this.extends_;
1613        }
1614
1615        public boolean hasExtendsElement() { 
1616          return this.extends_ != null && !this.extends_.isEmpty();
1617        }
1618
1619        public boolean hasExtends() { 
1620          return this.extends_ != null && !this.extends_.isEmpty();
1621        }
1622
1623        /**
1624         * @param value {@link #extends_} (Another group that this group adds rules to.). This is the underlying object with id, value and extensions. The accessor "getExtends" gives direct access to the value
1625         */
1626        public StructureMapGroupComponent setExtendsElement(IdType value) { 
1627          this.extends_ = value;
1628          return this;
1629        }
1630
1631        /**
1632         * @return Another group that this group adds rules to.
1633         */
1634        public String getExtends() { 
1635          return this.extends_ == null ? null : this.extends_.getValue();
1636        }
1637
1638        /**
1639         * @param value Another group that this group adds rules to.
1640         */
1641        public StructureMapGroupComponent setExtends(String value) { 
1642          if (Utilities.noString(value))
1643            this.extends_ = null;
1644          else {
1645            if (this.extends_ == null)
1646              this.extends_ = new IdType();
1647            this.extends_.setValue(value);
1648          }
1649          return this;
1650        }
1651
1652        /**
1653         * @return {@link #typeMode} (If this is the default rule set to apply for the source type or this combination of types.). This is the underlying object with id, value and extensions. The accessor "getTypeMode" gives direct access to the value
1654         */
1655        public Enumeration<StructureMapGroupTypeMode> getTypeModeElement() { 
1656          if (this.typeMode == null)
1657            if (Configuration.errorOnAutoCreate())
1658              throw new Error("Attempt to auto-create StructureMapGroupComponent.typeMode");
1659            else if (Configuration.doAutoCreate())
1660              this.typeMode = new Enumeration<StructureMapGroupTypeMode>(new StructureMapGroupTypeModeEnumFactory()); // bb
1661          return this.typeMode;
1662        }
1663
1664        public boolean hasTypeModeElement() { 
1665          return this.typeMode != null && !this.typeMode.isEmpty();
1666        }
1667
1668        public boolean hasTypeMode() { 
1669          return this.typeMode != null && !this.typeMode.isEmpty();
1670        }
1671
1672        /**
1673         * @param value {@link #typeMode} (If this is the default rule set to apply for the source type or this combination of types.). This is the underlying object with id, value and extensions. The accessor "getTypeMode" gives direct access to the value
1674         */
1675        public StructureMapGroupComponent setTypeModeElement(Enumeration<StructureMapGroupTypeMode> value) { 
1676          this.typeMode = value;
1677          return this;
1678        }
1679
1680        /**
1681         * @return If this is the default rule set to apply for the source type or this combination of types.
1682         */
1683        public StructureMapGroupTypeMode getTypeMode() { 
1684          return this.typeMode == null ? null : this.typeMode.getValue();
1685        }
1686
1687        /**
1688         * @param value If this is the default rule set to apply for the source type or this combination of types.
1689         */
1690        public StructureMapGroupComponent setTypeMode(StructureMapGroupTypeMode value) { 
1691            if (this.typeMode == null)
1692              this.typeMode = new Enumeration<StructureMapGroupTypeMode>(new StructureMapGroupTypeModeEnumFactory());
1693            this.typeMode.setValue(value);
1694          return this;
1695        }
1696
1697        /**
1698         * @return {@link #documentation} (Additional supporting documentation that explains the purpose of the group and the types of mappings within it.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
1699         */
1700        public StringType getDocumentationElement() { 
1701          if (this.documentation == null)
1702            if (Configuration.errorOnAutoCreate())
1703              throw new Error("Attempt to auto-create StructureMapGroupComponent.documentation");
1704            else if (Configuration.doAutoCreate())
1705              this.documentation = new StringType(); // bb
1706          return this.documentation;
1707        }
1708
1709        public boolean hasDocumentationElement() { 
1710          return this.documentation != null && !this.documentation.isEmpty();
1711        }
1712
1713        public boolean hasDocumentation() { 
1714          return this.documentation != null && !this.documentation.isEmpty();
1715        }
1716
1717        /**
1718         * @param value {@link #documentation} (Additional supporting documentation that explains the purpose of the group and the types of mappings within it.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
1719         */
1720        public StructureMapGroupComponent setDocumentationElement(StringType value) { 
1721          this.documentation = value;
1722          return this;
1723        }
1724
1725        /**
1726         * @return Additional supporting documentation that explains the purpose of the group and the types of mappings within it.
1727         */
1728        public String getDocumentation() { 
1729          return this.documentation == null ? null : this.documentation.getValue();
1730        }
1731
1732        /**
1733         * @param value Additional supporting documentation that explains the purpose of the group and the types of mappings within it.
1734         */
1735        public StructureMapGroupComponent setDocumentation(String value) { 
1736          if (Utilities.noString(value))
1737            this.documentation = null;
1738          else {
1739            if (this.documentation == null)
1740              this.documentation = new StringType();
1741            this.documentation.setValue(value);
1742          }
1743          return this;
1744        }
1745
1746        /**
1747         * @return {@link #input} (A name assigned to an instance of data. The instance must be provided when the mapping is invoked.)
1748         */
1749        public List<StructureMapGroupInputComponent> getInput() { 
1750          if (this.input == null)
1751            this.input = new ArrayList<StructureMapGroupInputComponent>();
1752          return this.input;
1753        }
1754
1755        /**
1756         * @return Returns a reference to <code>this</code> for easy method chaining
1757         */
1758        public StructureMapGroupComponent setInput(List<StructureMapGroupInputComponent> theInput) { 
1759          this.input = theInput;
1760          return this;
1761        }
1762
1763        public boolean hasInput() { 
1764          if (this.input == null)
1765            return false;
1766          for (StructureMapGroupInputComponent item : this.input)
1767            if (!item.isEmpty())
1768              return true;
1769          return false;
1770        }
1771
1772        public StructureMapGroupInputComponent addInput() { //3
1773          StructureMapGroupInputComponent t = new StructureMapGroupInputComponent();
1774          if (this.input == null)
1775            this.input = new ArrayList<StructureMapGroupInputComponent>();
1776          this.input.add(t);
1777          return t;
1778        }
1779
1780        public StructureMapGroupComponent addInput(StructureMapGroupInputComponent t) { //3
1781          if (t == null)
1782            return this;
1783          if (this.input == null)
1784            this.input = new ArrayList<StructureMapGroupInputComponent>();
1785          this.input.add(t);
1786          return this;
1787        }
1788
1789        /**
1790         * @return The first repetition of repeating field {@link #input}, creating it if it does not already exist {3}
1791         */
1792        public StructureMapGroupInputComponent getInputFirstRep() { 
1793          if (getInput().isEmpty()) {
1794            addInput();
1795          }
1796          return getInput().get(0);
1797        }
1798
1799        /**
1800         * @return {@link #rule} (Transform Rule from source to target.)
1801         */
1802        public List<StructureMapGroupRuleComponent> getRule() { 
1803          if (this.rule == null)
1804            this.rule = new ArrayList<StructureMapGroupRuleComponent>();
1805          return this.rule;
1806        }
1807
1808        /**
1809         * @return Returns a reference to <code>this</code> for easy method chaining
1810         */
1811        public StructureMapGroupComponent setRule(List<StructureMapGroupRuleComponent> theRule) { 
1812          this.rule = theRule;
1813          return this;
1814        }
1815
1816        public boolean hasRule() { 
1817          if (this.rule == null)
1818            return false;
1819          for (StructureMapGroupRuleComponent item : this.rule)
1820            if (!item.isEmpty())
1821              return true;
1822          return false;
1823        }
1824
1825        public StructureMapGroupRuleComponent addRule() { //3
1826          StructureMapGroupRuleComponent t = new StructureMapGroupRuleComponent();
1827          if (this.rule == null)
1828            this.rule = new ArrayList<StructureMapGroupRuleComponent>();
1829          this.rule.add(t);
1830          return t;
1831        }
1832
1833        public StructureMapGroupComponent addRule(StructureMapGroupRuleComponent t) { //3
1834          if (t == null)
1835            return this;
1836          if (this.rule == null)
1837            this.rule = new ArrayList<StructureMapGroupRuleComponent>();
1838          this.rule.add(t);
1839          return this;
1840        }
1841
1842        /**
1843         * @return The first repetition of repeating field {@link #rule}, creating it if it does not already exist {3}
1844         */
1845        public StructureMapGroupRuleComponent getRuleFirstRep() { 
1846          if (getRule().isEmpty()) {
1847            addRule();
1848          }
1849          return getRule().get(0);
1850        }
1851
1852        protected void listChildren(List<Property> children) {
1853          super.listChildren(children);
1854          children.add(new Property("name", "id", "A unique name for the group for the convenience of human readers.", 0, 1, name));
1855          children.add(new Property("extends", "id", "Another group that this group adds rules to.", 0, 1, extends_));
1856          children.add(new Property("typeMode", "code", "If this is the default rule set to apply for the source type or this combination of types.", 0, 1, typeMode));
1857          children.add(new Property("documentation", "string", "Additional supporting documentation that explains the purpose of the group and the types of mappings within it.", 0, 1, documentation));
1858          children.add(new Property("input", "", "A name assigned to an instance of data. The instance must be provided when the mapping is invoked.", 0, java.lang.Integer.MAX_VALUE, input));
1859          children.add(new Property("rule", "", "Transform Rule from source to target.", 0, java.lang.Integer.MAX_VALUE, rule));
1860        }
1861
1862        @Override
1863        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1864          switch (_hash) {
1865          case 3373707: /*name*/  return new Property("name", "id", "A unique name for the group for the convenience of human readers.", 0, 1, name);
1866          case -1305664359: /*extends*/  return new Property("extends", "id", "Another group that this group adds rules to.", 0, 1, extends_);
1867          case -676524035: /*typeMode*/  return new Property("typeMode", "code", "If this is the default rule set to apply for the source type or this combination of types.", 0, 1, typeMode);
1868          case 1587405498: /*documentation*/  return new Property("documentation", "string", "Additional supporting documentation that explains the purpose of the group and the types of mappings within it.", 0, 1, documentation);
1869          case 100358090: /*input*/  return new Property("input", "", "A name assigned to an instance of data. The instance must be provided when the mapping is invoked.", 0, java.lang.Integer.MAX_VALUE, input);
1870          case 3512060: /*rule*/  return new Property("rule", "", "Transform Rule from source to target.", 0, java.lang.Integer.MAX_VALUE, rule);
1871          default: return super.getNamedProperty(_hash, _name, _checkValid);
1872          }
1873
1874        }
1875
1876      @Override
1877      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1878        switch (hash) {
1879        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // IdType
1880        case -1305664359: /*extends*/ return this.extends_ == null ? new Base[0] : new Base[] {this.extends_}; // IdType
1881        case -676524035: /*typeMode*/ return this.typeMode == null ? new Base[0] : new Base[] {this.typeMode}; // Enumeration<StructureMapGroupTypeMode>
1882        case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // StringType
1883        case 100358090: /*input*/ return this.input == null ? new Base[0] : this.input.toArray(new Base[this.input.size()]); // StructureMapGroupInputComponent
1884        case 3512060: /*rule*/ return this.rule == null ? new Base[0] : this.rule.toArray(new Base[this.rule.size()]); // StructureMapGroupRuleComponent
1885        default: return super.getProperty(hash, name, checkValid);
1886        }
1887
1888      }
1889
1890      @Override
1891      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1892        switch (hash) {
1893        case 3373707: // name
1894          this.name = TypeConvertor.castToId(value); // IdType
1895          return value;
1896        case -1305664359: // extends
1897          this.extends_ = TypeConvertor.castToId(value); // IdType
1898          return value;
1899        case -676524035: // typeMode
1900          value = new StructureMapGroupTypeModeEnumFactory().fromType(TypeConvertor.castToCode(value));
1901          this.typeMode = (Enumeration) value; // Enumeration<StructureMapGroupTypeMode>
1902          return value;
1903        case 1587405498: // documentation
1904          this.documentation = TypeConvertor.castToString(value); // StringType
1905          return value;
1906        case 100358090: // input
1907          this.getInput().add((StructureMapGroupInputComponent) value); // StructureMapGroupInputComponent
1908          return value;
1909        case 3512060: // rule
1910          this.getRule().add((StructureMapGroupRuleComponent) value); // StructureMapGroupRuleComponent
1911          return value;
1912        default: return super.setProperty(hash, name, value);
1913        }
1914
1915      }
1916
1917      @Override
1918      public Base setProperty(String name, Base value) throws FHIRException {
1919        if (name.equals("name")) {
1920          this.name = TypeConvertor.castToId(value); // IdType
1921        } else if (name.equals("extends")) {
1922          this.extends_ = TypeConvertor.castToId(value); // IdType
1923        } else if (name.equals("typeMode")) {
1924          value = new StructureMapGroupTypeModeEnumFactory().fromType(TypeConvertor.castToCode(value));
1925          this.typeMode = (Enumeration) value; // Enumeration<StructureMapGroupTypeMode>
1926        } else if (name.equals("documentation")) {
1927          this.documentation = TypeConvertor.castToString(value); // StringType
1928        } else if (name.equals("input")) {
1929          this.getInput().add((StructureMapGroupInputComponent) value);
1930        } else if (name.equals("rule")) {
1931          this.getRule().add((StructureMapGroupRuleComponent) value);
1932        } else
1933          return super.setProperty(name, value);
1934        return value;
1935      }
1936
1937      @Override
1938      public Base makeProperty(int hash, String name) throws FHIRException {
1939        switch (hash) {
1940        case 3373707:  return getNameElement();
1941        case -1305664359:  return getExtendsElement();
1942        case -676524035:  return getTypeModeElement();
1943        case 1587405498:  return getDocumentationElement();
1944        case 100358090:  return addInput(); 
1945        case 3512060:  return addRule(); 
1946        default: return super.makeProperty(hash, name);
1947        }
1948
1949      }
1950
1951      @Override
1952      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1953        switch (hash) {
1954        case 3373707: /*name*/ return new String[] {"id"};
1955        case -1305664359: /*extends*/ return new String[] {"id"};
1956        case -676524035: /*typeMode*/ return new String[] {"code"};
1957        case 1587405498: /*documentation*/ return new String[] {"string"};
1958        case 100358090: /*input*/ return new String[] {};
1959        case 3512060: /*rule*/ return new String[] {};
1960        default: return super.getTypesForProperty(hash, name);
1961        }
1962
1963      }
1964
1965      @Override
1966      public Base addChild(String name) throws FHIRException {
1967        if (name.equals("name")) {
1968          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.name");
1969        }
1970        else if (name.equals("extends")) {
1971          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.extends");
1972        }
1973        else if (name.equals("typeMode")) {
1974          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.typeMode");
1975        }
1976        else if (name.equals("documentation")) {
1977          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.documentation");
1978        }
1979        else if (name.equals("input")) {
1980          return addInput();
1981        }
1982        else if (name.equals("rule")) {
1983          return addRule();
1984        }
1985        else
1986          return super.addChild(name);
1987      }
1988
1989      public StructureMapGroupComponent copy() {
1990        StructureMapGroupComponent dst = new StructureMapGroupComponent();
1991        copyValues(dst);
1992        return dst;
1993      }
1994
1995      public void copyValues(StructureMapGroupComponent dst) {
1996        super.copyValues(dst);
1997        dst.name = name == null ? null : name.copy();
1998        dst.extends_ = extends_ == null ? null : extends_.copy();
1999        dst.typeMode = typeMode == null ? null : typeMode.copy();
2000        dst.documentation = documentation == null ? null : documentation.copy();
2001        if (input != null) {
2002          dst.input = new ArrayList<StructureMapGroupInputComponent>();
2003          for (StructureMapGroupInputComponent i : input)
2004            dst.input.add(i.copy());
2005        };
2006        if (rule != null) {
2007          dst.rule = new ArrayList<StructureMapGroupRuleComponent>();
2008          for (StructureMapGroupRuleComponent i : rule)
2009            dst.rule.add(i.copy());
2010        };
2011      }
2012
2013      @Override
2014      public boolean equalsDeep(Base other_) {
2015        if (!super.equalsDeep(other_))
2016          return false;
2017        if (!(other_ instanceof StructureMapGroupComponent))
2018          return false;
2019        StructureMapGroupComponent o = (StructureMapGroupComponent) other_;
2020        return compareDeep(name, o.name, true) && compareDeep(extends_, o.extends_, true) && compareDeep(typeMode, o.typeMode, true)
2021           && compareDeep(documentation, o.documentation, true) && compareDeep(input, o.input, true) && compareDeep(rule, o.rule, true)
2022          ;
2023      }
2024
2025      @Override
2026      public boolean equalsShallow(Base other_) {
2027        if (!super.equalsShallow(other_))
2028          return false;
2029        if (!(other_ instanceof StructureMapGroupComponent))
2030          return false;
2031        StructureMapGroupComponent o = (StructureMapGroupComponent) other_;
2032        return compareValues(name, o.name, true) && compareValues(extends_, o.extends_, true) && compareValues(typeMode, o.typeMode, true)
2033           && compareValues(documentation, o.documentation, true);
2034      }
2035
2036      public boolean isEmpty() {
2037        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, extends_, typeMode
2038          , documentation, input, rule);
2039      }
2040
2041  public String fhirType() {
2042    return "StructureMap.group";
2043
2044  }
2045
2046// added from java-adornments.txt:
2047public String toString() {
2048    return StructureMapUtilities.groupToString(this);
2049  }
2050// end addition
2051  }
2052
2053    @Block()
2054    public static class StructureMapGroupInputComponent extends BackboneElement implements IBaseBackboneElement {
2055        /**
2056         * Name for this instance of data.
2057         */
2058        @Child(name = "name", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
2059        @Description(shortDefinition="Name for this instance of data", formalDefinition="Name for this instance of data." )
2060        protected IdType name;
2061
2062        /**
2063         * Type for this instance of data.
2064         */
2065        @Child(name = "type", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
2066        @Description(shortDefinition="Type for this instance of data", formalDefinition="Type for this instance of data." )
2067        protected StringType type;
2068
2069        /**
2070         * Mode for this instance of data.
2071         */
2072        @Child(name = "mode", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=true)
2073        @Description(shortDefinition="source | target", formalDefinition="Mode for this instance of data." )
2074        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/map-input-mode")
2075        protected Enumeration<StructureMapInputMode> mode;
2076
2077        /**
2078         * Documentation for this instance of data.
2079         */
2080        @Child(name = "documentation", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
2081        @Description(shortDefinition="Documentation for this instance of data", formalDefinition="Documentation for this instance of data." )
2082        protected StringType documentation;
2083
2084        private static final long serialVersionUID = -25050724L;
2085
2086    /**
2087     * Constructor
2088     */
2089      public StructureMapGroupInputComponent() {
2090        super();
2091      }
2092
2093    /**
2094     * Constructor
2095     */
2096      public StructureMapGroupInputComponent(String name, StructureMapInputMode mode) {
2097        super();
2098        this.setName(name);
2099        this.setMode(mode);
2100      }
2101
2102        /**
2103         * @return {@link #name} (Name for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2104         */
2105        public IdType getNameElement() { 
2106          if (this.name == null)
2107            if (Configuration.errorOnAutoCreate())
2108              throw new Error("Attempt to auto-create StructureMapGroupInputComponent.name");
2109            else if (Configuration.doAutoCreate())
2110              this.name = new IdType(); // bb
2111          return this.name;
2112        }
2113
2114        public boolean hasNameElement() { 
2115          return this.name != null && !this.name.isEmpty();
2116        }
2117
2118        public boolean hasName() { 
2119          return this.name != null && !this.name.isEmpty();
2120        }
2121
2122        /**
2123         * @param value {@link #name} (Name for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2124         */
2125        public StructureMapGroupInputComponent setNameElement(IdType value) { 
2126          this.name = value;
2127          return this;
2128        }
2129
2130        /**
2131         * @return Name for this instance of data.
2132         */
2133        public String getName() { 
2134          return this.name == null ? null : this.name.getValue();
2135        }
2136
2137        /**
2138         * @param value Name for this instance of data.
2139         */
2140        public StructureMapGroupInputComponent setName(String value) { 
2141            if (this.name == null)
2142              this.name = new IdType();
2143            this.name.setValue(value);
2144          return this;
2145        }
2146
2147        /**
2148         * @return {@link #type} (Type for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2149         */
2150        public StringType getTypeElement() { 
2151          if (this.type == null)
2152            if (Configuration.errorOnAutoCreate())
2153              throw new Error("Attempt to auto-create StructureMapGroupInputComponent.type");
2154            else if (Configuration.doAutoCreate())
2155              this.type = new StringType(); // bb
2156          return this.type;
2157        }
2158
2159        public boolean hasTypeElement() { 
2160          return this.type != null && !this.type.isEmpty();
2161        }
2162
2163        public boolean hasType() { 
2164          return this.type != null && !this.type.isEmpty();
2165        }
2166
2167        /**
2168         * @param value {@link #type} (Type for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2169         */
2170        public StructureMapGroupInputComponent setTypeElement(StringType value) { 
2171          this.type = value;
2172          return this;
2173        }
2174
2175        /**
2176         * @return Type for this instance of data.
2177         */
2178        public String getType() { 
2179          return this.type == null ? null : this.type.getValue();
2180        }
2181
2182        /**
2183         * @param value Type for this instance of data.
2184         */
2185        public StructureMapGroupInputComponent setType(String value) { 
2186          if (Utilities.noString(value))
2187            this.type = null;
2188          else {
2189            if (this.type == null)
2190              this.type = new StringType();
2191            this.type.setValue(value);
2192          }
2193          return this;
2194        }
2195
2196        /**
2197         * @return {@link #mode} (Mode for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
2198         */
2199        public Enumeration<StructureMapInputMode> getModeElement() { 
2200          if (this.mode == null)
2201            if (Configuration.errorOnAutoCreate())
2202              throw new Error("Attempt to auto-create StructureMapGroupInputComponent.mode");
2203            else if (Configuration.doAutoCreate())
2204              this.mode = new Enumeration<StructureMapInputMode>(new StructureMapInputModeEnumFactory()); // bb
2205          return this.mode;
2206        }
2207
2208        public boolean hasModeElement() { 
2209          return this.mode != null && !this.mode.isEmpty();
2210        }
2211
2212        public boolean hasMode() { 
2213          return this.mode != null && !this.mode.isEmpty();
2214        }
2215
2216        /**
2217         * @param value {@link #mode} (Mode for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
2218         */
2219        public StructureMapGroupInputComponent setModeElement(Enumeration<StructureMapInputMode> value) { 
2220          this.mode = value;
2221          return this;
2222        }
2223
2224        /**
2225         * @return Mode for this instance of data.
2226         */
2227        public StructureMapInputMode getMode() { 
2228          return this.mode == null ? null : this.mode.getValue();
2229        }
2230
2231        /**
2232         * @param value Mode for this instance of data.
2233         */
2234        public StructureMapGroupInputComponent setMode(StructureMapInputMode value) { 
2235            if (this.mode == null)
2236              this.mode = new Enumeration<StructureMapInputMode>(new StructureMapInputModeEnumFactory());
2237            this.mode.setValue(value);
2238          return this;
2239        }
2240
2241        /**
2242         * @return {@link #documentation} (Documentation for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
2243         */
2244        public StringType getDocumentationElement() { 
2245          if (this.documentation == null)
2246            if (Configuration.errorOnAutoCreate())
2247              throw new Error("Attempt to auto-create StructureMapGroupInputComponent.documentation");
2248            else if (Configuration.doAutoCreate())
2249              this.documentation = new StringType(); // bb
2250          return this.documentation;
2251        }
2252
2253        public boolean hasDocumentationElement() { 
2254          return this.documentation != null && !this.documentation.isEmpty();
2255        }
2256
2257        public boolean hasDocumentation() { 
2258          return this.documentation != null && !this.documentation.isEmpty();
2259        }
2260
2261        /**
2262         * @param value {@link #documentation} (Documentation for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
2263         */
2264        public StructureMapGroupInputComponent setDocumentationElement(StringType value) { 
2265          this.documentation = value;
2266          return this;
2267        }
2268
2269        /**
2270         * @return Documentation for this instance of data.
2271         */
2272        public String getDocumentation() { 
2273          return this.documentation == null ? null : this.documentation.getValue();
2274        }
2275
2276        /**
2277         * @param value Documentation for this instance of data.
2278         */
2279        public StructureMapGroupInputComponent setDocumentation(String value) { 
2280          if (Utilities.noString(value))
2281            this.documentation = null;
2282          else {
2283            if (this.documentation == null)
2284              this.documentation = new StringType();
2285            this.documentation.setValue(value);
2286          }
2287          return this;
2288        }
2289
2290        protected void listChildren(List<Property> children) {
2291          super.listChildren(children);
2292          children.add(new Property("name", "id", "Name for this instance of data.", 0, 1, name));
2293          children.add(new Property("type", "string", "Type for this instance of data.", 0, 1, type));
2294          children.add(new Property("mode", "code", "Mode for this instance of data.", 0, 1, mode));
2295          children.add(new Property("documentation", "string", "Documentation for this instance of data.", 0, 1, documentation));
2296        }
2297
2298        @Override
2299        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2300          switch (_hash) {
2301          case 3373707: /*name*/  return new Property("name", "id", "Name for this instance of data.", 0, 1, name);
2302          case 3575610: /*type*/  return new Property("type", "string", "Type for this instance of data.", 0, 1, type);
2303          case 3357091: /*mode*/  return new Property("mode", "code", "Mode for this instance of data.", 0, 1, mode);
2304          case 1587405498: /*documentation*/  return new Property("documentation", "string", "Documentation for this instance of data.", 0, 1, documentation);
2305          default: return super.getNamedProperty(_hash, _name, _checkValid);
2306          }
2307
2308        }
2309
2310      @Override
2311      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2312        switch (hash) {
2313        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // IdType
2314        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // StringType
2315        case 3357091: /*mode*/ return this.mode == null ? new Base[0] : new Base[] {this.mode}; // Enumeration<StructureMapInputMode>
2316        case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // StringType
2317        default: return super.getProperty(hash, name, checkValid);
2318        }
2319
2320      }
2321
2322      @Override
2323      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2324        switch (hash) {
2325        case 3373707: // name
2326          this.name = TypeConvertor.castToId(value); // IdType
2327          return value;
2328        case 3575610: // type
2329          this.type = TypeConvertor.castToString(value); // StringType
2330          return value;
2331        case 3357091: // mode
2332          value = new StructureMapInputModeEnumFactory().fromType(TypeConvertor.castToCode(value));
2333          this.mode = (Enumeration) value; // Enumeration<StructureMapInputMode>
2334          return value;
2335        case 1587405498: // documentation
2336          this.documentation = TypeConvertor.castToString(value); // StringType
2337          return value;
2338        default: return super.setProperty(hash, name, value);
2339        }
2340
2341      }
2342
2343      @Override
2344      public Base setProperty(String name, Base value) throws FHIRException {
2345        if (name.equals("name")) {
2346          this.name = TypeConvertor.castToId(value); // IdType
2347        } else if (name.equals("type")) {
2348          this.type = TypeConvertor.castToString(value); // StringType
2349        } else if (name.equals("mode")) {
2350          value = new StructureMapInputModeEnumFactory().fromType(TypeConvertor.castToCode(value));
2351          this.mode = (Enumeration) value; // Enumeration<StructureMapInputMode>
2352        } else if (name.equals("documentation")) {
2353          this.documentation = TypeConvertor.castToString(value); // StringType
2354        } else
2355          return super.setProperty(name, value);
2356        return value;
2357      }
2358
2359      @Override
2360      public Base makeProperty(int hash, String name) throws FHIRException {
2361        switch (hash) {
2362        case 3373707:  return getNameElement();
2363        case 3575610:  return getTypeElement();
2364        case 3357091:  return getModeElement();
2365        case 1587405498:  return getDocumentationElement();
2366        default: return super.makeProperty(hash, name);
2367        }
2368
2369      }
2370
2371      @Override
2372      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2373        switch (hash) {
2374        case 3373707: /*name*/ return new String[] {"id"};
2375        case 3575610: /*type*/ return new String[] {"string"};
2376        case 3357091: /*mode*/ return new String[] {"code"};
2377        case 1587405498: /*documentation*/ return new String[] {"string"};
2378        default: return super.getTypesForProperty(hash, name);
2379        }
2380
2381      }
2382
2383      @Override
2384      public Base addChild(String name) throws FHIRException {
2385        if (name.equals("name")) {
2386          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.input.name");
2387        }
2388        else if (name.equals("type")) {
2389          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.input.type");
2390        }
2391        else if (name.equals("mode")) {
2392          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.input.mode");
2393        }
2394        else if (name.equals("documentation")) {
2395          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.input.documentation");
2396        }
2397        else
2398          return super.addChild(name);
2399      }
2400
2401      public StructureMapGroupInputComponent copy() {
2402        StructureMapGroupInputComponent dst = new StructureMapGroupInputComponent();
2403        copyValues(dst);
2404        return dst;
2405      }
2406
2407      public void copyValues(StructureMapGroupInputComponent dst) {
2408        super.copyValues(dst);
2409        dst.name = name == null ? null : name.copy();
2410        dst.type = type == null ? null : type.copy();
2411        dst.mode = mode == null ? null : mode.copy();
2412        dst.documentation = documentation == null ? null : documentation.copy();
2413      }
2414
2415      @Override
2416      public boolean equalsDeep(Base other_) {
2417        if (!super.equalsDeep(other_))
2418          return false;
2419        if (!(other_ instanceof StructureMapGroupInputComponent))
2420          return false;
2421        StructureMapGroupInputComponent o = (StructureMapGroupInputComponent) other_;
2422        return compareDeep(name, o.name, true) && compareDeep(type, o.type, true) && compareDeep(mode, o.mode, true)
2423           && compareDeep(documentation, o.documentation, true);
2424      }
2425
2426      @Override
2427      public boolean equalsShallow(Base other_) {
2428        if (!super.equalsShallow(other_))
2429          return false;
2430        if (!(other_ instanceof StructureMapGroupInputComponent))
2431          return false;
2432        StructureMapGroupInputComponent o = (StructureMapGroupInputComponent) other_;
2433        return compareValues(name, o.name, true) && compareValues(type, o.type, true) && compareValues(mode, o.mode, true)
2434           && compareValues(documentation, o.documentation, true);
2435      }
2436
2437      public boolean isEmpty() {
2438        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, type, mode, documentation
2439          );
2440      }
2441
2442  public String fhirType() {
2443    return "StructureMap.group.input";
2444
2445  }
2446
2447  }
2448
2449    @Block()
2450    public static class StructureMapGroupRuleComponent extends BackboneElement implements IBaseBackboneElement {
2451        /**
2452         * Name of the rule for internal references.
2453         */
2454        @Child(name = "name", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
2455        @Description(shortDefinition="Name of the rule for internal references", formalDefinition="Name of the rule for internal references." )
2456        protected IdType name;
2457
2458        /**
2459         * Source inputs to the mapping.
2460         */
2461        @Child(name = "source", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2462        @Description(shortDefinition="Source inputs to the mapping", formalDefinition="Source inputs to the mapping." )
2463        protected List<StructureMapGroupRuleSourceComponent> source;
2464
2465        /**
2466         * Content to create because of this mapping rule.
2467         */
2468        @Child(name = "target", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2469        @Description(shortDefinition="Content to create because of this mapping rule", formalDefinition="Content to create because of this mapping rule." )
2470        protected List<StructureMapGroupRuleTargetComponent> target;
2471
2472        /**
2473         * Rules contained in this rule.
2474         */
2475        @Child(name = "rule", type = {StructureMapGroupRuleComponent.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2476        @Description(shortDefinition="Rules contained in this rule", formalDefinition="Rules contained in this rule." )
2477        protected List<StructureMapGroupRuleComponent> rule;
2478
2479        /**
2480         * Which other rules to apply in the context of this rule.
2481         */
2482        @Child(name = "dependent", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2483        @Description(shortDefinition="Which other rules to apply in the context of this rule", formalDefinition="Which other rules to apply in the context of this rule." )
2484        protected List<StructureMapGroupRuleDependentComponent> dependent;
2485
2486        /**
2487         * Documentation for this instance of data.
2488         */
2489        @Child(name = "documentation", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
2490        @Description(shortDefinition="Documentation for this instance of data", formalDefinition="Documentation for this instance of data." )
2491        protected StringType documentation;
2492
2493        private static final long serialVersionUID = 773925517L;
2494
2495    /**
2496     * Constructor
2497     */
2498      public StructureMapGroupRuleComponent() {
2499        super();
2500      }
2501
2502    /**
2503     * Constructor
2504     */
2505      public StructureMapGroupRuleComponent(String name, StructureMapGroupRuleSourceComponent source) {
2506        super();
2507        this.setName(name);
2508        this.addSource(source);
2509      }
2510
2511        /**
2512         * @return {@link #name} (Name of the rule for internal references.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2513         */
2514        public IdType getNameElement() { 
2515          if (this.name == null)
2516            if (Configuration.errorOnAutoCreate())
2517              throw new Error("Attempt to auto-create StructureMapGroupRuleComponent.name");
2518            else if (Configuration.doAutoCreate())
2519              this.name = new IdType(); // bb
2520          return this.name;
2521        }
2522
2523        public boolean hasNameElement() { 
2524          return this.name != null && !this.name.isEmpty();
2525        }
2526
2527        public boolean hasName() { 
2528          return this.name != null && !this.name.isEmpty();
2529        }
2530
2531        /**
2532         * @param value {@link #name} (Name of the rule for internal references.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2533         */
2534        public StructureMapGroupRuleComponent setNameElement(IdType value) { 
2535          this.name = value;
2536          return this;
2537        }
2538
2539        /**
2540         * @return Name of the rule for internal references.
2541         */
2542        public String getName() { 
2543          return this.name == null ? null : this.name.getValue();
2544        }
2545
2546        /**
2547         * @param value Name of the rule for internal references.
2548         */
2549        public StructureMapGroupRuleComponent setName(String value) { 
2550            if (this.name == null)
2551              this.name = new IdType();
2552            this.name.setValue(value);
2553          return this;
2554        }
2555
2556        /**
2557         * @return {@link #source} (Source inputs to the mapping.)
2558         */
2559        public List<StructureMapGroupRuleSourceComponent> getSource() { 
2560          if (this.source == null)
2561            this.source = new ArrayList<StructureMapGroupRuleSourceComponent>();
2562          return this.source;
2563        }
2564
2565        /**
2566         * @return Returns a reference to <code>this</code> for easy method chaining
2567         */
2568        public StructureMapGroupRuleComponent setSource(List<StructureMapGroupRuleSourceComponent> theSource) { 
2569          this.source = theSource;
2570          return this;
2571        }
2572
2573        public boolean hasSource() { 
2574          if (this.source == null)
2575            return false;
2576          for (StructureMapGroupRuleSourceComponent item : this.source)
2577            if (!item.isEmpty())
2578              return true;
2579          return false;
2580        }
2581
2582        public StructureMapGroupRuleSourceComponent addSource() { //3
2583          StructureMapGroupRuleSourceComponent t = new StructureMapGroupRuleSourceComponent();
2584          if (this.source == null)
2585            this.source = new ArrayList<StructureMapGroupRuleSourceComponent>();
2586          this.source.add(t);
2587          return t;
2588        }
2589
2590        public StructureMapGroupRuleComponent addSource(StructureMapGroupRuleSourceComponent t) { //3
2591          if (t == null)
2592            return this;
2593          if (this.source == null)
2594            this.source = new ArrayList<StructureMapGroupRuleSourceComponent>();
2595          this.source.add(t);
2596          return this;
2597        }
2598
2599        /**
2600         * @return The first repetition of repeating field {@link #source}, creating it if it does not already exist {3}
2601         */
2602        public StructureMapGroupRuleSourceComponent getSourceFirstRep() { 
2603          if (getSource().isEmpty()) {
2604            addSource();
2605          }
2606          return getSource().get(0);
2607        }
2608
2609        /**
2610         * @return {@link #target} (Content to create because of this mapping rule.)
2611         */
2612        public List<StructureMapGroupRuleTargetComponent> getTarget() { 
2613          if (this.target == null)
2614            this.target = new ArrayList<StructureMapGroupRuleTargetComponent>();
2615          return this.target;
2616        }
2617
2618        /**
2619         * @return Returns a reference to <code>this</code> for easy method chaining
2620         */
2621        public StructureMapGroupRuleComponent setTarget(List<StructureMapGroupRuleTargetComponent> theTarget) { 
2622          this.target = theTarget;
2623          return this;
2624        }
2625
2626        public boolean hasTarget() { 
2627          if (this.target == null)
2628            return false;
2629          for (StructureMapGroupRuleTargetComponent item : this.target)
2630            if (!item.isEmpty())
2631              return true;
2632          return false;
2633        }
2634
2635        public StructureMapGroupRuleTargetComponent addTarget() { //3
2636          StructureMapGroupRuleTargetComponent t = new StructureMapGroupRuleTargetComponent();
2637          if (this.target == null)
2638            this.target = new ArrayList<StructureMapGroupRuleTargetComponent>();
2639          this.target.add(t);
2640          return t;
2641        }
2642
2643        public StructureMapGroupRuleComponent addTarget(StructureMapGroupRuleTargetComponent t) { //3
2644          if (t == null)
2645            return this;
2646          if (this.target == null)
2647            this.target = new ArrayList<StructureMapGroupRuleTargetComponent>();
2648          this.target.add(t);
2649          return this;
2650        }
2651
2652        /**
2653         * @return The first repetition of repeating field {@link #target}, creating it if it does not already exist {3}
2654         */
2655        public StructureMapGroupRuleTargetComponent getTargetFirstRep() { 
2656          if (getTarget().isEmpty()) {
2657            addTarget();
2658          }
2659          return getTarget().get(0);
2660        }
2661
2662        /**
2663         * @return {@link #rule} (Rules contained in this rule.)
2664         */
2665        public List<StructureMapGroupRuleComponent> getRule() { 
2666          if (this.rule == null)
2667            this.rule = new ArrayList<StructureMapGroupRuleComponent>();
2668          return this.rule;
2669        }
2670
2671        /**
2672         * @return Returns a reference to <code>this</code> for easy method chaining
2673         */
2674        public StructureMapGroupRuleComponent setRule(List<StructureMapGroupRuleComponent> theRule) { 
2675          this.rule = theRule;
2676          return this;
2677        }
2678
2679        public boolean hasRule() { 
2680          if (this.rule == null)
2681            return false;
2682          for (StructureMapGroupRuleComponent item : this.rule)
2683            if (!item.isEmpty())
2684              return true;
2685          return false;
2686        }
2687
2688        public StructureMapGroupRuleComponent addRule() { //3
2689          StructureMapGroupRuleComponent t = new StructureMapGroupRuleComponent();
2690          if (this.rule == null)
2691            this.rule = new ArrayList<StructureMapGroupRuleComponent>();
2692          this.rule.add(t);
2693          return t;
2694        }
2695
2696        public StructureMapGroupRuleComponent addRule(StructureMapGroupRuleComponent t) { //3
2697          if (t == null)
2698            return this;
2699          if (this.rule == null)
2700            this.rule = new ArrayList<StructureMapGroupRuleComponent>();
2701          this.rule.add(t);
2702          return this;
2703        }
2704
2705        /**
2706         * @return The first repetition of repeating field {@link #rule}, creating it if it does not already exist {3}
2707         */
2708        public StructureMapGroupRuleComponent getRuleFirstRep() { 
2709          if (getRule().isEmpty()) {
2710            addRule();
2711          }
2712          return getRule().get(0);
2713        }
2714
2715        /**
2716         * @return {@link #dependent} (Which other rules to apply in the context of this rule.)
2717         */
2718        public List<StructureMapGroupRuleDependentComponent> getDependent() { 
2719          if (this.dependent == null)
2720            this.dependent = new ArrayList<StructureMapGroupRuleDependentComponent>();
2721          return this.dependent;
2722        }
2723
2724        /**
2725         * @return Returns a reference to <code>this</code> for easy method chaining
2726         */
2727        public StructureMapGroupRuleComponent setDependent(List<StructureMapGroupRuleDependentComponent> theDependent) { 
2728          this.dependent = theDependent;
2729          return this;
2730        }
2731
2732        public boolean hasDependent() { 
2733          if (this.dependent == null)
2734            return false;
2735          for (StructureMapGroupRuleDependentComponent item : this.dependent)
2736            if (!item.isEmpty())
2737              return true;
2738          return false;
2739        }
2740
2741        public StructureMapGroupRuleDependentComponent addDependent() { //3
2742          StructureMapGroupRuleDependentComponent t = new StructureMapGroupRuleDependentComponent();
2743          if (this.dependent == null)
2744            this.dependent = new ArrayList<StructureMapGroupRuleDependentComponent>();
2745          this.dependent.add(t);
2746          return t;
2747        }
2748
2749        public StructureMapGroupRuleComponent addDependent(StructureMapGroupRuleDependentComponent t) { //3
2750          if (t == null)
2751            return this;
2752          if (this.dependent == null)
2753            this.dependent = new ArrayList<StructureMapGroupRuleDependentComponent>();
2754          this.dependent.add(t);
2755          return this;
2756        }
2757
2758        /**
2759         * @return The first repetition of repeating field {@link #dependent}, creating it if it does not already exist {3}
2760         */
2761        public StructureMapGroupRuleDependentComponent getDependentFirstRep() { 
2762          if (getDependent().isEmpty()) {
2763            addDependent();
2764          }
2765          return getDependent().get(0);
2766        }
2767
2768        /**
2769         * @return {@link #documentation} (Documentation for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
2770         */
2771        public StringType getDocumentationElement() { 
2772          if (this.documentation == null)
2773            if (Configuration.errorOnAutoCreate())
2774              throw new Error("Attempt to auto-create StructureMapGroupRuleComponent.documentation");
2775            else if (Configuration.doAutoCreate())
2776              this.documentation = new StringType(); // bb
2777          return this.documentation;
2778        }
2779
2780        public boolean hasDocumentationElement() { 
2781          return this.documentation != null && !this.documentation.isEmpty();
2782        }
2783
2784        public boolean hasDocumentation() { 
2785          return this.documentation != null && !this.documentation.isEmpty();
2786        }
2787
2788        /**
2789         * @param value {@link #documentation} (Documentation for this instance of data.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
2790         */
2791        public StructureMapGroupRuleComponent setDocumentationElement(StringType value) { 
2792          this.documentation = value;
2793          return this;
2794        }
2795
2796        /**
2797         * @return Documentation for this instance of data.
2798         */
2799        public String getDocumentation() { 
2800          return this.documentation == null ? null : this.documentation.getValue();
2801        }
2802
2803        /**
2804         * @param value Documentation for this instance of data.
2805         */
2806        public StructureMapGroupRuleComponent setDocumentation(String value) { 
2807          if (Utilities.noString(value))
2808            this.documentation = null;
2809          else {
2810            if (this.documentation == null)
2811              this.documentation = new StringType();
2812            this.documentation.setValue(value);
2813          }
2814          return this;
2815        }
2816
2817        protected void listChildren(List<Property> children) {
2818          super.listChildren(children);
2819          children.add(new Property("name", "id", "Name of the rule for internal references.", 0, 1, name));
2820          children.add(new Property("source", "", "Source inputs to the mapping.", 0, java.lang.Integer.MAX_VALUE, source));
2821          children.add(new Property("target", "", "Content to create because of this mapping rule.", 0, java.lang.Integer.MAX_VALUE, target));
2822          children.add(new Property("rule", "@StructureMap.group.rule", "Rules contained in this rule.", 0, java.lang.Integer.MAX_VALUE, rule));
2823          children.add(new Property("dependent", "", "Which other rules to apply in the context of this rule.", 0, java.lang.Integer.MAX_VALUE, dependent));
2824          children.add(new Property("documentation", "string", "Documentation for this instance of data.", 0, 1, documentation));
2825        }
2826
2827        @Override
2828        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2829          switch (_hash) {
2830          case 3373707: /*name*/  return new Property("name", "id", "Name of the rule for internal references.", 0, 1, name);
2831          case -896505829: /*source*/  return new Property("source", "", "Source inputs to the mapping.", 0, java.lang.Integer.MAX_VALUE, source);
2832          case -880905839: /*target*/  return new Property("target", "", "Content to create because of this mapping rule.", 0, java.lang.Integer.MAX_VALUE, target);
2833          case 3512060: /*rule*/  return new Property("rule", "@StructureMap.group.rule", "Rules contained in this rule.", 0, java.lang.Integer.MAX_VALUE, rule);
2834          case -1109226753: /*dependent*/  return new Property("dependent", "", "Which other rules to apply in the context of this rule.", 0, java.lang.Integer.MAX_VALUE, dependent);
2835          case 1587405498: /*documentation*/  return new Property("documentation", "string", "Documentation for this instance of data.", 0, 1, documentation);
2836          default: return super.getNamedProperty(_hash, _name, _checkValid);
2837          }
2838
2839        }
2840
2841      @Override
2842      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2843        switch (hash) {
2844        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // IdType
2845        case -896505829: /*source*/ return this.source == null ? new Base[0] : this.source.toArray(new Base[this.source.size()]); // StructureMapGroupRuleSourceComponent
2846        case -880905839: /*target*/ return this.target == null ? new Base[0] : this.target.toArray(new Base[this.target.size()]); // StructureMapGroupRuleTargetComponent
2847        case 3512060: /*rule*/ return this.rule == null ? new Base[0] : this.rule.toArray(new Base[this.rule.size()]); // StructureMapGroupRuleComponent
2848        case -1109226753: /*dependent*/ return this.dependent == null ? new Base[0] : this.dependent.toArray(new Base[this.dependent.size()]); // StructureMapGroupRuleDependentComponent
2849        case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // StringType
2850        default: return super.getProperty(hash, name, checkValid);
2851        }
2852
2853      }
2854
2855      @Override
2856      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2857        switch (hash) {
2858        case 3373707: // name
2859          this.name = TypeConvertor.castToId(value); // IdType
2860          return value;
2861        case -896505829: // source
2862          this.getSource().add((StructureMapGroupRuleSourceComponent) value); // StructureMapGroupRuleSourceComponent
2863          return value;
2864        case -880905839: // target
2865          this.getTarget().add((StructureMapGroupRuleTargetComponent) value); // StructureMapGroupRuleTargetComponent
2866          return value;
2867        case 3512060: // rule
2868          this.getRule().add((StructureMapGroupRuleComponent) value); // StructureMapGroupRuleComponent
2869          return value;
2870        case -1109226753: // dependent
2871          this.getDependent().add((StructureMapGroupRuleDependentComponent) value); // StructureMapGroupRuleDependentComponent
2872          return value;
2873        case 1587405498: // documentation
2874          this.documentation = TypeConvertor.castToString(value); // StringType
2875          return value;
2876        default: return super.setProperty(hash, name, value);
2877        }
2878
2879      }
2880
2881      @Override
2882      public Base setProperty(String name, Base value) throws FHIRException {
2883        if (name.equals("name")) {
2884          this.name = TypeConvertor.castToId(value); // IdType
2885        } else if (name.equals("source")) {
2886          this.getSource().add((StructureMapGroupRuleSourceComponent) value);
2887        } else if (name.equals("target")) {
2888          this.getTarget().add((StructureMapGroupRuleTargetComponent) value);
2889        } else if (name.equals("rule")) {
2890          this.getRule().add((StructureMapGroupRuleComponent) value);
2891        } else if (name.equals("dependent")) {
2892          this.getDependent().add((StructureMapGroupRuleDependentComponent) value);
2893        } else if (name.equals("documentation")) {
2894          this.documentation = TypeConvertor.castToString(value); // StringType
2895        } else
2896          return super.setProperty(name, value);
2897        return value;
2898      }
2899
2900      @Override
2901      public Base makeProperty(int hash, String name) throws FHIRException {
2902        switch (hash) {
2903        case 3373707:  return getNameElement();
2904        case -896505829:  return addSource(); 
2905        case -880905839:  return addTarget(); 
2906        case 3512060:  return addRule(); 
2907        case -1109226753:  return addDependent(); 
2908        case 1587405498:  return getDocumentationElement();
2909        default: return super.makeProperty(hash, name);
2910        }
2911
2912      }
2913
2914      @Override
2915      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2916        switch (hash) {
2917        case 3373707: /*name*/ return new String[] {"id"};
2918        case -896505829: /*source*/ return new String[] {};
2919        case -880905839: /*target*/ return new String[] {};
2920        case 3512060: /*rule*/ return new String[] {"@StructureMap.group.rule"};
2921        case -1109226753: /*dependent*/ return new String[] {};
2922        case 1587405498: /*documentation*/ return new String[] {"string"};
2923        default: return super.getTypesForProperty(hash, name);
2924        }
2925
2926      }
2927
2928      @Override
2929      public Base addChild(String name) throws FHIRException {
2930        if (name.equals("name")) {
2931          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.name");
2932        }
2933        else if (name.equals("source")) {
2934          return addSource();
2935        }
2936        else if (name.equals("target")) {
2937          return addTarget();
2938        }
2939        else if (name.equals("rule")) {
2940          return addRule();
2941        }
2942        else if (name.equals("dependent")) {
2943          return addDependent();
2944        }
2945        else if (name.equals("documentation")) {
2946          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.documentation");
2947        }
2948        else
2949          return super.addChild(name);
2950      }
2951
2952      public StructureMapGroupRuleComponent copy() {
2953        StructureMapGroupRuleComponent dst = new StructureMapGroupRuleComponent();
2954        copyValues(dst);
2955        return dst;
2956      }
2957
2958      public void copyValues(StructureMapGroupRuleComponent dst) {
2959        super.copyValues(dst);
2960        dst.name = name == null ? null : name.copy();
2961        if (source != null) {
2962          dst.source = new ArrayList<StructureMapGroupRuleSourceComponent>();
2963          for (StructureMapGroupRuleSourceComponent i : source)
2964            dst.source.add(i.copy());
2965        };
2966        if (target != null) {
2967          dst.target = new ArrayList<StructureMapGroupRuleTargetComponent>();
2968          for (StructureMapGroupRuleTargetComponent i : target)
2969            dst.target.add(i.copy());
2970        };
2971        if (rule != null) {
2972          dst.rule = new ArrayList<StructureMapGroupRuleComponent>();
2973          for (StructureMapGroupRuleComponent i : rule)
2974            dst.rule.add(i.copy());
2975        };
2976        if (dependent != null) {
2977          dst.dependent = new ArrayList<StructureMapGroupRuleDependentComponent>();
2978          for (StructureMapGroupRuleDependentComponent i : dependent)
2979            dst.dependent.add(i.copy());
2980        };
2981        dst.documentation = documentation == null ? null : documentation.copy();
2982      }
2983
2984      @Override
2985      public boolean equalsDeep(Base other_) {
2986        if (!super.equalsDeep(other_))
2987          return false;
2988        if (!(other_ instanceof StructureMapGroupRuleComponent))
2989          return false;
2990        StructureMapGroupRuleComponent o = (StructureMapGroupRuleComponent) other_;
2991        return compareDeep(name, o.name, true) && compareDeep(source, o.source, true) && compareDeep(target, o.target, true)
2992           && compareDeep(rule, o.rule, true) && compareDeep(dependent, o.dependent, true) && compareDeep(documentation, o.documentation, true)
2993          ;
2994      }
2995
2996      @Override
2997      public boolean equalsShallow(Base other_) {
2998        if (!super.equalsShallow(other_))
2999          return false;
3000        if (!(other_ instanceof StructureMapGroupRuleComponent))
3001          return false;
3002        StructureMapGroupRuleComponent o = (StructureMapGroupRuleComponent) other_;
3003        return compareValues(name, o.name, true) && compareValues(documentation, o.documentation, true);
3004      }
3005
3006      public boolean isEmpty() {
3007        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, source, target, rule
3008          , dependent, documentation);
3009      }
3010
3011  public String fhirType() {
3012    return "StructureMap.group.rule";
3013
3014  }
3015
3016// added from java-adornments.txt:
3017public String toString() {
3018    return StructureMapUtilities.ruleToString(this);
3019  }
3020// end addition
3021  }
3022
3023    @Block()
3024    public static class StructureMapGroupRuleSourceComponent extends BackboneElement implements IBaseBackboneElement {
3025        /**
3026         * Type or variable this rule applies to.
3027         */
3028        @Child(name = "context", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
3029        @Description(shortDefinition="Type or variable this rule applies to", formalDefinition="Type or variable this rule applies to." )
3030        protected IdType context;
3031
3032        /**
3033         * Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.
3034         */
3035        @Child(name = "min", type = {IntegerType.class}, order=2, min=0, max=1, modifier=false, summary=true)
3036        @Description(shortDefinition="Specified minimum cardinality", formalDefinition="Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content." )
3037        protected IntegerType min;
3038
3039        /**
3040         * Specified maximum cardinality for the element - a number or a "*". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).
3041         */
3042        @Child(name = "max", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
3043        @Description(shortDefinition="Specified maximum cardinality (number or *)", formalDefinition="Specified maximum cardinality for the element - a number or a \"*\". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value)." )
3044        protected StringType max;
3045
3046        /**
3047         * Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.
3048         */
3049        @Child(name = "type", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
3050        @Description(shortDefinition="Rule only applies if source has this type", formalDefinition="Specified type for the element. This works as a condition on the mapping - use for polymorphic elements." )
3051        protected StringType type;
3052
3053        /**
3054         * A value to use if there is no existing value in the source object.
3055         */
3056        @Child(name = "defaultValue", type = {Base64BinaryType.class, BooleanType.class, CanonicalType.class, CodeType.class, DateType.class, DateTimeType.class, DecimalType.class, IdType.class, InstantType.class, IntegerType.class, MarkdownType.class, OidType.class, PositiveIntType.class, StringType.class, TimeType.class, UnsignedIntType.class, UriType.class, UrlType.class, UuidType.class, Address.class, Age.class, Annotation.class, Attachment.class, CodeableConcept.class, Coding.class, ContactPoint.class, Count.class, Distance.class, Duration.class, HumanName.class, Identifier.class, Money.class, Period.class, Quantity.class, Range.class, Ratio.class, Reference.class, SampledData.class, Signature.class, Timing.class, ContactDetail.class, Contributor.class, DataRequirement.class, Expression.class, ParameterDefinition.class, RelatedArtifact.class, TriggerDefinition.class, UsageContext.class, Dosage.class, Meta.class}, order=5, min=0, max=1, modifier=false, summary=true)
3057        @Description(shortDefinition="Default value if no value exists", formalDefinition="A value to use if there is no existing value in the source object." )
3058        protected DataType defaultValue;
3059
3060        /**
3061         * Optional field for this source.
3062         */
3063        @Child(name = "element", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
3064        @Description(shortDefinition="Optional field for this source", formalDefinition="Optional field for this source." )
3065        protected StringType element;
3066
3067        /**
3068         * How to handle the list mode for this element.
3069         */
3070        @Child(name = "listMode", type = {CodeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
3071        @Description(shortDefinition="first | not_first | last | not_last | only_one", formalDefinition="How to handle the list mode for this element." )
3072        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/map-source-list-mode")
3073        protected Enumeration<StructureMapSourceListMode> listMode;
3074
3075        /**
3076         * Named context for field, if a field is specified.
3077         */
3078        @Child(name = "variable", type = {IdType.class}, order=8, min=0, max=1, modifier=false, summary=true)
3079        @Description(shortDefinition="Named context for field, if a field is specified", formalDefinition="Named context for field, if a field is specified." )
3080        protected IdType variable;
3081
3082        /**
3083         * FHIRPath expression  - must be true or the rule does not apply.
3084         */
3085        @Child(name = "condition", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
3086        @Description(shortDefinition="FHIRPath expression  - must be true or the rule does not apply", formalDefinition="FHIRPath expression  - must be true or the rule does not apply." )
3087        protected StringType condition;
3088
3089        /**
3090         * FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.
3091         */
3092        @Child(name = "check", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=true)
3093        @Description(shortDefinition="FHIRPath expression  - must be true or the mapping engine throws an error instead of completing", formalDefinition="FHIRPath expression  - must be true or the mapping engine throws an error instead of completing." )
3094        protected StringType check;
3095
3096        /**
3097         * A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.
3098         */
3099        @Child(name = "logMessage", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=true)
3100        @Description(shortDefinition="Message to put in log if source exists (FHIRPath)", formalDefinition="A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found." )
3101        protected StringType logMessage;
3102
3103        private static final long serialVersionUID = 1708673504L;
3104
3105    /**
3106     * Constructor
3107     */
3108      public StructureMapGroupRuleSourceComponent() {
3109        super();
3110      }
3111
3112    /**
3113     * Constructor
3114     */
3115      public StructureMapGroupRuleSourceComponent(String context) {
3116        super();
3117        this.setContext(context);
3118      }
3119
3120        /**
3121         * @return {@link #context} (Type or variable this rule applies to.). This is the underlying object with id, value and extensions. The accessor "getContext" gives direct access to the value
3122         */
3123        public IdType getContextElement() { 
3124          if (this.context == null)
3125            if (Configuration.errorOnAutoCreate())
3126              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.context");
3127            else if (Configuration.doAutoCreate())
3128              this.context = new IdType(); // bb
3129          return this.context;
3130        }
3131
3132        public boolean hasContextElement() { 
3133          return this.context != null && !this.context.isEmpty();
3134        }
3135
3136        public boolean hasContext() { 
3137          return this.context != null && !this.context.isEmpty();
3138        }
3139
3140        /**
3141         * @param value {@link #context} (Type or variable this rule applies to.). This is the underlying object with id, value and extensions. The accessor "getContext" gives direct access to the value
3142         */
3143        public StructureMapGroupRuleSourceComponent setContextElement(IdType value) { 
3144          this.context = value;
3145          return this;
3146        }
3147
3148        /**
3149         * @return Type or variable this rule applies to.
3150         */
3151        public String getContext() { 
3152          return this.context == null ? null : this.context.getValue();
3153        }
3154
3155        /**
3156         * @param value Type or variable this rule applies to.
3157         */
3158        public StructureMapGroupRuleSourceComponent setContext(String value) { 
3159            if (this.context == null)
3160              this.context = new IdType();
3161            this.context.setValue(value);
3162          return this;
3163        }
3164
3165        /**
3166         * @return {@link #min} (Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
3167         */
3168        public IntegerType getMinElement() { 
3169          if (this.min == null)
3170            if (Configuration.errorOnAutoCreate())
3171              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.min");
3172            else if (Configuration.doAutoCreate())
3173              this.min = new IntegerType(); // bb
3174          return this.min;
3175        }
3176
3177        public boolean hasMinElement() { 
3178          return this.min != null && !this.min.isEmpty();
3179        }
3180
3181        public boolean hasMin() { 
3182          return this.min != null && !this.min.isEmpty();
3183        }
3184
3185        /**
3186         * @param value {@link #min} (Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
3187         */
3188        public StructureMapGroupRuleSourceComponent setMinElement(IntegerType value) { 
3189          this.min = value;
3190          return this;
3191        }
3192
3193        /**
3194         * @return Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.
3195         */
3196        public int getMin() { 
3197          return this.min == null || this.min.isEmpty() ? 0 : this.min.getValue();
3198        }
3199
3200        /**
3201         * @param value Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.
3202         */
3203        public StructureMapGroupRuleSourceComponent setMin(int value) { 
3204            if (this.min == null)
3205              this.min = new IntegerType();
3206            this.min.setValue(value);
3207          return this;
3208        }
3209
3210        /**
3211         * @return {@link #max} (Specified maximum cardinality for the element - a number or a "*". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
3212         */
3213        public StringType getMaxElement() { 
3214          if (this.max == null)
3215            if (Configuration.errorOnAutoCreate())
3216              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.max");
3217            else if (Configuration.doAutoCreate())
3218              this.max = new StringType(); // bb
3219          return this.max;
3220        }
3221
3222        public boolean hasMaxElement() { 
3223          return this.max != null && !this.max.isEmpty();
3224        }
3225
3226        public boolean hasMax() { 
3227          return this.max != null && !this.max.isEmpty();
3228        }
3229
3230        /**
3231         * @param value {@link #max} (Specified maximum cardinality for the element - a number or a "*". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
3232         */
3233        public StructureMapGroupRuleSourceComponent setMaxElement(StringType value) { 
3234          this.max = value;
3235          return this;
3236        }
3237
3238        /**
3239         * @return Specified maximum cardinality for the element - a number or a "*". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).
3240         */
3241        public String getMax() { 
3242          return this.max == null ? null : this.max.getValue();
3243        }
3244
3245        /**
3246         * @param value Specified maximum cardinality for the element - a number or a "*". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).
3247         */
3248        public StructureMapGroupRuleSourceComponent setMax(String value) { 
3249          if (Utilities.noString(value))
3250            this.max = null;
3251          else {
3252            if (this.max == null)
3253              this.max = new StringType();
3254            this.max.setValue(value);
3255          }
3256          return this;
3257        }
3258
3259        /**
3260         * @return {@link #type} (Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
3261         */
3262        public StringType getTypeElement() { 
3263          if (this.type == null)
3264            if (Configuration.errorOnAutoCreate())
3265              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.type");
3266            else if (Configuration.doAutoCreate())
3267              this.type = new StringType(); // bb
3268          return this.type;
3269        }
3270
3271        public boolean hasTypeElement() { 
3272          return this.type != null && !this.type.isEmpty();
3273        }
3274
3275        public boolean hasType() { 
3276          return this.type != null && !this.type.isEmpty();
3277        }
3278
3279        /**
3280         * @param value {@link #type} (Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
3281         */
3282        public StructureMapGroupRuleSourceComponent setTypeElement(StringType value) { 
3283          this.type = value;
3284          return this;
3285        }
3286
3287        /**
3288         * @return Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.
3289         */
3290        public String getType() { 
3291          return this.type == null ? null : this.type.getValue();
3292        }
3293
3294        /**
3295         * @param value Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.
3296         */
3297        public StructureMapGroupRuleSourceComponent setType(String value) { 
3298          if (Utilities.noString(value))
3299            this.type = null;
3300          else {
3301            if (this.type == null)
3302              this.type = new StringType();
3303            this.type.setValue(value);
3304          }
3305          return this;
3306        }
3307
3308        /**
3309         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3310         */
3311        public DataType getDefaultValue() { 
3312          return this.defaultValue;
3313        }
3314
3315        /**
3316         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3317         */
3318        public Base64BinaryType getDefaultValueBase64BinaryType() throws FHIRException { 
3319          if (this.defaultValue == null)
3320            this.defaultValue = new Base64BinaryType();
3321          if (!(this.defaultValue instanceof Base64BinaryType))
3322            throw new FHIRException("Type mismatch: the type Base64BinaryType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3323          return (Base64BinaryType) this.defaultValue;
3324        }
3325
3326        public boolean hasDefaultValueBase64BinaryType() { 
3327          return this != null && this.defaultValue instanceof Base64BinaryType;
3328        }
3329
3330        /**
3331         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3332         */
3333        public BooleanType getDefaultValueBooleanType() throws FHIRException { 
3334          if (this.defaultValue == null)
3335            this.defaultValue = new BooleanType();
3336          if (!(this.defaultValue instanceof BooleanType))
3337            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3338          return (BooleanType) this.defaultValue;
3339        }
3340
3341        public boolean hasDefaultValueBooleanType() { 
3342          return this != null && this.defaultValue instanceof BooleanType;
3343        }
3344
3345        /**
3346         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3347         */
3348        public CanonicalType getDefaultValueCanonicalType() throws FHIRException { 
3349          if (this.defaultValue == null)
3350            this.defaultValue = new CanonicalType();
3351          if (!(this.defaultValue instanceof CanonicalType))
3352            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3353          return (CanonicalType) this.defaultValue;
3354        }
3355
3356        public boolean hasDefaultValueCanonicalType() { 
3357          return this != null && this.defaultValue instanceof CanonicalType;
3358        }
3359
3360        /**
3361         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3362         */
3363        public CodeType getDefaultValueCodeType() throws FHIRException { 
3364          if (this.defaultValue == null)
3365            this.defaultValue = new CodeType();
3366          if (!(this.defaultValue instanceof CodeType))
3367            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3368          return (CodeType) this.defaultValue;
3369        }
3370
3371        public boolean hasDefaultValueCodeType() { 
3372          return this != null && this.defaultValue instanceof CodeType;
3373        }
3374
3375        /**
3376         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3377         */
3378        public DateType getDefaultValueDateType() throws FHIRException { 
3379          if (this.defaultValue == null)
3380            this.defaultValue = new DateType();
3381          if (!(this.defaultValue instanceof DateType))
3382            throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3383          return (DateType) this.defaultValue;
3384        }
3385
3386        public boolean hasDefaultValueDateType() { 
3387          return this != null && this.defaultValue instanceof DateType;
3388        }
3389
3390        /**
3391         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3392         */
3393        public DateTimeType getDefaultValueDateTimeType() throws FHIRException { 
3394          if (this.defaultValue == null)
3395            this.defaultValue = new DateTimeType();
3396          if (!(this.defaultValue instanceof DateTimeType))
3397            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3398          return (DateTimeType) this.defaultValue;
3399        }
3400
3401        public boolean hasDefaultValueDateTimeType() { 
3402          return this != null && this.defaultValue instanceof DateTimeType;
3403        }
3404
3405        /**
3406         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3407         */
3408        public DecimalType getDefaultValueDecimalType() throws FHIRException { 
3409          if (this.defaultValue == null)
3410            this.defaultValue = new DecimalType();
3411          if (!(this.defaultValue instanceof DecimalType))
3412            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3413          return (DecimalType) this.defaultValue;
3414        }
3415
3416        public boolean hasDefaultValueDecimalType() { 
3417          return this != null && this.defaultValue instanceof DecimalType;
3418        }
3419
3420        /**
3421         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3422         */
3423        public IdType getDefaultValueIdType() throws FHIRException { 
3424          if (this.defaultValue == null)
3425            this.defaultValue = new IdType();
3426          if (!(this.defaultValue instanceof IdType))
3427            throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3428          return (IdType) this.defaultValue;
3429        }
3430
3431        public boolean hasDefaultValueIdType() { 
3432          return this != null && this.defaultValue instanceof IdType;
3433        }
3434
3435        /**
3436         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3437         */
3438        public InstantType getDefaultValueInstantType() throws FHIRException { 
3439          if (this.defaultValue == null)
3440            this.defaultValue = new InstantType();
3441          if (!(this.defaultValue instanceof InstantType))
3442            throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3443          return (InstantType) this.defaultValue;
3444        }
3445
3446        public boolean hasDefaultValueInstantType() { 
3447          return this != null && this.defaultValue instanceof InstantType;
3448        }
3449
3450        /**
3451         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3452         */
3453        public IntegerType getDefaultValueIntegerType() throws FHIRException { 
3454          if (this.defaultValue == null)
3455            this.defaultValue = new IntegerType();
3456          if (!(this.defaultValue instanceof IntegerType))
3457            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3458          return (IntegerType) this.defaultValue;
3459        }
3460
3461        public boolean hasDefaultValueIntegerType() { 
3462          return this != null && this.defaultValue instanceof IntegerType;
3463        }
3464
3465        /**
3466         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3467         */
3468        public MarkdownType getDefaultValueMarkdownType() throws FHIRException { 
3469          if (this.defaultValue == null)
3470            this.defaultValue = new MarkdownType();
3471          if (!(this.defaultValue instanceof MarkdownType))
3472            throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3473          return (MarkdownType) this.defaultValue;
3474        }
3475
3476        public boolean hasDefaultValueMarkdownType() { 
3477          return this != null && this.defaultValue instanceof MarkdownType;
3478        }
3479
3480        /**
3481         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3482         */
3483        public OidType getDefaultValueOidType() throws FHIRException { 
3484          if (this.defaultValue == null)
3485            this.defaultValue = new OidType();
3486          if (!(this.defaultValue instanceof OidType))
3487            throw new FHIRException("Type mismatch: the type OidType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3488          return (OidType) this.defaultValue;
3489        }
3490
3491        public boolean hasDefaultValueOidType() { 
3492          return this != null && this.defaultValue instanceof OidType;
3493        }
3494
3495        /**
3496         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3497         */
3498        public PositiveIntType getDefaultValuePositiveIntType() throws FHIRException { 
3499          if (this.defaultValue == null)
3500            this.defaultValue = new PositiveIntType();
3501          if (!(this.defaultValue instanceof PositiveIntType))
3502            throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3503          return (PositiveIntType) this.defaultValue;
3504        }
3505
3506        public boolean hasDefaultValuePositiveIntType() { 
3507          return this != null && this.defaultValue instanceof PositiveIntType;
3508        }
3509
3510        /**
3511         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3512         */
3513        public StringType getDefaultValueStringType() throws FHIRException { 
3514          if (this.defaultValue == null)
3515            this.defaultValue = new StringType();
3516          if (!(this.defaultValue instanceof StringType))
3517            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3518          return (StringType) this.defaultValue;
3519        }
3520
3521        public boolean hasDefaultValueStringType() { 
3522          return this != null && this.defaultValue instanceof StringType;
3523        }
3524
3525        /**
3526         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3527         */
3528        public TimeType getDefaultValueTimeType() throws FHIRException { 
3529          if (this.defaultValue == null)
3530            this.defaultValue = new TimeType();
3531          if (!(this.defaultValue instanceof TimeType))
3532            throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3533          return (TimeType) this.defaultValue;
3534        }
3535
3536        public boolean hasDefaultValueTimeType() { 
3537          return this != null && this.defaultValue instanceof TimeType;
3538        }
3539
3540        /**
3541         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3542         */
3543        public UnsignedIntType getDefaultValueUnsignedIntType() throws FHIRException { 
3544          if (this.defaultValue == null)
3545            this.defaultValue = new UnsignedIntType();
3546          if (!(this.defaultValue instanceof UnsignedIntType))
3547            throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3548          return (UnsignedIntType) this.defaultValue;
3549        }
3550
3551        public boolean hasDefaultValueUnsignedIntType() { 
3552          return this != null && this.defaultValue instanceof UnsignedIntType;
3553        }
3554
3555        /**
3556         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3557         */
3558        public UriType getDefaultValueUriType() throws FHIRException { 
3559          if (this.defaultValue == null)
3560            this.defaultValue = new UriType();
3561          if (!(this.defaultValue instanceof UriType))
3562            throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3563          return (UriType) this.defaultValue;
3564        }
3565
3566        public boolean hasDefaultValueUriType() { 
3567          return this != null && this.defaultValue instanceof UriType;
3568        }
3569
3570        /**
3571         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3572         */
3573        public UrlType getDefaultValueUrlType() throws FHIRException { 
3574          if (this.defaultValue == null)
3575            this.defaultValue = new UrlType();
3576          if (!(this.defaultValue instanceof UrlType))
3577            throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3578          return (UrlType) this.defaultValue;
3579        }
3580
3581        public boolean hasDefaultValueUrlType() { 
3582          return this != null && this.defaultValue instanceof UrlType;
3583        }
3584
3585        /**
3586         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3587         */
3588        public UuidType getDefaultValueUuidType() throws FHIRException { 
3589          if (this.defaultValue == null)
3590            this.defaultValue = new UuidType();
3591          if (!(this.defaultValue instanceof UuidType))
3592            throw new FHIRException("Type mismatch: the type UuidType was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3593          return (UuidType) this.defaultValue;
3594        }
3595
3596        public boolean hasDefaultValueUuidType() { 
3597          return this != null && this.defaultValue instanceof UuidType;
3598        }
3599
3600        /**
3601         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3602         */
3603        public Address getDefaultValueAddress() throws FHIRException { 
3604          if (this.defaultValue == null)
3605            this.defaultValue = new Address();
3606          if (!(this.defaultValue instanceof Address))
3607            throw new FHIRException("Type mismatch: the type Address was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3608          return (Address) this.defaultValue;
3609        }
3610
3611        public boolean hasDefaultValueAddress() { 
3612          return this != null && this.defaultValue instanceof Address;
3613        }
3614
3615        /**
3616         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3617         */
3618        public Age getDefaultValueAge() throws FHIRException { 
3619          if (this.defaultValue == null)
3620            this.defaultValue = new Age();
3621          if (!(this.defaultValue instanceof Age))
3622            throw new FHIRException("Type mismatch: the type Age was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3623          return (Age) this.defaultValue;
3624        }
3625
3626        public boolean hasDefaultValueAge() { 
3627          return this != null && this.defaultValue instanceof Age;
3628        }
3629
3630        /**
3631         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3632         */
3633        public Annotation getDefaultValueAnnotation() throws FHIRException { 
3634          if (this.defaultValue == null)
3635            this.defaultValue = new Annotation();
3636          if (!(this.defaultValue instanceof Annotation))
3637            throw new FHIRException("Type mismatch: the type Annotation was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3638          return (Annotation) this.defaultValue;
3639        }
3640
3641        public boolean hasDefaultValueAnnotation() { 
3642          return this != null && this.defaultValue instanceof Annotation;
3643        }
3644
3645        /**
3646         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3647         */
3648        public Attachment getDefaultValueAttachment() throws FHIRException { 
3649          if (this.defaultValue == null)
3650            this.defaultValue = new Attachment();
3651          if (!(this.defaultValue instanceof Attachment))
3652            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3653          return (Attachment) this.defaultValue;
3654        }
3655
3656        public boolean hasDefaultValueAttachment() { 
3657          return this != null && this.defaultValue instanceof Attachment;
3658        }
3659
3660        /**
3661         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3662         */
3663        public CodeableConcept getDefaultValueCodeableConcept() throws FHIRException { 
3664          if (this.defaultValue == null)
3665            this.defaultValue = new CodeableConcept();
3666          if (!(this.defaultValue instanceof CodeableConcept))
3667            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3668          return (CodeableConcept) this.defaultValue;
3669        }
3670
3671        public boolean hasDefaultValueCodeableConcept() { 
3672          return this != null && this.defaultValue instanceof CodeableConcept;
3673        }
3674
3675        /**
3676         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3677         */
3678        public Coding getDefaultValueCoding() throws FHIRException { 
3679          if (this.defaultValue == null)
3680            this.defaultValue = new Coding();
3681          if (!(this.defaultValue instanceof Coding))
3682            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3683          return (Coding) this.defaultValue;
3684        }
3685
3686        public boolean hasDefaultValueCoding() { 
3687          return this != null && this.defaultValue instanceof Coding;
3688        }
3689
3690        /**
3691         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3692         */
3693        public ContactPoint getDefaultValueContactPoint() throws FHIRException { 
3694          if (this.defaultValue == null)
3695            this.defaultValue = new ContactPoint();
3696          if (!(this.defaultValue instanceof ContactPoint))
3697            throw new FHIRException("Type mismatch: the type ContactPoint was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3698          return (ContactPoint) this.defaultValue;
3699        }
3700
3701        public boolean hasDefaultValueContactPoint() { 
3702          return this != null && this.defaultValue instanceof ContactPoint;
3703        }
3704
3705        /**
3706         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3707         */
3708        public Count getDefaultValueCount() throws FHIRException { 
3709          if (this.defaultValue == null)
3710            this.defaultValue = new Count();
3711          if (!(this.defaultValue instanceof Count))
3712            throw new FHIRException("Type mismatch: the type Count was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3713          return (Count) this.defaultValue;
3714        }
3715
3716        public boolean hasDefaultValueCount() { 
3717          return this != null && this.defaultValue instanceof Count;
3718        }
3719
3720        /**
3721         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3722         */
3723        public Distance getDefaultValueDistance() throws FHIRException { 
3724          if (this.defaultValue == null)
3725            this.defaultValue = new Distance();
3726          if (!(this.defaultValue instanceof Distance))
3727            throw new FHIRException("Type mismatch: the type Distance was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3728          return (Distance) this.defaultValue;
3729        }
3730
3731        public boolean hasDefaultValueDistance() { 
3732          return this != null && this.defaultValue instanceof Distance;
3733        }
3734
3735        /**
3736         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3737         */
3738        public Duration getDefaultValueDuration() throws FHIRException { 
3739          if (this.defaultValue == null)
3740            this.defaultValue = new Duration();
3741          if (!(this.defaultValue instanceof Duration))
3742            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3743          return (Duration) this.defaultValue;
3744        }
3745
3746        public boolean hasDefaultValueDuration() { 
3747          return this != null && this.defaultValue instanceof Duration;
3748        }
3749
3750        /**
3751         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3752         */
3753        public HumanName getDefaultValueHumanName() throws FHIRException { 
3754          if (this.defaultValue == null)
3755            this.defaultValue = new HumanName();
3756          if (!(this.defaultValue instanceof HumanName))
3757            throw new FHIRException("Type mismatch: the type HumanName was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3758          return (HumanName) this.defaultValue;
3759        }
3760
3761        public boolean hasDefaultValueHumanName() { 
3762          return this != null && this.defaultValue instanceof HumanName;
3763        }
3764
3765        /**
3766         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3767         */
3768        public Identifier getDefaultValueIdentifier() throws FHIRException { 
3769          if (this.defaultValue == null)
3770            this.defaultValue = new Identifier();
3771          if (!(this.defaultValue instanceof Identifier))
3772            throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3773          return (Identifier) this.defaultValue;
3774        }
3775
3776        public boolean hasDefaultValueIdentifier() { 
3777          return this != null && this.defaultValue instanceof Identifier;
3778        }
3779
3780        /**
3781         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3782         */
3783        public Money getDefaultValueMoney() throws FHIRException { 
3784          if (this.defaultValue == null)
3785            this.defaultValue = new Money();
3786          if (!(this.defaultValue instanceof Money))
3787            throw new FHIRException("Type mismatch: the type Money was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3788          return (Money) this.defaultValue;
3789        }
3790
3791        public boolean hasDefaultValueMoney() { 
3792          return this != null && this.defaultValue instanceof Money;
3793        }
3794
3795        /**
3796         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3797         */
3798        public Period getDefaultValuePeriod() throws FHIRException { 
3799          if (this.defaultValue == null)
3800            this.defaultValue = new Period();
3801          if (!(this.defaultValue instanceof Period))
3802            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3803          return (Period) this.defaultValue;
3804        }
3805
3806        public boolean hasDefaultValuePeriod() { 
3807          return this != null && this.defaultValue instanceof Period;
3808        }
3809
3810        /**
3811         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3812         */
3813        public Quantity getDefaultValueQuantity() throws FHIRException { 
3814          if (this.defaultValue == null)
3815            this.defaultValue = new Quantity();
3816          if (!(this.defaultValue instanceof Quantity))
3817            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3818          return (Quantity) this.defaultValue;
3819        }
3820
3821        public boolean hasDefaultValueQuantity() { 
3822          return this != null && this.defaultValue instanceof Quantity;
3823        }
3824
3825        /**
3826         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3827         */
3828        public Range getDefaultValueRange() throws FHIRException { 
3829          if (this.defaultValue == null)
3830            this.defaultValue = new Range();
3831          if (!(this.defaultValue instanceof Range))
3832            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3833          return (Range) this.defaultValue;
3834        }
3835
3836        public boolean hasDefaultValueRange() { 
3837          return this != null && this.defaultValue instanceof Range;
3838        }
3839
3840        /**
3841         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3842         */
3843        public Ratio getDefaultValueRatio() throws FHIRException { 
3844          if (this.defaultValue == null)
3845            this.defaultValue = new Ratio();
3846          if (!(this.defaultValue instanceof Ratio))
3847            throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3848          return (Ratio) this.defaultValue;
3849        }
3850
3851        public boolean hasDefaultValueRatio() { 
3852          return this != null && this.defaultValue instanceof Ratio;
3853        }
3854
3855        /**
3856         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3857         */
3858        public Reference getDefaultValueReference() throws FHIRException { 
3859          if (this.defaultValue == null)
3860            this.defaultValue = new Reference();
3861          if (!(this.defaultValue instanceof Reference))
3862            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3863          return (Reference) this.defaultValue;
3864        }
3865
3866        public boolean hasDefaultValueReference() { 
3867          return this != null && this.defaultValue instanceof Reference;
3868        }
3869
3870        /**
3871         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3872         */
3873        public SampledData getDefaultValueSampledData() throws FHIRException { 
3874          if (this.defaultValue == null)
3875            this.defaultValue = new SampledData();
3876          if (!(this.defaultValue instanceof SampledData))
3877            throw new FHIRException("Type mismatch: the type SampledData was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3878          return (SampledData) this.defaultValue;
3879        }
3880
3881        public boolean hasDefaultValueSampledData() { 
3882          return this != null && this.defaultValue instanceof SampledData;
3883        }
3884
3885        /**
3886         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3887         */
3888        public Signature getDefaultValueSignature() throws FHIRException { 
3889          if (this.defaultValue == null)
3890            this.defaultValue = new Signature();
3891          if (!(this.defaultValue instanceof Signature))
3892            throw new FHIRException("Type mismatch: the type Signature was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3893          return (Signature) this.defaultValue;
3894        }
3895
3896        public boolean hasDefaultValueSignature() { 
3897          return this != null && this.defaultValue instanceof Signature;
3898        }
3899
3900        /**
3901         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3902         */
3903        public Timing getDefaultValueTiming() throws FHIRException { 
3904          if (this.defaultValue == null)
3905            this.defaultValue = new Timing();
3906          if (!(this.defaultValue instanceof Timing))
3907            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3908          return (Timing) this.defaultValue;
3909        }
3910
3911        public boolean hasDefaultValueTiming() { 
3912          return this != null && this.defaultValue instanceof Timing;
3913        }
3914
3915        /**
3916         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3917         */
3918        public ContactDetail getDefaultValueContactDetail() throws FHIRException { 
3919          if (this.defaultValue == null)
3920            this.defaultValue = new ContactDetail();
3921          if (!(this.defaultValue instanceof ContactDetail))
3922            throw new FHIRException("Type mismatch: the type ContactDetail was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3923          return (ContactDetail) this.defaultValue;
3924        }
3925
3926        public boolean hasDefaultValueContactDetail() { 
3927          return this != null && this.defaultValue instanceof ContactDetail;
3928        }
3929
3930        /**
3931         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3932         */
3933        public Contributor getDefaultValueContributor() throws FHIRException { 
3934          if (this.defaultValue == null)
3935            this.defaultValue = new Contributor();
3936          if (!(this.defaultValue instanceof Contributor))
3937            throw new FHIRException("Type mismatch: the type Contributor was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3938          return (Contributor) this.defaultValue;
3939        }
3940
3941        public boolean hasDefaultValueContributor() { 
3942          return this != null && this.defaultValue instanceof Contributor;
3943        }
3944
3945        /**
3946         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3947         */
3948        public DataRequirement getDefaultValueDataRequirement() throws FHIRException { 
3949          if (this.defaultValue == null)
3950            this.defaultValue = new DataRequirement();
3951          if (!(this.defaultValue instanceof DataRequirement))
3952            throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3953          return (DataRequirement) this.defaultValue;
3954        }
3955
3956        public boolean hasDefaultValueDataRequirement() { 
3957          return this != null && this.defaultValue instanceof DataRequirement;
3958        }
3959
3960        /**
3961         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3962         */
3963        public Expression getDefaultValueExpression() throws FHIRException { 
3964          if (this.defaultValue == null)
3965            this.defaultValue = new Expression();
3966          if (!(this.defaultValue instanceof Expression))
3967            throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3968          return (Expression) this.defaultValue;
3969        }
3970
3971        public boolean hasDefaultValueExpression() { 
3972          return this != null && this.defaultValue instanceof Expression;
3973        }
3974
3975        /**
3976         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3977         */
3978        public ParameterDefinition getDefaultValueParameterDefinition() throws FHIRException { 
3979          if (this.defaultValue == null)
3980            this.defaultValue = new ParameterDefinition();
3981          if (!(this.defaultValue instanceof ParameterDefinition))
3982            throw new FHIRException("Type mismatch: the type ParameterDefinition was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3983          return (ParameterDefinition) this.defaultValue;
3984        }
3985
3986        public boolean hasDefaultValueParameterDefinition() { 
3987          return this != null && this.defaultValue instanceof ParameterDefinition;
3988        }
3989
3990        /**
3991         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
3992         */
3993        public RelatedArtifact getDefaultValueRelatedArtifact() throws FHIRException { 
3994          if (this.defaultValue == null)
3995            this.defaultValue = new RelatedArtifact();
3996          if (!(this.defaultValue instanceof RelatedArtifact))
3997            throw new FHIRException("Type mismatch: the type RelatedArtifact was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
3998          return (RelatedArtifact) this.defaultValue;
3999        }
4000
4001        public boolean hasDefaultValueRelatedArtifact() { 
4002          return this != null && this.defaultValue instanceof RelatedArtifact;
4003        }
4004
4005        /**
4006         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
4007         */
4008        public TriggerDefinition getDefaultValueTriggerDefinition() throws FHIRException { 
4009          if (this.defaultValue == null)
4010            this.defaultValue = new TriggerDefinition();
4011          if (!(this.defaultValue instanceof TriggerDefinition))
4012            throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
4013          return (TriggerDefinition) this.defaultValue;
4014        }
4015
4016        public boolean hasDefaultValueTriggerDefinition() { 
4017          return this != null && this.defaultValue instanceof TriggerDefinition;
4018        }
4019
4020        /**
4021         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
4022         */
4023        public UsageContext getDefaultValueUsageContext() throws FHIRException { 
4024          if (this.defaultValue == null)
4025            this.defaultValue = new UsageContext();
4026          if (!(this.defaultValue instanceof UsageContext))
4027            throw new FHIRException("Type mismatch: the type UsageContext was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
4028          return (UsageContext) this.defaultValue;
4029        }
4030
4031        public boolean hasDefaultValueUsageContext() { 
4032          return this != null && this.defaultValue instanceof UsageContext;
4033        }
4034
4035        /**
4036         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
4037         */
4038        public Dosage getDefaultValueDosage() throws FHIRException { 
4039          if (this.defaultValue == null)
4040            this.defaultValue = new Dosage();
4041          if (!(this.defaultValue instanceof Dosage))
4042            throw new FHIRException("Type mismatch: the type Dosage was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
4043          return (Dosage) this.defaultValue;
4044        }
4045
4046        public boolean hasDefaultValueDosage() { 
4047          return this != null && this.defaultValue instanceof Dosage;
4048        }
4049
4050        /**
4051         * @return {@link #defaultValue} (A value to use if there is no existing value in the source object.)
4052         */
4053        public Meta getDefaultValueMeta() throws FHIRException { 
4054          if (this.defaultValue == null)
4055            this.defaultValue = new Meta();
4056          if (!(this.defaultValue instanceof Meta))
4057            throw new FHIRException("Type mismatch: the type Meta was expected, but "+this.defaultValue.getClass().getName()+" was encountered");
4058          return (Meta) this.defaultValue;
4059        }
4060
4061        public boolean hasDefaultValueMeta() { 
4062          return this != null && this.defaultValue instanceof Meta;
4063        }
4064
4065        public boolean hasDefaultValue() { 
4066          return this.defaultValue != null && !this.defaultValue.isEmpty();
4067        }
4068
4069        /**
4070         * @param value {@link #defaultValue} (A value to use if there is no existing value in the source object.)
4071         */
4072        public StructureMapGroupRuleSourceComponent setDefaultValue(DataType value) { 
4073          if (value != null && !(value instanceof Base64BinaryType || value instanceof BooleanType || value instanceof CanonicalType || value instanceof CodeType || value instanceof DateType || value instanceof DateTimeType || value instanceof DecimalType || value instanceof IdType || value instanceof InstantType || value instanceof IntegerType || value instanceof MarkdownType || value instanceof OidType || value instanceof PositiveIntType || value instanceof StringType || value instanceof TimeType || value instanceof UnsignedIntType || value instanceof UriType || value instanceof UrlType || value instanceof UuidType || value instanceof Address || value instanceof Age || value instanceof Annotation || value instanceof Attachment || value instanceof CodeableConcept || value instanceof Coding || value instanceof ContactPoint || value instanceof Count || value instanceof Distance || value instanceof Duration || value instanceof HumanName || value instanceof Identifier || value instanceof Money || value instanceof Period || value instanceof Quantity || value instanceof Range || value instanceof Ratio || value instanceof Reference || value instanceof SampledData || value instanceof Signature || value instanceof Timing || value instanceof ContactDetail || value instanceof Contributor || value instanceof DataRequirement || value instanceof Expression || value instanceof ParameterDefinition || value instanceof RelatedArtifact || value instanceof TriggerDefinition || value instanceof UsageContext || value instanceof Dosage || value instanceof Meta))
4074            throw new Error("Not the right type for StructureMap.group.rule.source.defaultValue[x]: "+value.fhirType());
4075          this.defaultValue = value;
4076          return this;
4077        }
4078
4079        /**
4080         * @return {@link #element} (Optional field for this source.). This is the underlying object with id, value and extensions. The accessor "getElement" gives direct access to the value
4081         */
4082        public StringType getElementElement() { 
4083          if (this.element == null)
4084            if (Configuration.errorOnAutoCreate())
4085              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.element");
4086            else if (Configuration.doAutoCreate())
4087              this.element = new StringType(); // bb
4088          return this.element;
4089        }
4090
4091        public boolean hasElementElement() { 
4092          return this.element != null && !this.element.isEmpty();
4093        }
4094
4095        public boolean hasElement() { 
4096          return this.element != null && !this.element.isEmpty();
4097        }
4098
4099        /**
4100         * @param value {@link #element} (Optional field for this source.). This is the underlying object with id, value and extensions. The accessor "getElement" gives direct access to the value
4101         */
4102        public StructureMapGroupRuleSourceComponent setElementElement(StringType value) { 
4103          this.element = value;
4104          return this;
4105        }
4106
4107        /**
4108         * @return Optional field for this source.
4109         */
4110        public String getElement() { 
4111          return this.element == null ? null : this.element.getValue();
4112        }
4113
4114        /**
4115         * @param value Optional field for this source.
4116         */
4117        public StructureMapGroupRuleSourceComponent setElement(String value) { 
4118          if (Utilities.noString(value))
4119            this.element = null;
4120          else {
4121            if (this.element == null)
4122              this.element = new StringType();
4123            this.element.setValue(value);
4124          }
4125          return this;
4126        }
4127
4128        /**
4129         * @return {@link #listMode} (How to handle the list mode for this element.). This is the underlying object with id, value and extensions. The accessor "getListMode" gives direct access to the value
4130         */
4131        public Enumeration<StructureMapSourceListMode> getListModeElement() { 
4132          if (this.listMode == null)
4133            if (Configuration.errorOnAutoCreate())
4134              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.listMode");
4135            else if (Configuration.doAutoCreate())
4136              this.listMode = new Enumeration<StructureMapSourceListMode>(new StructureMapSourceListModeEnumFactory()); // bb
4137          return this.listMode;
4138        }
4139
4140        public boolean hasListModeElement() { 
4141          return this.listMode != null && !this.listMode.isEmpty();
4142        }
4143
4144        public boolean hasListMode() { 
4145          return this.listMode != null && !this.listMode.isEmpty();
4146        }
4147
4148        /**
4149         * @param value {@link #listMode} (How to handle the list mode for this element.). This is the underlying object with id, value and extensions. The accessor "getListMode" gives direct access to the value
4150         */
4151        public StructureMapGroupRuleSourceComponent setListModeElement(Enumeration<StructureMapSourceListMode> value) { 
4152          this.listMode = value;
4153          return this;
4154        }
4155
4156        /**
4157         * @return How to handle the list mode for this element.
4158         */
4159        public StructureMapSourceListMode getListMode() { 
4160          return this.listMode == null ? null : this.listMode.getValue();
4161        }
4162
4163        /**
4164         * @param value How to handle the list mode for this element.
4165         */
4166        public StructureMapGroupRuleSourceComponent setListMode(StructureMapSourceListMode value) { 
4167          if (value == null)
4168            this.listMode = null;
4169          else {
4170            if (this.listMode == null)
4171              this.listMode = new Enumeration<StructureMapSourceListMode>(new StructureMapSourceListModeEnumFactory());
4172            this.listMode.setValue(value);
4173          }
4174          return this;
4175        }
4176
4177        /**
4178         * @return {@link #variable} (Named context for field, if a field is specified.). This is the underlying object with id, value and extensions. The accessor "getVariable" gives direct access to the value
4179         */
4180        public IdType getVariableElement() { 
4181          if (this.variable == null)
4182            if (Configuration.errorOnAutoCreate())
4183              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.variable");
4184            else if (Configuration.doAutoCreate())
4185              this.variable = new IdType(); // bb
4186          return this.variable;
4187        }
4188
4189        public boolean hasVariableElement() { 
4190          return this.variable != null && !this.variable.isEmpty();
4191        }
4192
4193        public boolean hasVariable() { 
4194          return this.variable != null && !this.variable.isEmpty();
4195        }
4196
4197        /**
4198         * @param value {@link #variable} (Named context for field, if a field is specified.). This is the underlying object with id, value and extensions. The accessor "getVariable" gives direct access to the value
4199         */
4200        public StructureMapGroupRuleSourceComponent setVariableElement(IdType value) { 
4201          this.variable = value;
4202          return this;
4203        }
4204
4205        /**
4206         * @return Named context for field, if a field is specified.
4207         */
4208        public String getVariable() { 
4209          return this.variable == null ? null : this.variable.getValue();
4210        }
4211
4212        /**
4213         * @param value Named context for field, if a field is specified.
4214         */
4215        public StructureMapGroupRuleSourceComponent setVariable(String value) { 
4216          if (Utilities.noString(value))
4217            this.variable = null;
4218          else {
4219            if (this.variable == null)
4220              this.variable = new IdType();
4221            this.variable.setValue(value);
4222          }
4223          return this;
4224        }
4225
4226        /**
4227         * @return {@link #condition} (FHIRPath expression  - must be true or the rule does not apply.). This is the underlying object with id, value and extensions. The accessor "getCondition" gives direct access to the value
4228         */
4229        public StringType getConditionElement() { 
4230          if (this.condition == null)
4231            if (Configuration.errorOnAutoCreate())
4232              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.condition");
4233            else if (Configuration.doAutoCreate())
4234              this.condition = new StringType(); // bb
4235          return this.condition;
4236        }
4237
4238        public boolean hasConditionElement() { 
4239          return this.condition != null && !this.condition.isEmpty();
4240        }
4241
4242        public boolean hasCondition() { 
4243          return this.condition != null && !this.condition.isEmpty();
4244        }
4245
4246        /**
4247         * @param value {@link #condition} (FHIRPath expression  - must be true or the rule does not apply.). This is the underlying object with id, value and extensions. The accessor "getCondition" gives direct access to the value
4248         */
4249        public StructureMapGroupRuleSourceComponent setConditionElement(StringType value) { 
4250          this.condition = value;
4251          return this;
4252        }
4253
4254        /**
4255         * @return FHIRPath expression  - must be true or the rule does not apply.
4256         */
4257        public String getCondition() { 
4258          return this.condition == null ? null : this.condition.getValue();
4259        }
4260
4261        /**
4262         * @param value FHIRPath expression  - must be true or the rule does not apply.
4263         */
4264        public StructureMapGroupRuleSourceComponent setCondition(String value) { 
4265          if (Utilities.noString(value))
4266            this.condition = null;
4267          else {
4268            if (this.condition == null)
4269              this.condition = new StringType();
4270            this.condition.setValue(value);
4271          }
4272          return this;
4273        }
4274
4275        /**
4276         * @return {@link #check} (FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.). This is the underlying object with id, value and extensions. The accessor "getCheck" gives direct access to the value
4277         */
4278        public StringType getCheckElement() { 
4279          if (this.check == null)
4280            if (Configuration.errorOnAutoCreate())
4281              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.check");
4282            else if (Configuration.doAutoCreate())
4283              this.check = new StringType(); // bb
4284          return this.check;
4285        }
4286
4287        public boolean hasCheckElement() { 
4288          return this.check != null && !this.check.isEmpty();
4289        }
4290
4291        public boolean hasCheck() { 
4292          return this.check != null && !this.check.isEmpty();
4293        }
4294
4295        /**
4296         * @param value {@link #check} (FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.). This is the underlying object with id, value and extensions. The accessor "getCheck" gives direct access to the value
4297         */
4298        public StructureMapGroupRuleSourceComponent setCheckElement(StringType value) { 
4299          this.check = value;
4300          return this;
4301        }
4302
4303        /**
4304         * @return FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.
4305         */
4306        public String getCheck() { 
4307          return this.check == null ? null : this.check.getValue();
4308        }
4309
4310        /**
4311         * @param value FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.
4312         */
4313        public StructureMapGroupRuleSourceComponent setCheck(String value) { 
4314          if (Utilities.noString(value))
4315            this.check = null;
4316          else {
4317            if (this.check == null)
4318              this.check = new StringType();
4319            this.check.setValue(value);
4320          }
4321          return this;
4322        }
4323
4324        /**
4325         * @return {@link #logMessage} (A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.). This is the underlying object with id, value and extensions. The accessor "getLogMessage" gives direct access to the value
4326         */
4327        public StringType getLogMessageElement() { 
4328          if (this.logMessage == null)
4329            if (Configuration.errorOnAutoCreate())
4330              throw new Error("Attempt to auto-create StructureMapGroupRuleSourceComponent.logMessage");
4331            else if (Configuration.doAutoCreate())
4332              this.logMessage = new StringType(); // bb
4333          return this.logMessage;
4334        }
4335
4336        public boolean hasLogMessageElement() { 
4337          return this.logMessage != null && !this.logMessage.isEmpty();
4338        }
4339
4340        public boolean hasLogMessage() { 
4341          return this.logMessage != null && !this.logMessage.isEmpty();
4342        }
4343
4344        /**
4345         * @param value {@link #logMessage} (A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.). This is the underlying object with id, value and extensions. The accessor "getLogMessage" gives direct access to the value
4346         */
4347        public StructureMapGroupRuleSourceComponent setLogMessageElement(StringType value) { 
4348          this.logMessage = value;
4349          return this;
4350        }
4351
4352        /**
4353         * @return A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.
4354         */
4355        public String getLogMessage() { 
4356          return this.logMessage == null ? null : this.logMessage.getValue();
4357        }
4358
4359        /**
4360         * @param value A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.
4361         */
4362        public StructureMapGroupRuleSourceComponent setLogMessage(String value) { 
4363          if (Utilities.noString(value))
4364            this.logMessage = null;
4365          else {
4366            if (this.logMessage == null)
4367              this.logMessage = new StringType();
4368            this.logMessage.setValue(value);
4369          }
4370          return this;
4371        }
4372
4373        protected void listChildren(List<Property> children) {
4374          super.listChildren(children);
4375          children.add(new Property("context", "id", "Type or variable this rule applies to.", 0, 1, context));
4376          children.add(new Property("min", "integer", "Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.", 0, 1, min));
4377          children.add(new Property("max", "string", "Specified maximum cardinality for the element - a number or a \"*\". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).", 0, 1, max));
4378          children.add(new Property("type", "string", "Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.", 0, 1, type));
4379          children.add(new Property("defaultValue[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|Reference|SampledData|Signature|Timing|ContactDetail|Contributor|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Dosage|Meta", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue));
4380          children.add(new Property("element", "string", "Optional field for this source.", 0, 1, element));
4381          children.add(new Property("listMode", "code", "How to handle the list mode for this element.", 0, 1, listMode));
4382          children.add(new Property("variable", "id", "Named context for field, if a field is specified.", 0, 1, variable));
4383          children.add(new Property("condition", "string", "FHIRPath expression  - must be true or the rule does not apply.", 0, 1, condition));
4384          children.add(new Property("check", "string", "FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.", 0, 1, check));
4385          children.add(new Property("logMessage", "string", "A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.", 0, 1, logMessage));
4386        }
4387
4388        @Override
4389        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4390          switch (_hash) {
4391          case 951530927: /*context*/  return new Property("context", "id", "Type or variable this rule applies to.", 0, 1, context);
4392          case 108114: /*min*/  return new Property("min", "integer", "Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.", 0, 1, min);
4393          case 107876: /*max*/  return new Property("max", "string", "Specified maximum cardinality for the element - a number or a \"*\". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).", 0, 1, max);
4394          case 3575610: /*type*/  return new Property("type", "string", "Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.", 0, 1, type);
4395          case 587922128: /*defaultValue[x]*/  return new Property("defaultValue[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|Reference|SampledData|Signature|Timing|ContactDetail|Contributor|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Dosage|Meta", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4396          case -659125328: /*defaultValue*/  return new Property("defaultValue[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|Reference|SampledData|Signature|Timing|ContactDetail|Contributor|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Dosage|Meta", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4397          case 1470297600: /*defaultValueBase64Binary*/  return new Property("defaultValue[x]", "base64Binary", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4398          case 600437336: /*defaultValueBoolean*/  return new Property("defaultValue[x]", "boolean", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4399          case 264593188: /*defaultValueCanonical*/  return new Property("defaultValue[x]", "canonical", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4400          case 1044993469: /*defaultValueCode*/  return new Property("defaultValue[x]", "code", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4401          case 1045010302: /*defaultValueDate*/  return new Property("defaultValue[x]", "date", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4402          case 1220374379: /*defaultValueDateTime*/  return new Property("defaultValue[x]", "dateTime", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4403          case 2077989249: /*defaultValueDecimal*/  return new Property("defaultValue[x]", "decimal", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4404          case -2059245333: /*defaultValueId*/  return new Property("defaultValue[x]", "id", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4405          case -1801671663: /*defaultValueInstant*/  return new Property("defaultValue[x]", "instant", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4406          case -1801189522: /*defaultValueInteger*/  return new Property("defaultValue[x]", "integer", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4407          case -325436225: /*defaultValueMarkdown*/  return new Property("defaultValue[x]", "markdown", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4408          case 587910138: /*defaultValueOid*/  return new Property("defaultValue[x]", "oid", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4409          case -737344154: /*defaultValuePositiveInt*/  return new Property("defaultValue[x]", "positiveInt", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4410          case -320515103: /*defaultValueString*/  return new Property("defaultValue[x]", "string", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4411          case 1045494429: /*defaultValueTime*/  return new Property("defaultValue[x]", "time", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4412          case 539117290: /*defaultValueUnsignedInt*/  return new Property("defaultValue[x]", "unsignedInt", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4413          case 587916188: /*defaultValueUri*/  return new Property("defaultValue[x]", "uri", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4414          case 587916191: /*defaultValueUrl*/  return new Property("defaultValue[x]", "url", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4415          case 1045535627: /*defaultValueUuid*/  return new Property("defaultValue[x]", "uuid", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4416          case -611966428: /*defaultValueAddress*/  return new Property("defaultValue[x]", "Address", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4417          case 587896623: /*defaultValueAge*/  return new Property("defaultValue[x]", "Age", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4418          case -1851689217: /*defaultValueAnnotation*/  return new Property("defaultValue[x]", "Annotation", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4419          case 2034820339: /*defaultValueAttachment*/  return new Property("defaultValue[x]", "Attachment", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4420          case -410434095: /*defaultValueCodeableConcept*/  return new Property("defaultValue[x]", "CodeableConcept", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4421          case -783616198: /*defaultValueCoding*/  return new Property("defaultValue[x]", "Coding", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4422          case -344740576: /*defaultValueContactPoint*/  return new Property("defaultValue[x]", "ContactPoint", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4423          case -1964924097: /*defaultValueCount*/  return new Property("defaultValue[x]", "Count", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4424          case -283915323: /*defaultValueDistance*/  return new Property("defaultValue[x]", "Distance", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4425          case 1730579812: /*defaultValueDuration*/  return new Property("defaultValue[x]", "Duration", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4426          case -975393912: /*defaultValueHumanName*/  return new Property("defaultValue[x]", "HumanName", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4427          case -1915078535: /*defaultValueIdentifier*/  return new Property("defaultValue[x]", "Identifier", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4428          case -1955695888: /*defaultValueMoney*/  return new Property("defaultValue[x]", "Money", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4429          case -420255343: /*defaultValuePeriod*/  return new Property("defaultValue[x]", "Period", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4430          case -1857379237: /*defaultValueQuantity*/  return new Property("defaultValue[x]", "Quantity", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4431          case -1951495315: /*defaultValueRange*/  return new Property("defaultValue[x]", "Range", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4432          case -1951489477: /*defaultValueRatio*/  return new Property("defaultValue[x]", "Ratio", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4433          case -1488914053: /*defaultValueReference*/  return new Property("defaultValue[x]", "Reference", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4434          case -449641228: /*defaultValueSampledData*/  return new Property("defaultValue[x]", "SampledData", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4435          case 509825768: /*defaultValueSignature*/  return new Property("defaultValue[x]", "Signature", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4436          case -302193638: /*defaultValueTiming*/  return new Property("defaultValue[x]", "Timing", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4437          case 1845473985: /*defaultValueContactDetail*/  return new Property("defaultValue[x]", "ContactDetail", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4438          case 1793609483: /*defaultValueContributor*/  return new Property("defaultValue[x]", "Contributor", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4439          case 375217257: /*defaultValueDataRequirement*/  return new Property("defaultValue[x]", "DataRequirement", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4440          case -2092097944: /*defaultValueExpression*/  return new Property("defaultValue[x]", "Expression", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4441          case -701053940: /*defaultValueParameterDefinition*/  return new Property("defaultValue[x]", "ParameterDefinition", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4442          case 412877133: /*defaultValueRelatedArtifact*/  return new Property("defaultValue[x]", "RelatedArtifact", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4443          case 1913203547: /*defaultValueTriggerDefinition*/  return new Property("defaultValue[x]", "TriggerDefinition", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4444          case -701644642: /*defaultValueUsageContext*/  return new Property("defaultValue[x]", "UsageContext", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4445          case -754548089: /*defaultValueDosage*/  return new Property("defaultValue[x]", "Dosage", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4446          case 1045282261: /*defaultValueMeta*/  return new Property("defaultValue[x]", "Meta", "A value to use if there is no existing value in the source object.", 0, 1, defaultValue);
4447          case -1662836996: /*element*/  return new Property("element", "string", "Optional field for this source.", 0, 1, element);
4448          case 1345445729: /*listMode*/  return new Property("listMode", "code", "How to handle the list mode for this element.", 0, 1, listMode);
4449          case -1249586564: /*variable*/  return new Property("variable", "id", "Named context for field, if a field is specified.", 0, 1, variable);
4450          case -861311717: /*condition*/  return new Property("condition", "string", "FHIRPath expression  - must be true or the rule does not apply.", 0, 1, condition);
4451          case 94627080: /*check*/  return new Property("check", "string", "FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.", 0, 1, check);
4452          case -1067155421: /*logMessage*/  return new Property("logMessage", "string", "A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.", 0, 1, logMessage);
4453          default: return super.getNamedProperty(_hash, _name, _checkValid);
4454          }
4455
4456        }
4457
4458      @Override
4459      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4460        switch (hash) {
4461        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // IdType
4462        case 108114: /*min*/ return this.min == null ? new Base[0] : new Base[] {this.min}; // IntegerType
4463        case 107876: /*max*/ return this.max == null ? new Base[0] : new Base[] {this.max}; // StringType
4464        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // StringType
4465        case -659125328: /*defaultValue*/ return this.defaultValue == null ? new Base[0] : new Base[] {this.defaultValue}; // DataType
4466        case -1662836996: /*element*/ return this.element == null ? new Base[0] : new Base[] {this.element}; // StringType
4467        case 1345445729: /*listMode*/ return this.listMode == null ? new Base[0] : new Base[] {this.listMode}; // Enumeration<StructureMapSourceListMode>
4468        case -1249586564: /*variable*/ return this.variable == null ? new Base[0] : new Base[] {this.variable}; // IdType
4469        case -861311717: /*condition*/ return this.condition == null ? new Base[0] : new Base[] {this.condition}; // StringType
4470        case 94627080: /*check*/ return this.check == null ? new Base[0] : new Base[] {this.check}; // StringType
4471        case -1067155421: /*logMessage*/ return this.logMessage == null ? new Base[0] : new Base[] {this.logMessage}; // StringType
4472        default: return super.getProperty(hash, name, checkValid);
4473        }
4474
4475      }
4476
4477      @Override
4478      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4479        switch (hash) {
4480        case 951530927: // context
4481          this.context = TypeConvertor.castToId(value); // IdType
4482          return value;
4483        case 108114: // min
4484          this.min = TypeConvertor.castToInteger(value); // IntegerType
4485          return value;
4486        case 107876: // max
4487          this.max = TypeConvertor.castToString(value); // StringType
4488          return value;
4489        case 3575610: // type
4490          this.type = TypeConvertor.castToString(value); // StringType
4491          return value;
4492        case -659125328: // defaultValue
4493          this.defaultValue = TypeConvertor.castToType(value); // DataType
4494          return value;
4495        case -1662836996: // element
4496          this.element = TypeConvertor.castToString(value); // StringType
4497          return value;
4498        case 1345445729: // listMode
4499          value = new StructureMapSourceListModeEnumFactory().fromType(TypeConvertor.castToCode(value));
4500          this.listMode = (Enumeration) value; // Enumeration<StructureMapSourceListMode>
4501          return value;
4502        case -1249586564: // variable
4503          this.variable = TypeConvertor.castToId(value); // IdType
4504          return value;
4505        case -861311717: // condition
4506          this.condition = TypeConvertor.castToString(value); // StringType
4507          return value;
4508        case 94627080: // check
4509          this.check = TypeConvertor.castToString(value); // StringType
4510          return value;
4511        case -1067155421: // logMessage
4512          this.logMessage = TypeConvertor.castToString(value); // StringType
4513          return value;
4514        default: return super.setProperty(hash, name, value);
4515        }
4516
4517      }
4518
4519      @Override
4520      public Base setProperty(String name, Base value) throws FHIRException {
4521        if (name.equals("context")) {
4522          this.context = TypeConvertor.castToId(value); // IdType
4523        } else if (name.equals("min")) {
4524          this.min = TypeConvertor.castToInteger(value); // IntegerType
4525        } else if (name.equals("max")) {
4526          this.max = TypeConvertor.castToString(value); // StringType
4527        } else if (name.equals("type")) {
4528          this.type = TypeConvertor.castToString(value); // StringType
4529        } else if (name.equals("defaultValue[x]")) {
4530          this.defaultValue = TypeConvertor.castToType(value); // DataType
4531        } else if (name.equals("element")) {
4532          this.element = TypeConvertor.castToString(value); // StringType
4533        } else if (name.equals("listMode")) {
4534          value = new StructureMapSourceListModeEnumFactory().fromType(TypeConvertor.castToCode(value));
4535          this.listMode = (Enumeration) value; // Enumeration<StructureMapSourceListMode>
4536        } else if (name.equals("variable")) {
4537          this.variable = TypeConvertor.castToId(value); // IdType
4538        } else if (name.equals("condition")) {
4539          this.condition = TypeConvertor.castToString(value); // StringType
4540        } else if (name.equals("check")) {
4541          this.check = TypeConvertor.castToString(value); // StringType
4542        } else if (name.equals("logMessage")) {
4543          this.logMessage = TypeConvertor.castToString(value); // StringType
4544        } else
4545          return super.setProperty(name, value);
4546        return value;
4547      }
4548
4549      @Override
4550      public Base makeProperty(int hash, String name) throws FHIRException {
4551        switch (hash) {
4552        case 951530927:  return getContextElement();
4553        case 108114:  return getMinElement();
4554        case 107876:  return getMaxElement();
4555        case 3575610:  return getTypeElement();
4556        case 587922128:  return getDefaultValue();
4557        case -659125328:  return getDefaultValue();
4558        case -1662836996:  return getElementElement();
4559        case 1345445729:  return getListModeElement();
4560        case -1249586564:  return getVariableElement();
4561        case -861311717:  return getConditionElement();
4562        case 94627080:  return getCheckElement();
4563        case -1067155421:  return getLogMessageElement();
4564        default: return super.makeProperty(hash, name);
4565        }
4566
4567      }
4568
4569      @Override
4570      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4571        switch (hash) {
4572        case 951530927: /*context*/ return new String[] {"id"};
4573        case 108114: /*min*/ return new String[] {"integer"};
4574        case 107876: /*max*/ return new String[] {"string"};
4575        case 3575610: /*type*/ return new String[] {"string"};
4576        case -659125328: /*defaultValue*/ return new String[] {"base64Binary", "boolean", "canonical", "code", "date", "dateTime", "decimal", "id", "instant", "integer", "markdown", "oid", "positiveInt", "string", "time", "unsignedInt", "uri", "url", "uuid", "Address", "Age", "Annotation", "Attachment", "CodeableConcept", "Coding", "ContactPoint", "Count", "Distance", "Duration", "HumanName", "Identifier", "Money", "Period", "Quantity", "Range", "Ratio", "Reference", "SampledData", "Signature", "Timing", "ContactDetail", "Contributor", "DataRequirement", "Expression", "ParameterDefinition", "RelatedArtifact", "TriggerDefinition", "UsageContext", "Dosage", "Meta"};
4577        case -1662836996: /*element*/ return new String[] {"string"};
4578        case 1345445729: /*listMode*/ return new String[] {"code"};
4579        case -1249586564: /*variable*/ return new String[] {"id"};
4580        case -861311717: /*condition*/ return new String[] {"string"};
4581        case 94627080: /*check*/ return new String[] {"string"};
4582        case -1067155421: /*logMessage*/ return new String[] {"string"};
4583        default: return super.getTypesForProperty(hash, name);
4584        }
4585
4586      }
4587
4588      @Override
4589      public Base addChild(String name) throws FHIRException {
4590        if (name.equals("context")) {
4591          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.context");
4592        }
4593        else if (name.equals("min")) {
4594          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.min");
4595        }
4596        else if (name.equals("max")) {
4597          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.max");
4598        }
4599        else if (name.equals("type")) {
4600          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.type");
4601        }
4602        else if (name.equals("defaultValueBase64Binary")) {
4603          this.defaultValue = new Base64BinaryType();
4604          return this.defaultValue;
4605        }
4606        else if (name.equals("defaultValueBoolean")) {
4607          this.defaultValue = new BooleanType();
4608          return this.defaultValue;
4609        }
4610        else if (name.equals("defaultValueCanonical")) {
4611          this.defaultValue = new CanonicalType();
4612          return this.defaultValue;
4613        }
4614        else if (name.equals("defaultValueCode")) {
4615          this.defaultValue = new CodeType();
4616          return this.defaultValue;
4617        }
4618        else if (name.equals("defaultValueDate")) {
4619          this.defaultValue = new DateType();
4620          return this.defaultValue;
4621        }
4622        else if (name.equals("defaultValueDateTime")) {
4623          this.defaultValue = new DateTimeType();
4624          return this.defaultValue;
4625        }
4626        else if (name.equals("defaultValueDecimal")) {
4627          this.defaultValue = new DecimalType();
4628          return this.defaultValue;
4629        }
4630        else if (name.equals("defaultValueId")) {
4631          this.defaultValue = new IdType();
4632          return this.defaultValue;
4633        }
4634        else if (name.equals("defaultValueInstant")) {
4635          this.defaultValue = new InstantType();
4636          return this.defaultValue;
4637        }
4638        else if (name.equals("defaultValueInteger")) {
4639          this.defaultValue = new IntegerType();
4640          return this.defaultValue;
4641        }
4642        else if (name.equals("defaultValueMarkdown")) {
4643          this.defaultValue = new MarkdownType();
4644          return this.defaultValue;
4645        }
4646        else if (name.equals("defaultValueOid")) {
4647          this.defaultValue = new OidType();
4648          return this.defaultValue;
4649        }
4650        else if (name.equals("defaultValuePositiveInt")) {
4651          this.defaultValue = new PositiveIntType();
4652          return this.defaultValue;
4653        }
4654        else if (name.equals("defaultValueString")) {
4655          this.defaultValue = new StringType();
4656          return this.defaultValue;
4657        }
4658        else if (name.equals("defaultValueTime")) {
4659          this.defaultValue = new TimeType();
4660          return this.defaultValue;
4661        }
4662        else if (name.equals("defaultValueUnsignedInt")) {
4663          this.defaultValue = new UnsignedIntType();
4664          return this.defaultValue;
4665        }
4666        else if (name.equals("defaultValueUri")) {
4667          this.defaultValue = new UriType();
4668          return this.defaultValue;
4669        }
4670        else if (name.equals("defaultValueUrl")) {
4671          this.defaultValue = new UrlType();
4672          return this.defaultValue;
4673        }
4674        else if (name.equals("defaultValueUuid")) {
4675          this.defaultValue = new UuidType();
4676          return this.defaultValue;
4677        }
4678        else if (name.equals("defaultValueAddress")) {
4679          this.defaultValue = new Address();
4680          return this.defaultValue;
4681        }
4682        else if (name.equals("defaultValueAge")) {
4683          this.defaultValue = new Age();
4684          return this.defaultValue;
4685        }
4686        else if (name.equals("defaultValueAnnotation")) {
4687          this.defaultValue = new Annotation();
4688          return this.defaultValue;
4689        }
4690        else if (name.equals("defaultValueAttachment")) {
4691          this.defaultValue = new Attachment();
4692          return this.defaultValue;
4693        }
4694        else if (name.equals("defaultValueCodeableConcept")) {
4695          this.defaultValue = new CodeableConcept();
4696          return this.defaultValue;
4697        }
4698        else if (name.equals("defaultValueCoding")) {
4699          this.defaultValue = new Coding();
4700          return this.defaultValue;
4701        }
4702        else if (name.equals("defaultValueContactPoint")) {
4703          this.defaultValue = new ContactPoint();
4704          return this.defaultValue;
4705        }
4706        else if (name.equals("defaultValueCount")) {
4707          this.defaultValue = new Count();
4708          return this.defaultValue;
4709        }
4710        else if (name.equals("defaultValueDistance")) {
4711          this.defaultValue = new Distance();
4712          return this.defaultValue;
4713        }
4714        else if (name.equals("defaultValueDuration")) {
4715          this.defaultValue = new Duration();
4716          return this.defaultValue;
4717        }
4718        else if (name.equals("defaultValueHumanName")) {
4719          this.defaultValue = new HumanName();
4720          return this.defaultValue;
4721        }
4722        else if (name.equals("defaultValueIdentifier")) {
4723          this.defaultValue = new Identifier();
4724          return this.defaultValue;
4725        }
4726        else if (name.equals("defaultValueMoney")) {
4727          this.defaultValue = new Money();
4728          return this.defaultValue;
4729        }
4730        else if (name.equals("defaultValuePeriod")) {
4731          this.defaultValue = new Period();
4732          return this.defaultValue;
4733        }
4734        else if (name.equals("defaultValueQuantity")) {
4735          this.defaultValue = new Quantity();
4736          return this.defaultValue;
4737        }
4738        else if (name.equals("defaultValueRange")) {
4739          this.defaultValue = new Range();
4740          return this.defaultValue;
4741        }
4742        else if (name.equals("defaultValueRatio")) {
4743          this.defaultValue = new Ratio();
4744          return this.defaultValue;
4745        }
4746        else if (name.equals("defaultValueReference")) {
4747          this.defaultValue = new Reference();
4748          return this.defaultValue;
4749        }
4750        else if (name.equals("defaultValueSampledData")) {
4751          this.defaultValue = new SampledData();
4752          return this.defaultValue;
4753        }
4754        else if (name.equals("defaultValueSignature")) {
4755          this.defaultValue = new Signature();
4756          return this.defaultValue;
4757        }
4758        else if (name.equals("defaultValueTiming")) {
4759          this.defaultValue = new Timing();
4760          return this.defaultValue;
4761        }
4762        else if (name.equals("defaultValueContactDetail")) {
4763          this.defaultValue = new ContactDetail();
4764          return this.defaultValue;
4765        }
4766        else if (name.equals("defaultValueContributor")) {
4767          this.defaultValue = new Contributor();
4768          return this.defaultValue;
4769        }
4770        else if (name.equals("defaultValueDataRequirement")) {
4771          this.defaultValue = new DataRequirement();
4772          return this.defaultValue;
4773        }
4774        else if (name.equals("defaultValueExpression")) {
4775          this.defaultValue = new Expression();
4776          return this.defaultValue;
4777        }
4778        else if (name.equals("defaultValueParameterDefinition")) {
4779          this.defaultValue = new ParameterDefinition();
4780          return this.defaultValue;
4781        }
4782        else if (name.equals("defaultValueRelatedArtifact")) {
4783          this.defaultValue = new RelatedArtifact();
4784          return this.defaultValue;
4785        }
4786        else if (name.equals("defaultValueTriggerDefinition")) {
4787          this.defaultValue = new TriggerDefinition();
4788          return this.defaultValue;
4789        }
4790        else if (name.equals("defaultValueUsageContext")) {
4791          this.defaultValue = new UsageContext();
4792          return this.defaultValue;
4793        }
4794        else if (name.equals("defaultValueDosage")) {
4795          this.defaultValue = new Dosage();
4796          return this.defaultValue;
4797        }
4798        else if (name.equals("defaultValueMeta")) {
4799          this.defaultValue = new Meta();
4800          return this.defaultValue;
4801        }
4802        else if (name.equals("element")) {
4803          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.element");
4804        }
4805        else if (name.equals("listMode")) {
4806          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.listMode");
4807        }
4808        else if (name.equals("variable")) {
4809          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.variable");
4810        }
4811        else if (name.equals("condition")) {
4812          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.condition");
4813        }
4814        else if (name.equals("check")) {
4815          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.check");
4816        }
4817        else if (name.equals("logMessage")) {
4818          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.source.logMessage");
4819        }
4820        else
4821          return super.addChild(name);
4822      }
4823
4824      public StructureMapGroupRuleSourceComponent copy() {
4825        StructureMapGroupRuleSourceComponent dst = new StructureMapGroupRuleSourceComponent();
4826        copyValues(dst);
4827        return dst;
4828      }
4829
4830      public void copyValues(StructureMapGroupRuleSourceComponent dst) {
4831        super.copyValues(dst);
4832        dst.context = context == null ? null : context.copy();
4833        dst.min = min == null ? null : min.copy();
4834        dst.max = max == null ? null : max.copy();
4835        dst.type = type == null ? null : type.copy();
4836        dst.defaultValue = defaultValue == null ? null : defaultValue.copy();
4837        dst.element = element == null ? null : element.copy();
4838        dst.listMode = listMode == null ? null : listMode.copy();
4839        dst.variable = variable == null ? null : variable.copy();
4840        dst.condition = condition == null ? null : condition.copy();
4841        dst.check = check == null ? null : check.copy();
4842        dst.logMessage = logMessage == null ? null : logMessage.copy();
4843      }
4844
4845      @Override
4846      public boolean equalsDeep(Base other_) {
4847        if (!super.equalsDeep(other_))
4848          return false;
4849        if (!(other_ instanceof StructureMapGroupRuleSourceComponent))
4850          return false;
4851        StructureMapGroupRuleSourceComponent o = (StructureMapGroupRuleSourceComponent) other_;
4852        return compareDeep(context, o.context, true) && compareDeep(min, o.min, true) && compareDeep(max, o.max, true)
4853           && compareDeep(type, o.type, true) && compareDeep(defaultValue, o.defaultValue, true) && compareDeep(element, o.element, true)
4854           && compareDeep(listMode, o.listMode, true) && compareDeep(variable, o.variable, true) && compareDeep(condition, o.condition, true)
4855           && compareDeep(check, o.check, true) && compareDeep(logMessage, o.logMessage, true);
4856      }
4857
4858      @Override
4859      public boolean equalsShallow(Base other_) {
4860        if (!super.equalsShallow(other_))
4861          return false;
4862        if (!(other_ instanceof StructureMapGroupRuleSourceComponent))
4863          return false;
4864        StructureMapGroupRuleSourceComponent o = (StructureMapGroupRuleSourceComponent) other_;
4865        return compareValues(context, o.context, true) && compareValues(min, o.min, true) && compareValues(max, o.max, true)
4866           && compareValues(type, o.type, true) && compareValues(element, o.element, true) && compareValues(listMode, o.listMode, true)
4867           && compareValues(variable, o.variable, true) && compareValues(condition, o.condition, true) && compareValues(check, o.check, true)
4868           && compareValues(logMessage, o.logMessage, true);
4869      }
4870
4871      public boolean isEmpty() {
4872        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(context, min, max, type
4873          , defaultValue, element, listMode, variable, condition, check, logMessage);
4874      }
4875
4876  public String fhirType() {
4877    return "StructureMap.group.rule.source";
4878
4879  }
4880
4881// added from java-adornments.txt:
4882public String toString() {
4883    return StructureMapUtilities.sourceToString(this);
4884  }
4885// end addition
4886  }
4887
4888    @Block()
4889    public static class StructureMapGroupRuleTargetComponent extends BackboneElement implements IBaseBackboneElement {
4890        /**
4891         * Type or variable this rule applies to.
4892         */
4893        @Child(name = "context", type = {IdType.class}, order=1, min=0, max=1, modifier=false, summary=true)
4894        @Description(shortDefinition="Type or variable this rule applies to", formalDefinition="Type or variable this rule applies to." )
4895        protected IdType context;
4896
4897        /**
4898         * How to interpret the context.
4899         */
4900        @Child(name = "contextType", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
4901        @Description(shortDefinition="type | variable", formalDefinition="How to interpret the context." )
4902        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/map-context-type")
4903        protected Enumeration<StructureMapContextType> contextType;
4904
4905        /**
4906         * Field to create in the context.
4907         */
4908        @Child(name = "element", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
4909        @Description(shortDefinition="Field to create in the context", formalDefinition="Field to create in the context." )
4910        protected StringType element;
4911
4912        /**
4913         * Named context for field, if desired, and a field is specified.
4914         */
4915        @Child(name = "variable", type = {IdType.class}, order=4, min=0, max=1, modifier=false, summary=true)
4916        @Description(shortDefinition="Named context for field, if desired, and a field is specified", formalDefinition="Named context for field, if desired, and a field is specified." )
4917        protected IdType variable;
4918
4919        /**
4920         * If field is a list, how to manage the list.
4921         */
4922        @Child(name = "listMode", type = {CodeType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4923        @Description(shortDefinition="first | share | last | collate", formalDefinition="If field is a list, how to manage the list." )
4924        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/map-target-list-mode")
4925        protected List<Enumeration<StructureMapTargetListMode>> listMode;
4926
4927        /**
4928         * Internal rule reference for shared list items.
4929         */
4930        @Child(name = "listRuleId", type = {IdType.class}, order=6, min=0, max=1, modifier=false, summary=true)
4931        @Description(shortDefinition="Internal rule reference for shared list items", formalDefinition="Internal rule reference for shared list items." )
4932        protected IdType listRuleId;
4933
4934        /**
4935         * How the data is copied / created.
4936         */
4937        @Child(name = "transform", type = {CodeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
4938        @Description(shortDefinition="create | copy +", formalDefinition="How the data is copied / created." )
4939        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/map-transform")
4940        protected Enumeration<StructureMapTransform> transform;
4941
4942        /**
4943         * Parameters to the transform.
4944         */
4945        @Child(name = "parameter", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4946        @Description(shortDefinition="Parameters to the transform", formalDefinition="Parameters to the transform." )
4947        protected List<StructureMapGroupRuleTargetParameterComponent> parameter;
4948
4949        private static final long serialVersionUID = -1441766429L;
4950
4951    /**
4952     * Constructor
4953     */
4954      public StructureMapGroupRuleTargetComponent() {
4955        super();
4956      }
4957
4958        /**
4959         * @return {@link #context} (Type or variable this rule applies to.). This is the underlying object with id, value and extensions. The accessor "getContext" gives direct access to the value
4960         */
4961        public IdType getContextElement() { 
4962          if (this.context == null)
4963            if (Configuration.errorOnAutoCreate())
4964              throw new Error("Attempt to auto-create StructureMapGroupRuleTargetComponent.context");
4965            else if (Configuration.doAutoCreate())
4966              this.context = new IdType(); // bb
4967          return this.context;
4968        }
4969
4970        public boolean hasContextElement() { 
4971          return this.context != null && !this.context.isEmpty();
4972        }
4973
4974        public boolean hasContext() { 
4975          return this.context != null && !this.context.isEmpty();
4976        }
4977
4978        /**
4979         * @param value {@link #context} (Type or variable this rule applies to.). This is the underlying object with id, value and extensions. The accessor "getContext" gives direct access to the value
4980         */
4981        public StructureMapGroupRuleTargetComponent setContextElement(IdType value) { 
4982          this.context = value;
4983          return this;
4984        }
4985
4986        /**
4987         * @return Type or variable this rule applies to.
4988         */
4989        public String getContext() { 
4990          return this.context == null ? null : this.context.getValue();
4991        }
4992
4993        /**
4994         * @param value Type or variable this rule applies to.
4995         */
4996        public StructureMapGroupRuleTargetComponent setContext(String value) { 
4997          if (Utilities.noString(value))
4998            this.context = null;
4999          else {
5000            if (this.context == null)
5001              this.context = new IdType();
5002            this.context.setValue(value);
5003          }
5004          return this;
5005        }
5006
5007        /**
5008         * @return {@link #contextType} (How to interpret the context.). This is the underlying object with id, value and extensions. The accessor "getContextType" gives direct access to the value
5009         */
5010        public Enumeration<StructureMapContextType> getContextTypeElement() { 
5011          if (this.contextType == null)
5012            if (Configuration.errorOnAutoCreate())
5013              throw new Error("Attempt to auto-create StructureMapGroupRuleTargetComponent.contextType");
5014            else if (Configuration.doAutoCreate())
5015              this.contextType = new Enumeration<StructureMapContextType>(new StructureMapContextTypeEnumFactory()); // bb
5016          return this.contextType;
5017        }
5018
5019        public boolean hasContextTypeElement() { 
5020          return this.contextType != null && !this.contextType.isEmpty();
5021        }
5022
5023        public boolean hasContextType() { 
5024          return this.contextType != null && !this.contextType.isEmpty();
5025        }
5026
5027        /**
5028         * @param value {@link #contextType} (How to interpret the context.). This is the underlying object with id, value and extensions. The accessor "getContextType" gives direct access to the value
5029         */
5030        public StructureMapGroupRuleTargetComponent setContextTypeElement(Enumeration<StructureMapContextType> value) { 
5031          this.contextType = value;
5032          return this;
5033        }
5034
5035        /**
5036         * @return How to interpret the context.
5037         */
5038        public StructureMapContextType getContextType() { 
5039          return this.contextType == null ? null : this.contextType.getValue();
5040        }
5041
5042        /**
5043         * @param value How to interpret the context.
5044         */
5045        public StructureMapGroupRuleTargetComponent setContextType(StructureMapContextType value) { 
5046          if (value == null)
5047            this.contextType = null;
5048          else {
5049            if (this.contextType == null)
5050              this.contextType = new Enumeration<StructureMapContextType>(new StructureMapContextTypeEnumFactory());
5051            this.contextType.setValue(value);
5052          }
5053          return this;
5054        }
5055
5056        /**
5057         * @return {@link #element} (Field to create in the context.). This is the underlying object with id, value and extensions. The accessor "getElement" gives direct access to the value
5058         */
5059        public StringType getElementElement() { 
5060          if (this.element == null)
5061            if (Configuration.errorOnAutoCreate())
5062              throw new Error("Attempt to auto-create StructureMapGroupRuleTargetComponent.element");
5063            else if (Configuration.doAutoCreate())
5064              this.element = new StringType(); // bb
5065          return this.element;
5066        }
5067
5068        public boolean hasElementElement() { 
5069          return this.element != null && !this.element.isEmpty();
5070        }
5071
5072        public boolean hasElement() { 
5073          return this.element != null && !this.element.isEmpty();
5074        }
5075
5076        /**
5077         * @param value {@link #element} (Field to create in the context.). This is the underlying object with id, value and extensions. The accessor "getElement" gives direct access to the value
5078         */
5079        public StructureMapGroupRuleTargetComponent setElementElement(StringType value) { 
5080          this.element = value;
5081          return this;
5082        }
5083
5084        /**
5085         * @return Field to create in the context.
5086         */
5087        public String getElement() { 
5088          return this.element == null ? null : this.element.getValue();
5089        }
5090
5091        /**
5092         * @param value Field to create in the context.
5093         */
5094        public StructureMapGroupRuleTargetComponent setElement(String value) { 
5095          if (Utilities.noString(value))
5096            this.element = null;
5097          else {
5098            if (this.element == null)
5099              this.element = new StringType();
5100            this.element.setValue(value);
5101          }
5102          return this;
5103        }
5104
5105        /**
5106         * @return {@link #variable} (Named context for field, if desired, and a field is specified.). This is the underlying object with id, value and extensions. The accessor "getVariable" gives direct access to the value
5107         */
5108        public IdType getVariableElement() { 
5109          if (this.variable == null)
5110            if (Configuration.errorOnAutoCreate())
5111              throw new Error("Attempt to auto-create StructureMapGroupRuleTargetComponent.variable");
5112            else if (Configuration.doAutoCreate())
5113              this.variable = new IdType(); // bb
5114          return this.variable;
5115        }
5116
5117        public boolean hasVariableElement() { 
5118          return this.variable != null && !this.variable.isEmpty();
5119        }
5120
5121        public boolean hasVariable() { 
5122          return this.variable != null && !this.variable.isEmpty();
5123        }
5124
5125        /**
5126         * @param value {@link #variable} (Named context for field, if desired, and a field is specified.). This is the underlying object with id, value and extensions. The accessor "getVariable" gives direct access to the value
5127         */
5128        public StructureMapGroupRuleTargetComponent setVariableElement(IdType value) { 
5129          this.variable = value;
5130          return this;
5131        }
5132
5133        /**
5134         * @return Named context for field, if desired, and a field is specified.
5135         */
5136        public String getVariable() { 
5137          return this.variable == null ? null : this.variable.getValue();
5138        }
5139
5140        /**
5141         * @param value Named context for field, if desired, and a field is specified.
5142         */
5143        public StructureMapGroupRuleTargetComponent setVariable(String value) { 
5144          if (Utilities.noString(value))
5145            this.variable = null;
5146          else {
5147            if (this.variable == null)
5148              this.variable = new IdType();
5149            this.variable.setValue(value);
5150          }
5151          return this;
5152        }
5153
5154        /**
5155         * @return {@link #listMode} (If field is a list, how to manage the list.)
5156         */
5157        public List<Enumeration<StructureMapTargetListMode>> getListMode() { 
5158          if (this.listMode == null)
5159            this.listMode = new ArrayList<Enumeration<StructureMapTargetListMode>>();
5160          return this.listMode;
5161        }
5162
5163        /**
5164         * @return Returns a reference to <code>this</code> for easy method chaining
5165         */
5166        public StructureMapGroupRuleTargetComponent setListMode(List<Enumeration<StructureMapTargetListMode>> theListMode) { 
5167          this.listMode = theListMode;
5168          return this;
5169        }
5170
5171        public boolean hasListMode() { 
5172          if (this.listMode == null)
5173            return false;
5174          for (Enumeration<StructureMapTargetListMode> item : this.listMode)
5175            if (!item.isEmpty())
5176              return true;
5177          return false;
5178        }
5179
5180        /**
5181         * @return {@link #listMode} (If field is a list, how to manage the list.)
5182         */
5183        public Enumeration<StructureMapTargetListMode> addListModeElement() {//2 
5184          Enumeration<StructureMapTargetListMode> t = new Enumeration<StructureMapTargetListMode>(new StructureMapTargetListModeEnumFactory());
5185          if (this.listMode == null)
5186            this.listMode = new ArrayList<Enumeration<StructureMapTargetListMode>>();
5187          this.listMode.add(t);
5188          return t;
5189        }
5190
5191        /**
5192         * @param value {@link #listMode} (If field is a list, how to manage the list.)
5193         */
5194        public StructureMapGroupRuleTargetComponent addListMode(StructureMapTargetListMode value) { //1
5195          Enumeration<StructureMapTargetListMode> t = new Enumeration<StructureMapTargetListMode>(new StructureMapTargetListModeEnumFactory());
5196          t.setValue(value);
5197          if (this.listMode == null)
5198            this.listMode = new ArrayList<Enumeration<StructureMapTargetListMode>>();
5199          this.listMode.add(t);
5200          return this;
5201        }
5202
5203        /**
5204         * @param value {@link #listMode} (If field is a list, how to manage the list.)
5205         */
5206        public boolean hasListMode(StructureMapTargetListMode value) { 
5207          if (this.listMode == null)
5208            return false;
5209          for (Enumeration<StructureMapTargetListMode> v : this.listMode)
5210            if (v.getValue().equals(value)) // code
5211              return true;
5212          return false;
5213        }
5214
5215        /**
5216         * @return {@link #listRuleId} (Internal rule reference for shared list items.). This is the underlying object with id, value and extensions. The accessor "getListRuleId" gives direct access to the value
5217         */
5218        public IdType getListRuleIdElement() { 
5219          if (this.listRuleId == null)
5220            if (Configuration.errorOnAutoCreate())
5221              throw new Error("Attempt to auto-create StructureMapGroupRuleTargetComponent.listRuleId");
5222            else if (Configuration.doAutoCreate())
5223              this.listRuleId = new IdType(); // bb
5224          return this.listRuleId;
5225        }
5226
5227        public boolean hasListRuleIdElement() { 
5228          return this.listRuleId != null && !this.listRuleId.isEmpty();
5229        }
5230
5231        public boolean hasListRuleId() { 
5232          return this.listRuleId != null && !this.listRuleId.isEmpty();
5233        }
5234
5235        /**
5236         * @param value {@link #listRuleId} (Internal rule reference for shared list items.). This is the underlying object with id, value and extensions. The accessor "getListRuleId" gives direct access to the value
5237         */
5238        public StructureMapGroupRuleTargetComponent setListRuleIdElement(IdType value) { 
5239          this.listRuleId = value;
5240          return this;
5241        }
5242
5243        /**
5244         * @return Internal rule reference for shared list items.
5245         */
5246        public String getListRuleId() { 
5247          return this.listRuleId == null ? null : this.listRuleId.getValue();
5248        }
5249
5250        /**
5251         * @param value Internal rule reference for shared list items.
5252         */
5253        public StructureMapGroupRuleTargetComponent setListRuleId(String value) { 
5254          if (Utilities.noString(value))
5255            this.listRuleId = null;
5256          else {
5257            if (this.listRuleId == null)
5258              this.listRuleId = new IdType();
5259            this.listRuleId.setValue(value);
5260          }
5261          return this;
5262        }
5263
5264        /**
5265         * @return {@link #transform} (How the data is copied / created.). This is the underlying object with id, value and extensions. The accessor "getTransform" gives direct access to the value
5266         */
5267        public Enumeration<StructureMapTransform> getTransformElement() { 
5268          if (this.transform == null)
5269            if (Configuration.errorOnAutoCreate())
5270              throw new Error("Attempt to auto-create StructureMapGroupRuleTargetComponent.transform");
5271            else if (Configuration.doAutoCreate())
5272              this.transform = new Enumeration<StructureMapTransform>(new StructureMapTransformEnumFactory()); // bb
5273          return this.transform;
5274        }
5275
5276        public boolean hasTransformElement() { 
5277          return this.transform != null && !this.transform.isEmpty();
5278        }
5279
5280        public boolean hasTransform() { 
5281          return this.transform != null && !this.transform.isEmpty();
5282        }
5283
5284        /**
5285         * @param value {@link #transform} (How the data is copied / created.). This is the underlying object with id, value and extensions. The accessor "getTransform" gives direct access to the value
5286         */
5287        public StructureMapGroupRuleTargetComponent setTransformElement(Enumeration<StructureMapTransform> value) { 
5288          this.transform = value;
5289          return this;
5290        }
5291
5292        /**
5293         * @return How the data is copied / created.
5294         */
5295        public StructureMapTransform getTransform() { 
5296          return this.transform == null ? null : this.transform.getValue();
5297        }
5298
5299        /**
5300         * @param value How the data is copied / created.
5301         */
5302        public StructureMapGroupRuleTargetComponent setTransform(StructureMapTransform value) { 
5303          if (value == null)
5304            this.transform = null;
5305          else {
5306            if (this.transform == null)
5307              this.transform = new Enumeration<StructureMapTransform>(new StructureMapTransformEnumFactory());
5308            this.transform.setValue(value);
5309          }
5310          return this;
5311        }
5312
5313        /**
5314         * @return {@link #parameter} (Parameters to the transform.)
5315         */
5316        public List<StructureMapGroupRuleTargetParameterComponent> getParameter() { 
5317          if (this.parameter == null)
5318            this.parameter = new ArrayList<StructureMapGroupRuleTargetParameterComponent>();
5319          return this.parameter;
5320        }
5321
5322        /**
5323         * @return Returns a reference to <code>this</code> for easy method chaining
5324         */
5325        public StructureMapGroupRuleTargetComponent setParameter(List<StructureMapGroupRuleTargetParameterComponent> theParameter) { 
5326          this.parameter = theParameter;
5327          return this;
5328        }
5329
5330        public boolean hasParameter() { 
5331          if (this.parameter == null)
5332            return false;
5333          for (StructureMapGroupRuleTargetParameterComponent item : this.parameter)
5334            if (!item.isEmpty())
5335              return true;
5336          return false;
5337        }
5338
5339        public StructureMapGroupRuleTargetParameterComponent addParameter() { //3
5340          StructureMapGroupRuleTargetParameterComponent t = new StructureMapGroupRuleTargetParameterComponent();
5341          if (this.parameter == null)
5342            this.parameter = new ArrayList<StructureMapGroupRuleTargetParameterComponent>();
5343          this.parameter.add(t);
5344          return t;
5345        }
5346
5347        public StructureMapGroupRuleTargetComponent addParameter(StructureMapGroupRuleTargetParameterComponent t) { //3
5348          if (t == null)
5349            return this;
5350          if (this.parameter == null)
5351            this.parameter = new ArrayList<StructureMapGroupRuleTargetParameterComponent>();
5352          this.parameter.add(t);
5353          return this;
5354        }
5355
5356        /**
5357         * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist {3}
5358         */
5359        public StructureMapGroupRuleTargetParameterComponent getParameterFirstRep() { 
5360          if (getParameter().isEmpty()) {
5361            addParameter();
5362          }
5363          return getParameter().get(0);
5364        }
5365
5366        protected void listChildren(List<Property> children) {
5367          super.listChildren(children);
5368          children.add(new Property("context", "id", "Type or variable this rule applies to.", 0, 1, context));
5369          children.add(new Property("contextType", "code", "How to interpret the context.", 0, 1, contextType));
5370          children.add(new Property("element", "string", "Field to create in the context.", 0, 1, element));
5371          children.add(new Property("variable", "id", "Named context for field, if desired, and a field is specified.", 0, 1, variable));
5372          children.add(new Property("listMode", "code", "If field is a list, how to manage the list.", 0, java.lang.Integer.MAX_VALUE, listMode));
5373          children.add(new Property("listRuleId", "id", "Internal rule reference for shared list items.", 0, 1, listRuleId));
5374          children.add(new Property("transform", "code", "How the data is copied / created.", 0, 1, transform));
5375          children.add(new Property("parameter", "", "Parameters to the transform.", 0, java.lang.Integer.MAX_VALUE, parameter));
5376        }
5377
5378        @Override
5379        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5380          switch (_hash) {
5381          case 951530927: /*context*/  return new Property("context", "id", "Type or variable this rule applies to.", 0, 1, context);
5382          case -102839927: /*contextType*/  return new Property("contextType", "code", "How to interpret the context.", 0, 1, contextType);
5383          case -1662836996: /*element*/  return new Property("element", "string", "Field to create in the context.", 0, 1, element);
5384          case -1249586564: /*variable*/  return new Property("variable", "id", "Named context for field, if desired, and a field is specified.", 0, 1, variable);
5385          case 1345445729: /*listMode*/  return new Property("listMode", "code", "If field is a list, how to manage the list.", 0, java.lang.Integer.MAX_VALUE, listMode);
5386          case 337117045: /*listRuleId*/  return new Property("listRuleId", "id", "Internal rule reference for shared list items.", 0, 1, listRuleId);
5387          case 1052666732: /*transform*/  return new Property("transform", "code", "How the data is copied / created.", 0, 1, transform);
5388          case 1954460585: /*parameter*/  return new Property("parameter", "", "Parameters to the transform.", 0, java.lang.Integer.MAX_VALUE, parameter);
5389          default: return super.getNamedProperty(_hash, _name, _checkValid);
5390          }
5391
5392        }
5393
5394      @Override
5395      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5396        switch (hash) {
5397        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // IdType
5398        case -102839927: /*contextType*/ return this.contextType == null ? new Base[0] : new Base[] {this.contextType}; // Enumeration<StructureMapContextType>
5399        case -1662836996: /*element*/ return this.element == null ? new Base[0] : new Base[] {this.element}; // StringType
5400        case -1249586564: /*variable*/ return this.variable == null ? new Base[0] : new Base[] {this.variable}; // IdType
5401        case 1345445729: /*listMode*/ return this.listMode == null ? new Base[0] : this.listMode.toArray(new Base[this.listMode.size()]); // Enumeration<StructureMapTargetListMode>
5402        case 337117045: /*listRuleId*/ return this.listRuleId == null ? new Base[0] : new Base[] {this.listRuleId}; // IdType
5403        case 1052666732: /*transform*/ return this.transform == null ? new Base[0] : new Base[] {this.transform}; // Enumeration<StructureMapTransform>
5404        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // StructureMapGroupRuleTargetParameterComponent
5405        default: return super.getProperty(hash, name, checkValid);
5406        }
5407
5408      }
5409
5410      @Override
5411      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5412        switch (hash) {
5413        case 951530927: // context
5414          this.context = TypeConvertor.castToId(value); // IdType
5415          return value;
5416        case -102839927: // contextType
5417          value = new StructureMapContextTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
5418          this.contextType = (Enumeration) value; // Enumeration<StructureMapContextType>
5419          return value;
5420        case -1662836996: // element
5421          this.element = TypeConvertor.castToString(value); // StringType
5422          return value;
5423        case -1249586564: // variable
5424          this.variable = TypeConvertor.castToId(value); // IdType
5425          return value;
5426        case 1345445729: // listMode
5427          value = new StructureMapTargetListModeEnumFactory().fromType(TypeConvertor.castToCode(value));
5428          this.getListMode().add((Enumeration) value); // Enumeration<StructureMapTargetListMode>
5429          return value;
5430        case 337117045: // listRuleId
5431          this.listRuleId = TypeConvertor.castToId(value); // IdType
5432          return value;
5433        case 1052666732: // transform
5434          value = new StructureMapTransformEnumFactory().fromType(TypeConvertor.castToCode(value));
5435          this.transform = (Enumeration) value; // Enumeration<StructureMapTransform>
5436          return value;
5437        case 1954460585: // parameter
5438          this.getParameter().add((StructureMapGroupRuleTargetParameterComponent) value); // StructureMapGroupRuleTargetParameterComponent
5439          return value;
5440        default: return super.setProperty(hash, name, value);
5441        }
5442
5443      }
5444
5445      @Override
5446      public Base setProperty(String name, Base value) throws FHIRException {
5447        if (name.equals("context")) {
5448          this.context = TypeConvertor.castToId(value); // IdType
5449        } else if (name.equals("contextType")) {
5450          value = new StructureMapContextTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
5451          this.contextType = (Enumeration) value; // Enumeration<StructureMapContextType>
5452        } else if (name.equals("element")) {
5453          this.element = TypeConvertor.castToString(value); // StringType
5454        } else if (name.equals("variable")) {
5455          this.variable = TypeConvertor.castToId(value); // IdType
5456        } else if (name.equals("listMode")) {
5457          value = new StructureMapTargetListModeEnumFactory().fromType(TypeConvertor.castToCode(value));
5458          this.getListMode().add((Enumeration) value);
5459        } else if (name.equals("listRuleId")) {
5460          this.listRuleId = TypeConvertor.castToId(value); // IdType
5461        } else if (name.equals("transform")) {
5462          value = new StructureMapTransformEnumFactory().fromType(TypeConvertor.castToCode(value));
5463          this.transform = (Enumeration) value; // Enumeration<StructureMapTransform>
5464        } else if (name.equals("parameter")) {
5465          this.getParameter().add((StructureMapGroupRuleTargetParameterComponent) value);
5466        } else
5467          return super.setProperty(name, value);
5468        return value;
5469      }
5470
5471      @Override
5472      public Base makeProperty(int hash, String name) throws FHIRException {
5473        switch (hash) {
5474        case 951530927:  return getContextElement();
5475        case -102839927:  return getContextTypeElement();
5476        case -1662836996:  return getElementElement();
5477        case -1249586564:  return getVariableElement();
5478        case 1345445729:  return addListModeElement();
5479        case 337117045:  return getListRuleIdElement();
5480        case 1052666732:  return getTransformElement();
5481        case 1954460585:  return addParameter(); 
5482        default: return super.makeProperty(hash, name);
5483        }
5484
5485      }
5486
5487      @Override
5488      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5489        switch (hash) {
5490        case 951530927: /*context*/ return new String[] {"id"};
5491        case -102839927: /*contextType*/ return new String[] {"code"};
5492        case -1662836996: /*element*/ return new String[] {"string"};
5493        case -1249586564: /*variable*/ return new String[] {"id"};
5494        case 1345445729: /*listMode*/ return new String[] {"code"};
5495        case 337117045: /*listRuleId*/ return new String[] {"id"};
5496        case 1052666732: /*transform*/ return new String[] {"code"};
5497        case 1954460585: /*parameter*/ return new String[] {};
5498        default: return super.getTypesForProperty(hash, name);
5499        }
5500
5501      }
5502
5503      @Override
5504      public Base addChild(String name) throws FHIRException {
5505        if (name.equals("context")) {
5506          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.target.context");
5507        }
5508        else if (name.equals("contextType")) {
5509          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.target.contextType");
5510        }
5511        else if (name.equals("element")) {
5512          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.target.element");
5513        }
5514        else if (name.equals("variable")) {
5515          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.target.variable");
5516        }
5517        else if (name.equals("listMode")) {
5518          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.target.listMode");
5519        }
5520        else if (name.equals("listRuleId")) {
5521          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.target.listRuleId");
5522        }
5523        else if (name.equals("transform")) {
5524          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.target.transform");
5525        }
5526        else if (name.equals("parameter")) {
5527          return addParameter();
5528        }
5529        else
5530          return super.addChild(name);
5531      }
5532
5533      public StructureMapGroupRuleTargetComponent copy() {
5534        StructureMapGroupRuleTargetComponent dst = new StructureMapGroupRuleTargetComponent();
5535        copyValues(dst);
5536        return dst;
5537      }
5538
5539      public void copyValues(StructureMapGroupRuleTargetComponent dst) {
5540        super.copyValues(dst);
5541        dst.context = context == null ? null : context.copy();
5542        dst.contextType = contextType == null ? null : contextType.copy();
5543        dst.element = element == null ? null : element.copy();
5544        dst.variable = variable == null ? null : variable.copy();
5545        if (listMode != null) {
5546          dst.listMode = new ArrayList<Enumeration<StructureMapTargetListMode>>();
5547          for (Enumeration<StructureMapTargetListMode> i : listMode)
5548            dst.listMode.add(i.copy());
5549        };
5550        dst.listRuleId = listRuleId == null ? null : listRuleId.copy();
5551        dst.transform = transform == null ? null : transform.copy();
5552        if (parameter != null) {
5553          dst.parameter = new ArrayList<StructureMapGroupRuleTargetParameterComponent>();
5554          for (StructureMapGroupRuleTargetParameterComponent i : parameter)
5555            dst.parameter.add(i.copy());
5556        };
5557      }
5558
5559      @Override
5560      public boolean equalsDeep(Base other_) {
5561        if (!super.equalsDeep(other_))
5562          return false;
5563        if (!(other_ instanceof StructureMapGroupRuleTargetComponent))
5564          return false;
5565        StructureMapGroupRuleTargetComponent o = (StructureMapGroupRuleTargetComponent) other_;
5566        return compareDeep(context, o.context, true) && compareDeep(contextType, o.contextType, true) && compareDeep(element, o.element, true)
5567           && compareDeep(variable, o.variable, true) && compareDeep(listMode, o.listMode, true) && compareDeep(listRuleId, o.listRuleId, true)
5568           && compareDeep(transform, o.transform, true) && compareDeep(parameter, o.parameter, true);
5569      }
5570
5571      @Override
5572      public boolean equalsShallow(Base other_) {
5573        if (!super.equalsShallow(other_))
5574          return false;
5575        if (!(other_ instanceof StructureMapGroupRuleTargetComponent))
5576          return false;
5577        StructureMapGroupRuleTargetComponent o = (StructureMapGroupRuleTargetComponent) other_;
5578        return compareValues(context, o.context, true) && compareValues(contextType, o.contextType, true) && compareValues(element, o.element, true)
5579           && compareValues(variable, o.variable, true) && compareValues(listMode, o.listMode, true) && compareValues(listRuleId, o.listRuleId, true)
5580           && compareValues(transform, o.transform, true);
5581      }
5582
5583      public boolean isEmpty() {
5584        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(context, contextType, element
5585          , variable, listMode, listRuleId, transform, parameter);
5586      }
5587
5588  public String fhirType() {
5589    return "StructureMap.group.rule.target";
5590
5591  }
5592
5593// added from java-adornments.txt:
5594public String toString() {
5595    return StructureMapUtilities.targetToString(this);
5596  }
5597// end addition
5598  }
5599
5600    @Block()
5601    public static class StructureMapGroupRuleTargetParameterComponent extends BackboneElement implements IBaseBackboneElement {
5602        /**
5603         * Parameter value - variable or literal.
5604         */
5605        @Child(name = "value", type = {IdType.class, StringType.class, BooleanType.class, IntegerType.class, DecimalType.class}, order=1, min=1, max=1, modifier=false, summary=true)
5606        @Description(shortDefinition="Parameter value - variable or literal", formalDefinition="Parameter value - variable or literal." )
5607        protected DataType value;
5608
5609        private static final long serialVersionUID = -1135414639L;
5610
5611    /**
5612     * Constructor
5613     */
5614      public StructureMapGroupRuleTargetParameterComponent() {
5615        super();
5616      }
5617
5618    /**
5619     * Constructor
5620     */
5621      public StructureMapGroupRuleTargetParameterComponent(DataType value) {
5622        super();
5623        this.setValue(value);
5624      }
5625
5626        /**
5627         * @return {@link #value} (Parameter value - variable or literal.)
5628         */
5629        public DataType getValue() { 
5630          return this.value;
5631        }
5632
5633        /**
5634         * @return {@link #value} (Parameter value - variable or literal.)
5635         */
5636        public IdType getValueIdType() throws FHIRException { 
5637          if (this.value == null)
5638            this.value = new IdType();
5639          if (!(this.value instanceof IdType))
5640            throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.value.getClass().getName()+" was encountered");
5641          return (IdType) this.value;
5642        }
5643
5644        public boolean hasValueIdType() { 
5645          return this != null && this.value instanceof IdType;
5646        }
5647
5648        /**
5649         * @return {@link #value} (Parameter value - variable or literal.)
5650         */
5651        public StringType getValueStringType() throws FHIRException { 
5652          if (this.value == null)
5653            this.value = new StringType();
5654          if (!(this.value instanceof StringType))
5655            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
5656          return (StringType) this.value;
5657        }
5658
5659        public boolean hasValueStringType() { 
5660          return this != null && this.value instanceof StringType;
5661        }
5662
5663        /**
5664         * @return {@link #value} (Parameter value - variable or literal.)
5665         */
5666        public BooleanType getValueBooleanType() throws FHIRException { 
5667          if (this.value == null)
5668            this.value = new BooleanType();
5669          if (!(this.value instanceof BooleanType))
5670            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
5671          return (BooleanType) this.value;
5672        }
5673
5674        public boolean hasValueBooleanType() { 
5675          return this != null && this.value instanceof BooleanType;
5676        }
5677
5678        /**
5679         * @return {@link #value} (Parameter value - variable or literal.)
5680         */
5681        public IntegerType getValueIntegerType() throws FHIRException { 
5682          if (this.value == null)
5683            this.value = new IntegerType();
5684          if (!(this.value instanceof IntegerType))
5685            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
5686          return (IntegerType) this.value;
5687        }
5688
5689        public boolean hasValueIntegerType() { 
5690          return this != null && this.value instanceof IntegerType;
5691        }
5692
5693        /**
5694         * @return {@link #value} (Parameter value - variable or literal.)
5695         */
5696        public DecimalType getValueDecimalType() throws FHIRException { 
5697          if (this.value == null)
5698            this.value = new DecimalType();
5699          if (!(this.value instanceof DecimalType))
5700            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
5701          return (DecimalType) this.value;
5702        }
5703
5704        public boolean hasValueDecimalType() { 
5705          return this != null && this.value instanceof DecimalType;
5706        }
5707
5708        public boolean hasValue() { 
5709          return this.value != null && !this.value.isEmpty();
5710        }
5711
5712        /**
5713         * @param value {@link #value} (Parameter value - variable or literal.)
5714         */
5715        public StructureMapGroupRuleTargetParameterComponent setValue(DataType value) { 
5716          if (value != null && !(value instanceof IdType || value instanceof StringType || value instanceof BooleanType || value instanceof IntegerType || value instanceof DecimalType))
5717            throw new Error("Not the right type for StructureMap.group.rule.target.parameter.value[x]: "+value.fhirType());
5718          this.value = value;
5719          return this;
5720        }
5721
5722        protected void listChildren(List<Property> children) {
5723          super.listChildren(children);
5724          children.add(new Property("value[x]", "id|string|boolean|integer|decimal", "Parameter value - variable or literal.", 0, 1, value));
5725        }
5726
5727        @Override
5728        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5729          switch (_hash) {
5730          case -1410166417: /*value[x]*/  return new Property("value[x]", "id|string|boolean|integer|decimal", "Parameter value - variable or literal.", 0, 1, value);
5731          case 111972721: /*value*/  return new Property("value[x]", "id|string|boolean|integer|decimal", "Parameter value - variable or literal.", 0, 1, value);
5732          case 231604844: /*valueId*/  return new Property("value[x]", "id", "Parameter value - variable or literal.", 0, 1, value);
5733          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "Parameter value - variable or literal.", 0, 1, value);
5734          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "Parameter value - variable or literal.", 0, 1, value);
5735          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "Parameter value - variable or literal.", 0, 1, value);
5736          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "Parameter value - variable or literal.", 0, 1, value);
5737          default: return super.getNamedProperty(_hash, _name, _checkValid);
5738          }
5739
5740        }
5741
5742      @Override
5743      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5744        switch (hash) {
5745        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
5746        default: return super.getProperty(hash, name, checkValid);
5747        }
5748
5749      }
5750
5751      @Override
5752      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5753        switch (hash) {
5754        case 111972721: // value
5755          this.value = TypeConvertor.castToType(value); // DataType
5756          return value;
5757        default: return super.setProperty(hash, name, value);
5758        }
5759
5760      }
5761
5762      @Override
5763      public Base setProperty(String name, Base value) throws FHIRException {
5764        if (name.equals("value[x]")) {
5765          this.value = TypeConvertor.castToType(value); // DataType
5766        } else
5767          return super.setProperty(name, value);
5768        return value;
5769      }
5770
5771      @Override
5772      public Base makeProperty(int hash, String name) throws FHIRException {
5773        switch (hash) {
5774        case -1410166417:  return getValue();
5775        case 111972721:  return getValue();
5776        default: return super.makeProperty(hash, name);
5777        }
5778
5779      }
5780
5781      @Override
5782      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5783        switch (hash) {
5784        case 111972721: /*value*/ return new String[] {"id", "string", "boolean", "integer", "decimal"};
5785        default: return super.getTypesForProperty(hash, name);
5786        }
5787
5788      }
5789
5790      @Override
5791      public Base addChild(String name) throws FHIRException {
5792        if (name.equals("valueId")) {
5793          this.value = new IdType();
5794          return this.value;
5795        }
5796        else if (name.equals("valueString")) {
5797          this.value = new StringType();
5798          return this.value;
5799        }
5800        else if (name.equals("valueBoolean")) {
5801          this.value = new BooleanType();
5802          return this.value;
5803        }
5804        else if (name.equals("valueInteger")) {
5805          this.value = new IntegerType();
5806          return this.value;
5807        }
5808        else if (name.equals("valueDecimal")) {
5809          this.value = new DecimalType();
5810          return this.value;
5811        }
5812        else
5813          return super.addChild(name);
5814      }
5815
5816      public StructureMapGroupRuleTargetParameterComponent copy() {
5817        StructureMapGroupRuleTargetParameterComponent dst = new StructureMapGroupRuleTargetParameterComponent();
5818        copyValues(dst);
5819        return dst;
5820      }
5821
5822      public void copyValues(StructureMapGroupRuleTargetParameterComponent dst) {
5823        super.copyValues(dst);
5824        dst.value = value == null ? null : value.copy();
5825      }
5826
5827      @Override
5828      public boolean equalsDeep(Base other_) {
5829        if (!super.equalsDeep(other_))
5830          return false;
5831        if (!(other_ instanceof StructureMapGroupRuleTargetParameterComponent))
5832          return false;
5833        StructureMapGroupRuleTargetParameterComponent o = (StructureMapGroupRuleTargetParameterComponent) other_;
5834        return compareDeep(value, o.value, true);
5835      }
5836
5837      @Override
5838      public boolean equalsShallow(Base other_) {
5839        if (!super.equalsShallow(other_))
5840          return false;
5841        if (!(other_ instanceof StructureMapGroupRuleTargetParameterComponent))
5842          return false;
5843        StructureMapGroupRuleTargetParameterComponent o = (StructureMapGroupRuleTargetParameterComponent) other_;
5844        return true;
5845      }
5846
5847      public boolean isEmpty() {
5848        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(value);
5849      }
5850
5851  public String fhirType() {
5852    return "StructureMap.group.rule.target.parameter";
5853
5854  }
5855
5856// added from java-adornments.txt:
5857public String toString() {
5858        return value == null ? "null!" : value.toString();
5859      }
5860// end addition
5861  }
5862
5863    @Block()
5864    public static class StructureMapGroupRuleDependentComponent extends BackboneElement implements IBaseBackboneElement {
5865        /**
5866         * Name of a rule or group to apply.
5867         */
5868        @Child(name = "name", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
5869        @Description(shortDefinition="Name of a rule or group to apply", formalDefinition="Name of a rule or group to apply." )
5870        protected IdType name;
5871
5872        /**
5873         * Variable to pass to the rule or group.
5874         */
5875        @Child(name = "variable", type = {StringType.class}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
5876        @Description(shortDefinition="Variable to pass to the rule or group", formalDefinition="Variable to pass to the rule or group." )
5877        protected List<StringType> variable;
5878
5879        private static final long serialVersionUID = 1021661591L;
5880
5881    /**
5882     * Constructor
5883     */
5884      public StructureMapGroupRuleDependentComponent() {
5885        super();
5886      }
5887
5888    /**
5889     * Constructor
5890     */
5891      public StructureMapGroupRuleDependentComponent(String name, String variable) {
5892        super();
5893        this.setName(name);
5894        this.addVariable(variable);
5895      }
5896
5897        /**
5898         * @return {@link #name} (Name of a rule or group to apply.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
5899         */
5900        public IdType getNameElement() { 
5901          if (this.name == null)
5902            if (Configuration.errorOnAutoCreate())
5903              throw new Error("Attempt to auto-create StructureMapGroupRuleDependentComponent.name");
5904            else if (Configuration.doAutoCreate())
5905              this.name = new IdType(); // bb
5906          return this.name;
5907        }
5908
5909        public boolean hasNameElement() { 
5910          return this.name != null && !this.name.isEmpty();
5911        }
5912
5913        public boolean hasName() { 
5914          return this.name != null && !this.name.isEmpty();
5915        }
5916
5917        /**
5918         * @param value {@link #name} (Name of a rule or group to apply.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
5919         */
5920        public StructureMapGroupRuleDependentComponent setNameElement(IdType value) { 
5921          this.name = value;
5922          return this;
5923        }
5924
5925        /**
5926         * @return Name of a rule or group to apply.
5927         */
5928        public String getName() { 
5929          return this.name == null ? null : this.name.getValue();
5930        }
5931
5932        /**
5933         * @param value Name of a rule or group to apply.
5934         */
5935        public StructureMapGroupRuleDependentComponent setName(String value) { 
5936            if (this.name == null)
5937              this.name = new IdType();
5938            this.name.setValue(value);
5939          return this;
5940        }
5941
5942        /**
5943         * @return {@link #variable} (Variable to pass to the rule or group.)
5944         */
5945        public List<StringType> getVariable() { 
5946          if (this.variable == null)
5947            this.variable = new ArrayList<StringType>();
5948          return this.variable;
5949        }
5950
5951        /**
5952         * @return Returns a reference to <code>this</code> for easy method chaining
5953         */
5954        public StructureMapGroupRuleDependentComponent setVariable(List<StringType> theVariable) { 
5955          this.variable = theVariable;
5956          return this;
5957        }
5958
5959        public boolean hasVariable() { 
5960          if (this.variable == null)
5961            return false;
5962          for (StringType item : this.variable)
5963            if (!item.isEmpty())
5964              return true;
5965          return false;
5966        }
5967
5968        /**
5969         * @return {@link #variable} (Variable to pass to the rule or group.)
5970         */
5971        public StringType addVariableElement() {//2 
5972          StringType t = new StringType();
5973          if (this.variable == null)
5974            this.variable = new ArrayList<StringType>();
5975          this.variable.add(t);
5976          return t;
5977        }
5978
5979        /**
5980         * @param value {@link #variable} (Variable to pass to the rule or group.)
5981         */
5982        public StructureMapGroupRuleDependentComponent addVariable(String value) { //1
5983          StringType t = new StringType();
5984          t.setValue(value);
5985          if (this.variable == null)
5986            this.variable = new ArrayList<StringType>();
5987          this.variable.add(t);
5988          return this;
5989        }
5990
5991        /**
5992         * @param value {@link #variable} (Variable to pass to the rule or group.)
5993         */
5994        public boolean hasVariable(String value) { 
5995          if (this.variable == null)
5996            return false;
5997          for (StringType v : this.variable)
5998            if (v.getValue().equals(value)) // string
5999              return true;
6000          return false;
6001        }
6002
6003        protected void listChildren(List<Property> children) {
6004          super.listChildren(children);
6005          children.add(new Property("name", "id", "Name of a rule or group to apply.", 0, 1, name));
6006          children.add(new Property("variable", "string", "Variable to pass to the rule or group.", 0, java.lang.Integer.MAX_VALUE, variable));
6007        }
6008
6009        @Override
6010        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6011          switch (_hash) {
6012          case 3373707: /*name*/  return new Property("name", "id", "Name of a rule or group to apply.", 0, 1, name);
6013          case -1249586564: /*variable*/  return new Property("variable", "string", "Variable to pass to the rule or group.", 0, java.lang.Integer.MAX_VALUE, variable);
6014          default: return super.getNamedProperty(_hash, _name, _checkValid);
6015          }
6016
6017        }
6018
6019      @Override
6020      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6021        switch (hash) {
6022        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // IdType
6023        case -1249586564: /*variable*/ return this.variable == null ? new Base[0] : this.variable.toArray(new Base[this.variable.size()]); // StringType
6024        default: return super.getProperty(hash, name, checkValid);
6025        }
6026
6027      }
6028
6029      @Override
6030      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6031        switch (hash) {
6032        case 3373707: // name
6033          this.name = TypeConvertor.castToId(value); // IdType
6034          return value;
6035        case -1249586564: // variable
6036          this.getVariable().add(TypeConvertor.castToString(value)); // StringType
6037          return value;
6038        default: return super.setProperty(hash, name, value);
6039        }
6040
6041      }
6042
6043      @Override
6044      public Base setProperty(String name, Base value) throws FHIRException {
6045        if (name.equals("name")) {
6046          this.name = TypeConvertor.castToId(value); // IdType
6047        } else if (name.equals("variable")) {
6048          this.getVariable().add(TypeConvertor.castToString(value));
6049        } else
6050          return super.setProperty(name, value);
6051        return value;
6052      }
6053
6054      @Override
6055      public Base makeProperty(int hash, String name) throws FHIRException {
6056        switch (hash) {
6057        case 3373707:  return getNameElement();
6058        case -1249586564:  return addVariableElement();
6059        default: return super.makeProperty(hash, name);
6060        }
6061
6062      }
6063
6064      @Override
6065      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6066        switch (hash) {
6067        case 3373707: /*name*/ return new String[] {"id"};
6068        case -1249586564: /*variable*/ return new String[] {"string"};
6069        default: return super.getTypesForProperty(hash, name);
6070        }
6071
6072      }
6073
6074      @Override
6075      public Base addChild(String name) throws FHIRException {
6076        if (name.equals("name")) {
6077          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.dependent.name");
6078        }
6079        else if (name.equals("variable")) {
6080          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.group.rule.dependent.variable");
6081        }
6082        else
6083          return super.addChild(name);
6084      }
6085
6086      public StructureMapGroupRuleDependentComponent copy() {
6087        StructureMapGroupRuleDependentComponent dst = new StructureMapGroupRuleDependentComponent();
6088        copyValues(dst);
6089        return dst;
6090      }
6091
6092      public void copyValues(StructureMapGroupRuleDependentComponent dst) {
6093        super.copyValues(dst);
6094        dst.name = name == null ? null : name.copy();
6095        if (variable != null) {
6096          dst.variable = new ArrayList<StringType>();
6097          for (StringType i : variable)
6098            dst.variable.add(i.copy());
6099        };
6100      }
6101
6102      @Override
6103      public boolean equalsDeep(Base other_) {
6104        if (!super.equalsDeep(other_))
6105          return false;
6106        if (!(other_ instanceof StructureMapGroupRuleDependentComponent))
6107          return false;
6108        StructureMapGroupRuleDependentComponent o = (StructureMapGroupRuleDependentComponent) other_;
6109        return compareDeep(name, o.name, true) && compareDeep(variable, o.variable, true);
6110      }
6111
6112      @Override
6113      public boolean equalsShallow(Base other_) {
6114        if (!super.equalsShallow(other_))
6115          return false;
6116        if (!(other_ instanceof StructureMapGroupRuleDependentComponent))
6117          return false;
6118        StructureMapGroupRuleDependentComponent o = (StructureMapGroupRuleDependentComponent) other_;
6119        return compareValues(name, o.name, true) && compareValues(variable, o.variable, true);
6120      }
6121
6122      public boolean isEmpty() {
6123        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, variable);
6124      }
6125
6126  public String fhirType() {
6127    return "StructureMap.group.rule.dependent";
6128
6129  }
6130
6131  }
6132
6133    /**
6134     * An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.
6135     */
6136    @Child(name = "url", type = {UriType.class}, order=0, min=1, max=1, modifier=false, summary=true)
6137    @Description(shortDefinition="Canonical identifier for this structure map, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers." )
6138    protected UriType url;
6139
6140    /**
6141     * A formal identifier that is used to identify this structure map when it is represented in other formats, or referenced in a specification, model, design or an instance.
6142     */
6143    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
6144    @Description(shortDefinition="Additional identifier for the structure map", formalDefinition="A formal identifier that is used to identify this structure map when it is represented in other formats, or referenced in a specification, model, design or an instance." )
6145    protected List<Identifier> identifier;
6146
6147    /**
6148     * The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
6149     */
6150    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
6151    @Description(shortDefinition="Business version of the structure map", formalDefinition="The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence." )
6152    protected StringType version;
6153
6154    /**
6155     * A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation.
6156     */
6157    @Child(name = "name", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
6158    @Description(shortDefinition="Name for this structure map (computer friendly)", formalDefinition="A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
6159    protected StringType name;
6160
6161    /**
6162     * A short, descriptive, user-friendly title for the structure map.
6163     */
6164    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
6165    @Description(shortDefinition="Name for this structure map (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the structure map." )
6166    protected StringType title;
6167
6168    /**
6169     * The status of this structure map. Enables tracking the life-cycle of the content.
6170     */
6171    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
6172    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this structure map. Enables tracking the life-cycle of the content." )
6173    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
6174    protected Enumeration<PublicationStatus> status;
6175
6176    /**
6177     * A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
6178     */
6179    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
6180    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
6181    protected BooleanType experimental;
6182
6183    /**
6184     * The date  (and optionally time) when the structure map 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 structure map changes.
6185     */
6186    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
6187    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the structure map 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 structure map changes." )
6188    protected DateTimeType date;
6189
6190    /**
6191     * The name of the organization or individual that published the structure map.
6192     */
6193    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
6194    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the structure map." )
6195    protected StringType publisher;
6196
6197    /**
6198     * Contact details to assist a user in finding and communicating with the publisher.
6199     */
6200    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
6201    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
6202    protected List<ContactDetail> contact;
6203
6204    /**
6205     * A free text natural language description of the structure map from a consumer's perspective.
6206     */
6207    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
6208    @Description(shortDefinition="Natural language description of the structure map", formalDefinition="A free text natural language description of the structure map from a consumer's perspective." )
6209    protected MarkdownType description;
6210
6211    /**
6212     * The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure map instances.
6213     */
6214    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
6215    @Description(shortDefinition="The context that the content is intended to support", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure map instances." )
6216    protected List<UsageContext> useContext;
6217
6218    /**
6219     * A legal or geographic region in which the structure map is intended to be used.
6220     */
6221    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
6222    @Description(shortDefinition="Intended jurisdiction for structure map (if applicable)", formalDefinition="A legal or geographic region in which the structure map is intended to be used." )
6223    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
6224    protected List<CodeableConcept> jurisdiction;
6225
6226    /**
6227     * Explanation of why this structure map is needed and why it has been designed as it has.
6228     */
6229    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
6230    @Description(shortDefinition="Why this structure map is defined", formalDefinition="Explanation of why this structure map is needed and why it has been designed as it has." )
6231    protected MarkdownType purpose;
6232
6233    /**
6234     * A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map.
6235     */
6236    @Child(name = "copyright", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
6237    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map." )
6238    protected MarkdownType copyright;
6239
6240    /**
6241     * A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced.
6242     */
6243    @Child(name = "structure", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
6244    @Description(shortDefinition="Structure Definition used by this map", formalDefinition="A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced." )
6245    protected List<StructureMapStructureComponent> structure;
6246
6247    /**
6248     * Other maps used by this map (canonical URLs).
6249     */
6250    @Child(name = "import", type = {CanonicalType.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
6251    @Description(shortDefinition="Other maps used by this map (canonical URLs)", formalDefinition="Other maps used by this map (canonical URLs)." )
6252    protected List<CanonicalType> import_;
6253
6254    /**
6255     * Organizes the mapping into manageable chunks for human review/ease of maintenance.
6256     */
6257    @Child(name = "group", type = {}, order=17, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
6258    @Description(shortDefinition="Named sections for reader convenience", formalDefinition="Organizes the mapping into manageable chunks for human review/ease of maintenance." )
6259    protected List<StructureMapGroupComponent> group;
6260
6261    private static final long serialVersionUID = 573973893L;
6262
6263  /**
6264   * Constructor
6265   */
6266    public StructureMap() {
6267      super();
6268    }
6269
6270  /**
6271   * Constructor
6272   */
6273    public StructureMap(String url, String name, PublicationStatus status, StructureMapGroupComponent group) {
6274      super();
6275      this.setUrl(url);
6276      this.setName(name);
6277      this.setStatus(status);
6278      this.addGroup(group);
6279    }
6280
6281    /**
6282     * @return {@link #url} (An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
6283     */
6284    public UriType getUrlElement() { 
6285      if (this.url == null)
6286        if (Configuration.errorOnAutoCreate())
6287          throw new Error("Attempt to auto-create StructureMap.url");
6288        else if (Configuration.doAutoCreate())
6289          this.url = new UriType(); // bb
6290      return this.url;
6291    }
6292
6293    public boolean hasUrlElement() { 
6294      return this.url != null && !this.url.isEmpty();
6295    }
6296
6297    public boolean hasUrl() { 
6298      return this.url != null && !this.url.isEmpty();
6299    }
6300
6301    /**
6302     * @param value {@link #url} (An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
6303     */
6304    public StructureMap setUrlElement(UriType value) { 
6305      this.url = value;
6306      return this;
6307    }
6308
6309    /**
6310     * @return An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.
6311     */
6312    public String getUrl() { 
6313      return this.url == null ? null : this.url.getValue();
6314    }
6315
6316    /**
6317     * @param value An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.
6318     */
6319    public StructureMap setUrl(String value) { 
6320        if (this.url == null)
6321          this.url = new UriType();
6322        this.url.setValue(value);
6323      return this;
6324    }
6325
6326    /**
6327     * @return {@link #identifier} (A formal identifier that is used to identify this structure map when it is represented in other formats, or referenced in a specification, model, design or an instance.)
6328     */
6329    public List<Identifier> getIdentifier() { 
6330      if (this.identifier == null)
6331        this.identifier = new ArrayList<Identifier>();
6332      return this.identifier;
6333    }
6334
6335    /**
6336     * @return Returns a reference to <code>this</code> for easy method chaining
6337     */
6338    public StructureMap setIdentifier(List<Identifier> theIdentifier) { 
6339      this.identifier = theIdentifier;
6340      return this;
6341    }
6342
6343    public boolean hasIdentifier() { 
6344      if (this.identifier == null)
6345        return false;
6346      for (Identifier item : this.identifier)
6347        if (!item.isEmpty())
6348          return true;
6349      return false;
6350    }
6351
6352    public Identifier addIdentifier() { //3
6353      Identifier t = new Identifier();
6354      if (this.identifier == null)
6355        this.identifier = new ArrayList<Identifier>();
6356      this.identifier.add(t);
6357      return t;
6358    }
6359
6360    public StructureMap addIdentifier(Identifier t) { //3
6361      if (t == null)
6362        return this;
6363      if (this.identifier == null)
6364        this.identifier = new ArrayList<Identifier>();
6365      this.identifier.add(t);
6366      return this;
6367    }
6368
6369    /**
6370     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
6371     */
6372    public Identifier getIdentifierFirstRep() { 
6373      if (getIdentifier().isEmpty()) {
6374        addIdentifier();
6375      }
6376      return getIdentifier().get(0);
6377    }
6378
6379    /**
6380     * @return {@link #version} (The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
6381     */
6382    public StringType getVersionElement() { 
6383      if (this.version == null)
6384        if (Configuration.errorOnAutoCreate())
6385          throw new Error("Attempt to auto-create StructureMap.version");
6386        else if (Configuration.doAutoCreate())
6387          this.version = new StringType(); // bb
6388      return this.version;
6389    }
6390
6391    public boolean hasVersionElement() { 
6392      return this.version != null && !this.version.isEmpty();
6393    }
6394
6395    public boolean hasVersion() { 
6396      return this.version != null && !this.version.isEmpty();
6397    }
6398
6399    /**
6400     * @param value {@link #version} (The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
6401     */
6402    public StructureMap setVersionElement(StringType value) { 
6403      this.version = value;
6404      return this;
6405    }
6406
6407    /**
6408     * @return The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
6409     */
6410    public String getVersion() { 
6411      return this.version == null ? null : this.version.getValue();
6412    }
6413
6414    /**
6415     * @param value The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
6416     */
6417    public StructureMap setVersion(String value) { 
6418      if (Utilities.noString(value))
6419        this.version = null;
6420      else {
6421        if (this.version == null)
6422          this.version = new StringType();
6423        this.version.setValue(value);
6424      }
6425      return this;
6426    }
6427
6428    /**
6429     * @return {@link #name} (A natural language name identifying the structure map. 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
6430     */
6431    public StringType getNameElement() { 
6432      if (this.name == null)
6433        if (Configuration.errorOnAutoCreate())
6434          throw new Error("Attempt to auto-create StructureMap.name");
6435        else if (Configuration.doAutoCreate())
6436          this.name = new StringType(); // bb
6437      return this.name;
6438    }
6439
6440    public boolean hasNameElement() { 
6441      return this.name != null && !this.name.isEmpty();
6442    }
6443
6444    public boolean hasName() { 
6445      return this.name != null && !this.name.isEmpty();
6446    }
6447
6448    /**
6449     * @param value {@link #name} (A natural language name identifying the structure map. 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
6450     */
6451    public StructureMap setNameElement(StringType value) { 
6452      this.name = value;
6453      return this;
6454    }
6455
6456    /**
6457     * @return A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation.
6458     */
6459    public String getName() { 
6460      return this.name == null ? null : this.name.getValue();
6461    }
6462
6463    /**
6464     * @param value A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation.
6465     */
6466    public StructureMap setName(String value) { 
6467        if (this.name == null)
6468          this.name = new StringType();
6469        this.name.setValue(value);
6470      return this;
6471    }
6472
6473    /**
6474     * @return {@link #title} (A short, descriptive, user-friendly title for the structure map.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
6475     */
6476    public StringType getTitleElement() { 
6477      if (this.title == null)
6478        if (Configuration.errorOnAutoCreate())
6479          throw new Error("Attempt to auto-create StructureMap.title");
6480        else if (Configuration.doAutoCreate())
6481          this.title = new StringType(); // bb
6482      return this.title;
6483    }
6484
6485    public boolean hasTitleElement() { 
6486      return this.title != null && !this.title.isEmpty();
6487    }
6488
6489    public boolean hasTitle() { 
6490      return this.title != null && !this.title.isEmpty();
6491    }
6492
6493    /**
6494     * @param value {@link #title} (A short, descriptive, user-friendly title for the structure map.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
6495     */
6496    public StructureMap setTitleElement(StringType value) { 
6497      this.title = value;
6498      return this;
6499    }
6500
6501    /**
6502     * @return A short, descriptive, user-friendly title for the structure map.
6503     */
6504    public String getTitle() { 
6505      return this.title == null ? null : this.title.getValue();
6506    }
6507
6508    /**
6509     * @param value A short, descriptive, user-friendly title for the structure map.
6510     */
6511    public StructureMap setTitle(String value) { 
6512      if (Utilities.noString(value))
6513        this.title = null;
6514      else {
6515        if (this.title == null)
6516          this.title = new StringType();
6517        this.title.setValue(value);
6518      }
6519      return this;
6520    }
6521
6522    /**
6523     * @return {@link #status} (The status of this structure map. 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
6524     */
6525    public Enumeration<PublicationStatus> getStatusElement() { 
6526      if (this.status == null)
6527        if (Configuration.errorOnAutoCreate())
6528          throw new Error("Attempt to auto-create StructureMap.status");
6529        else if (Configuration.doAutoCreate())
6530          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
6531      return this.status;
6532    }
6533
6534    public boolean hasStatusElement() { 
6535      return this.status != null && !this.status.isEmpty();
6536    }
6537
6538    public boolean hasStatus() { 
6539      return this.status != null && !this.status.isEmpty();
6540    }
6541
6542    /**
6543     * @param value {@link #status} (The status of this structure map. 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
6544     */
6545    public StructureMap setStatusElement(Enumeration<PublicationStatus> value) { 
6546      this.status = value;
6547      return this;
6548    }
6549
6550    /**
6551     * @return The status of this structure map. Enables tracking the life-cycle of the content.
6552     */
6553    public PublicationStatus getStatus() { 
6554      return this.status == null ? null : this.status.getValue();
6555    }
6556
6557    /**
6558     * @param value The status of this structure map. Enables tracking the life-cycle of the content.
6559     */
6560    public StructureMap setStatus(PublicationStatus value) { 
6561        if (this.status == null)
6562          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
6563        this.status.setValue(value);
6564      return this;
6565    }
6566
6567    /**
6568     * @return {@link #experimental} (A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
6569     */
6570    public BooleanType getExperimentalElement() { 
6571      if (this.experimental == null)
6572        if (Configuration.errorOnAutoCreate())
6573          throw new Error("Attempt to auto-create StructureMap.experimental");
6574        else if (Configuration.doAutoCreate())
6575          this.experimental = new BooleanType(); // bb
6576      return this.experimental;
6577    }
6578
6579    public boolean hasExperimentalElement() { 
6580      return this.experimental != null && !this.experimental.isEmpty();
6581    }
6582
6583    public boolean hasExperimental() { 
6584      return this.experimental != null && !this.experimental.isEmpty();
6585    }
6586
6587    /**
6588     * @param value {@link #experimental} (A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
6589     */
6590    public StructureMap setExperimentalElement(BooleanType value) { 
6591      this.experimental = value;
6592      return this;
6593    }
6594
6595    /**
6596     * @return A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
6597     */
6598    public boolean getExperimental() { 
6599      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
6600    }
6601
6602    /**
6603     * @param value A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
6604     */
6605    public StructureMap setExperimental(boolean value) { 
6606        if (this.experimental == null)
6607          this.experimental = new BooleanType();
6608        this.experimental.setValue(value);
6609      return this;
6610    }
6611
6612    /**
6613     * @return {@link #date} (The date  (and optionally time) when the structure map 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 structure map changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
6614     */
6615    public DateTimeType getDateElement() { 
6616      if (this.date == null)
6617        if (Configuration.errorOnAutoCreate())
6618          throw new Error("Attempt to auto-create StructureMap.date");
6619        else if (Configuration.doAutoCreate())
6620          this.date = new DateTimeType(); // bb
6621      return this.date;
6622    }
6623
6624    public boolean hasDateElement() { 
6625      return this.date != null && !this.date.isEmpty();
6626    }
6627
6628    public boolean hasDate() { 
6629      return this.date != null && !this.date.isEmpty();
6630    }
6631
6632    /**
6633     * @param value {@link #date} (The date  (and optionally time) when the structure map 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 structure map changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
6634     */
6635    public StructureMap setDateElement(DateTimeType value) { 
6636      this.date = value;
6637      return this;
6638    }
6639
6640    /**
6641     * @return The date  (and optionally time) when the structure map 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 structure map changes.
6642     */
6643    public Date getDate() { 
6644      return this.date == null ? null : this.date.getValue();
6645    }
6646
6647    /**
6648     * @param value The date  (and optionally time) when the structure map 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 structure map changes.
6649     */
6650    public StructureMap setDate(Date value) { 
6651      if (value == null)
6652        this.date = null;
6653      else {
6654        if (this.date == null)
6655          this.date = new DateTimeType();
6656        this.date.setValue(value);
6657      }
6658      return this;
6659    }
6660
6661    /**
6662     * @return {@link #publisher} (The name of the organization or individual that published the structure map.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
6663     */
6664    public StringType getPublisherElement() { 
6665      if (this.publisher == null)
6666        if (Configuration.errorOnAutoCreate())
6667          throw new Error("Attempt to auto-create StructureMap.publisher");
6668        else if (Configuration.doAutoCreate())
6669          this.publisher = new StringType(); // bb
6670      return this.publisher;
6671    }
6672
6673    public boolean hasPublisherElement() { 
6674      return this.publisher != null && !this.publisher.isEmpty();
6675    }
6676
6677    public boolean hasPublisher() { 
6678      return this.publisher != null && !this.publisher.isEmpty();
6679    }
6680
6681    /**
6682     * @param value {@link #publisher} (The name of the organization or individual that published the structure map.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
6683     */
6684    public StructureMap setPublisherElement(StringType value) { 
6685      this.publisher = value;
6686      return this;
6687    }
6688
6689    /**
6690     * @return The name of the organization or individual that published the structure map.
6691     */
6692    public String getPublisher() { 
6693      return this.publisher == null ? null : this.publisher.getValue();
6694    }
6695
6696    /**
6697     * @param value The name of the organization or individual that published the structure map.
6698     */
6699    public StructureMap setPublisher(String value) { 
6700      if (Utilities.noString(value))
6701        this.publisher = null;
6702      else {
6703        if (this.publisher == null)
6704          this.publisher = new StringType();
6705        this.publisher.setValue(value);
6706      }
6707      return this;
6708    }
6709
6710    /**
6711     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
6712     */
6713    public List<ContactDetail> getContact() { 
6714      if (this.contact == null)
6715        this.contact = new ArrayList<ContactDetail>();
6716      return this.contact;
6717    }
6718
6719    /**
6720     * @return Returns a reference to <code>this</code> for easy method chaining
6721     */
6722    public StructureMap setContact(List<ContactDetail> theContact) { 
6723      this.contact = theContact;
6724      return this;
6725    }
6726
6727    public boolean hasContact() { 
6728      if (this.contact == null)
6729        return false;
6730      for (ContactDetail item : this.contact)
6731        if (!item.isEmpty())
6732          return true;
6733      return false;
6734    }
6735
6736    public ContactDetail addContact() { //3
6737      ContactDetail t = new ContactDetail();
6738      if (this.contact == null)
6739        this.contact = new ArrayList<ContactDetail>();
6740      this.contact.add(t);
6741      return t;
6742    }
6743
6744    public StructureMap addContact(ContactDetail t) { //3
6745      if (t == null)
6746        return this;
6747      if (this.contact == null)
6748        this.contact = new ArrayList<ContactDetail>();
6749      this.contact.add(t);
6750      return this;
6751    }
6752
6753    /**
6754     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
6755     */
6756    public ContactDetail getContactFirstRep() { 
6757      if (getContact().isEmpty()) {
6758        addContact();
6759      }
6760      return getContact().get(0);
6761    }
6762
6763    /**
6764     * @return {@link #description} (A free text natural language description of the structure map from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
6765     */
6766    public MarkdownType getDescriptionElement() { 
6767      if (this.description == null)
6768        if (Configuration.errorOnAutoCreate())
6769          throw new Error("Attempt to auto-create StructureMap.description");
6770        else if (Configuration.doAutoCreate())
6771          this.description = new MarkdownType(); // bb
6772      return this.description;
6773    }
6774
6775    public boolean hasDescriptionElement() { 
6776      return this.description != null && !this.description.isEmpty();
6777    }
6778
6779    public boolean hasDescription() { 
6780      return this.description != null && !this.description.isEmpty();
6781    }
6782
6783    /**
6784     * @param value {@link #description} (A free text natural language description of the structure map from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
6785     */
6786    public StructureMap setDescriptionElement(MarkdownType value) { 
6787      this.description = value;
6788      return this;
6789    }
6790
6791    /**
6792     * @return A free text natural language description of the structure map from a consumer's perspective.
6793     */
6794    public String getDescription() { 
6795      return this.description == null ? null : this.description.getValue();
6796    }
6797
6798    /**
6799     * @param value A free text natural language description of the structure map from a consumer's perspective.
6800     */
6801    public StructureMap setDescription(String value) { 
6802      if (value == null)
6803        this.description = null;
6804      else {
6805        if (this.description == null)
6806          this.description = new MarkdownType();
6807        this.description.setValue(value);
6808      }
6809      return this;
6810    }
6811
6812    /**
6813     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure map instances.)
6814     */
6815    public List<UsageContext> getUseContext() { 
6816      if (this.useContext == null)
6817        this.useContext = new ArrayList<UsageContext>();
6818      return this.useContext;
6819    }
6820
6821    /**
6822     * @return Returns a reference to <code>this</code> for easy method chaining
6823     */
6824    public StructureMap setUseContext(List<UsageContext> theUseContext) { 
6825      this.useContext = theUseContext;
6826      return this;
6827    }
6828
6829    public boolean hasUseContext() { 
6830      if (this.useContext == null)
6831        return false;
6832      for (UsageContext item : this.useContext)
6833        if (!item.isEmpty())
6834          return true;
6835      return false;
6836    }
6837
6838    public UsageContext addUseContext() { //3
6839      UsageContext t = new UsageContext();
6840      if (this.useContext == null)
6841        this.useContext = new ArrayList<UsageContext>();
6842      this.useContext.add(t);
6843      return t;
6844    }
6845
6846    public StructureMap addUseContext(UsageContext t) { //3
6847      if (t == null)
6848        return this;
6849      if (this.useContext == null)
6850        this.useContext = new ArrayList<UsageContext>();
6851      this.useContext.add(t);
6852      return this;
6853    }
6854
6855    /**
6856     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
6857     */
6858    public UsageContext getUseContextFirstRep() { 
6859      if (getUseContext().isEmpty()) {
6860        addUseContext();
6861      }
6862      return getUseContext().get(0);
6863    }
6864
6865    /**
6866     * @return {@link #jurisdiction} (A legal or geographic region in which the structure map is intended to be used.)
6867     */
6868    public List<CodeableConcept> getJurisdiction() { 
6869      if (this.jurisdiction == null)
6870        this.jurisdiction = new ArrayList<CodeableConcept>();
6871      return this.jurisdiction;
6872    }
6873
6874    /**
6875     * @return Returns a reference to <code>this</code> for easy method chaining
6876     */
6877    public StructureMap setJurisdiction(List<CodeableConcept> theJurisdiction) { 
6878      this.jurisdiction = theJurisdiction;
6879      return this;
6880    }
6881
6882    public boolean hasJurisdiction() { 
6883      if (this.jurisdiction == null)
6884        return false;
6885      for (CodeableConcept item : this.jurisdiction)
6886        if (!item.isEmpty())
6887          return true;
6888      return false;
6889    }
6890
6891    public CodeableConcept addJurisdiction() { //3
6892      CodeableConcept t = new CodeableConcept();
6893      if (this.jurisdiction == null)
6894        this.jurisdiction = new ArrayList<CodeableConcept>();
6895      this.jurisdiction.add(t);
6896      return t;
6897    }
6898
6899    public StructureMap addJurisdiction(CodeableConcept t) { //3
6900      if (t == null)
6901        return this;
6902      if (this.jurisdiction == null)
6903        this.jurisdiction = new ArrayList<CodeableConcept>();
6904      this.jurisdiction.add(t);
6905      return this;
6906    }
6907
6908    /**
6909     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
6910     */
6911    public CodeableConcept getJurisdictionFirstRep() { 
6912      if (getJurisdiction().isEmpty()) {
6913        addJurisdiction();
6914      }
6915      return getJurisdiction().get(0);
6916    }
6917
6918    /**
6919     * @return {@link #purpose} (Explanation of why this structure map is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
6920     */
6921    public MarkdownType getPurposeElement() { 
6922      if (this.purpose == null)
6923        if (Configuration.errorOnAutoCreate())
6924          throw new Error("Attempt to auto-create StructureMap.purpose");
6925        else if (Configuration.doAutoCreate())
6926          this.purpose = new MarkdownType(); // bb
6927      return this.purpose;
6928    }
6929
6930    public boolean hasPurposeElement() { 
6931      return this.purpose != null && !this.purpose.isEmpty();
6932    }
6933
6934    public boolean hasPurpose() { 
6935      return this.purpose != null && !this.purpose.isEmpty();
6936    }
6937
6938    /**
6939     * @param value {@link #purpose} (Explanation of why this structure map is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
6940     */
6941    public StructureMap setPurposeElement(MarkdownType value) { 
6942      this.purpose = value;
6943      return this;
6944    }
6945
6946    /**
6947     * @return Explanation of why this structure map is needed and why it has been designed as it has.
6948     */
6949    public String getPurpose() { 
6950      return this.purpose == null ? null : this.purpose.getValue();
6951    }
6952
6953    /**
6954     * @param value Explanation of why this structure map is needed and why it has been designed as it has.
6955     */
6956    public StructureMap setPurpose(String value) { 
6957      if (value == null)
6958        this.purpose = null;
6959      else {
6960        if (this.purpose == null)
6961          this.purpose = new MarkdownType();
6962        this.purpose.setValue(value);
6963      }
6964      return this;
6965    }
6966
6967    /**
6968     * @return {@link #copyright} (A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
6969     */
6970    public MarkdownType getCopyrightElement() { 
6971      if (this.copyright == null)
6972        if (Configuration.errorOnAutoCreate())
6973          throw new Error("Attempt to auto-create StructureMap.copyright");
6974        else if (Configuration.doAutoCreate())
6975          this.copyright = new MarkdownType(); // bb
6976      return this.copyright;
6977    }
6978
6979    public boolean hasCopyrightElement() { 
6980      return this.copyright != null && !this.copyright.isEmpty();
6981    }
6982
6983    public boolean hasCopyright() { 
6984      return this.copyright != null && !this.copyright.isEmpty();
6985    }
6986
6987    /**
6988     * @param value {@link #copyright} (A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
6989     */
6990    public StructureMap setCopyrightElement(MarkdownType value) { 
6991      this.copyright = value;
6992      return this;
6993    }
6994
6995    /**
6996     * @return A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map.
6997     */
6998    public String getCopyright() { 
6999      return this.copyright == null ? null : this.copyright.getValue();
7000    }
7001
7002    /**
7003     * @param value A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map.
7004     */
7005    public StructureMap setCopyright(String value) { 
7006      if (value == null)
7007        this.copyright = null;
7008      else {
7009        if (this.copyright == null)
7010          this.copyright = new MarkdownType();
7011        this.copyright.setValue(value);
7012      }
7013      return this;
7014    }
7015
7016    /**
7017     * @return {@link #structure} (A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced.)
7018     */
7019    public List<StructureMapStructureComponent> getStructure() { 
7020      if (this.structure == null)
7021        this.structure = new ArrayList<StructureMapStructureComponent>();
7022      return this.structure;
7023    }
7024
7025    /**
7026     * @return Returns a reference to <code>this</code> for easy method chaining
7027     */
7028    public StructureMap setStructure(List<StructureMapStructureComponent> theStructure) { 
7029      this.structure = theStructure;
7030      return this;
7031    }
7032
7033    public boolean hasStructure() { 
7034      if (this.structure == null)
7035        return false;
7036      for (StructureMapStructureComponent item : this.structure)
7037        if (!item.isEmpty())
7038          return true;
7039      return false;
7040    }
7041
7042    public StructureMapStructureComponent addStructure() { //3
7043      StructureMapStructureComponent t = new StructureMapStructureComponent();
7044      if (this.structure == null)
7045        this.structure = new ArrayList<StructureMapStructureComponent>();
7046      this.structure.add(t);
7047      return t;
7048    }
7049
7050    public StructureMap addStructure(StructureMapStructureComponent t) { //3
7051      if (t == null)
7052        return this;
7053      if (this.structure == null)
7054        this.structure = new ArrayList<StructureMapStructureComponent>();
7055      this.structure.add(t);
7056      return this;
7057    }
7058
7059    /**
7060     * @return The first repetition of repeating field {@link #structure}, creating it if it does not already exist {3}
7061     */
7062    public StructureMapStructureComponent getStructureFirstRep() { 
7063      if (getStructure().isEmpty()) {
7064        addStructure();
7065      }
7066      return getStructure().get(0);
7067    }
7068
7069    /**
7070     * @return {@link #import_} (Other maps used by this map (canonical URLs).)
7071     */
7072    public List<CanonicalType> getImport() { 
7073      if (this.import_ == null)
7074        this.import_ = new ArrayList<CanonicalType>();
7075      return this.import_;
7076    }
7077
7078    /**
7079     * @return Returns a reference to <code>this</code> for easy method chaining
7080     */
7081    public StructureMap setImport(List<CanonicalType> theImport) { 
7082      this.import_ = theImport;
7083      return this;
7084    }
7085
7086    public boolean hasImport() { 
7087      if (this.import_ == null)
7088        return false;
7089      for (CanonicalType item : this.import_)
7090        if (!item.isEmpty())
7091          return true;
7092      return false;
7093    }
7094
7095    /**
7096     * @return {@link #import_} (Other maps used by this map (canonical URLs).)
7097     */
7098    public CanonicalType addImportElement() {//2 
7099      CanonicalType t = new CanonicalType();
7100      if (this.import_ == null)
7101        this.import_ = new ArrayList<CanonicalType>();
7102      this.import_.add(t);
7103      return t;
7104    }
7105
7106    /**
7107     * @param value {@link #import_} (Other maps used by this map (canonical URLs).)
7108     */
7109    public StructureMap addImport(String value) { //1
7110      CanonicalType t = new CanonicalType();
7111      t.setValue(value);
7112      if (this.import_ == null)
7113        this.import_ = new ArrayList<CanonicalType>();
7114      this.import_.add(t);
7115      return this;
7116    }
7117
7118    /**
7119     * @param value {@link #import_} (Other maps used by this map (canonical URLs).)
7120     */
7121    public boolean hasImport(String value) { 
7122      if (this.import_ == null)
7123        return false;
7124      for (CanonicalType v : this.import_)
7125        if (v.getValue().equals(value)) // canonical
7126          return true;
7127      return false;
7128    }
7129
7130    /**
7131     * @return {@link #group} (Organizes the mapping into manageable chunks for human review/ease of maintenance.)
7132     */
7133    public List<StructureMapGroupComponent> getGroup() { 
7134      if (this.group == null)
7135        this.group = new ArrayList<StructureMapGroupComponent>();
7136      return this.group;
7137    }
7138
7139    /**
7140     * @return Returns a reference to <code>this</code> for easy method chaining
7141     */
7142    public StructureMap setGroup(List<StructureMapGroupComponent> theGroup) { 
7143      this.group = theGroup;
7144      return this;
7145    }
7146
7147    public boolean hasGroup() { 
7148      if (this.group == null)
7149        return false;
7150      for (StructureMapGroupComponent item : this.group)
7151        if (!item.isEmpty())
7152          return true;
7153      return false;
7154    }
7155
7156    public StructureMapGroupComponent addGroup() { //3
7157      StructureMapGroupComponent t = new StructureMapGroupComponent();
7158      if (this.group == null)
7159        this.group = new ArrayList<StructureMapGroupComponent>();
7160      this.group.add(t);
7161      return t;
7162    }
7163
7164    public StructureMap addGroup(StructureMapGroupComponent t) { //3
7165      if (t == null)
7166        return this;
7167      if (this.group == null)
7168        this.group = new ArrayList<StructureMapGroupComponent>();
7169      this.group.add(t);
7170      return this;
7171    }
7172
7173    /**
7174     * @return The first repetition of repeating field {@link #group}, creating it if it does not already exist {3}
7175     */
7176    public StructureMapGroupComponent getGroupFirstRep() { 
7177      if (getGroup().isEmpty()) {
7178        addGroup();
7179      }
7180      return getGroup().get(0);
7181    }
7182
7183      protected void listChildren(List<Property> children) {
7184        super.listChildren(children);
7185        children.add(new Property("url", "uri", "An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.", 0, 1, url));
7186        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this structure map when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
7187        children.add(new Property("version", "string", "The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version));
7188        children.add(new Property("name", "string", "A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
7189        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the structure map.", 0, 1, title));
7190        children.add(new Property("status", "code", "The status of this structure map. Enables tracking the life-cycle of the content.", 0, 1, status));
7191        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
7192        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the structure map 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 structure map changes.", 0, 1, date));
7193        children.add(new Property("publisher", "string", "The name of the organization or individual that published the structure map.", 0, 1, publisher));
7194        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));
7195        children.add(new Property("description", "markdown", "A free text natural language description of the structure map from a consumer's perspective.", 0, 1, description));
7196        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure map instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
7197        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the structure map is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
7198        children.add(new Property("purpose", "markdown", "Explanation of why this structure map is needed and why it has been designed as it has.", 0, 1, purpose));
7199        children.add(new Property("copyright", "markdown", "A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map.", 0, 1, copyright));
7200        children.add(new Property("structure", "", "A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced.", 0, java.lang.Integer.MAX_VALUE, structure));
7201        children.add(new Property("import", "canonical(StructureMap)", "Other maps used by this map (canonical URLs).", 0, java.lang.Integer.MAX_VALUE, import_));
7202        children.add(new Property("group", "", "Organizes the mapping into manageable chunks for human review/ease of maintenance.", 0, java.lang.Integer.MAX_VALUE, group));
7203      }
7204
7205      @Override
7206      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7207        switch (_hash) {
7208        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.", 0, 1, url);
7209        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this structure map when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
7210        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version);
7211        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
7212        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the structure map.", 0, 1, title);
7213        case -892481550: /*status*/  return new Property("status", "code", "The status of this structure map. Enables tracking the life-cycle of the content.", 0, 1, status);
7214        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
7215        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the structure map 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 structure map changes.", 0, 1, date);
7216        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the structure map.", 0, 1, publisher);
7217        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);
7218        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the structure map from a consumer's perspective.", 0, 1, description);
7219        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure map instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
7220        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the structure map is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
7221        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this structure map is needed and why it has been designed as it has.", 0, 1, purpose);
7222        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map.", 0, 1, copyright);
7223        case 144518515: /*structure*/  return new Property("structure", "", "A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced.", 0, java.lang.Integer.MAX_VALUE, structure);
7224        case -1184795739: /*import*/  return new Property("import", "canonical(StructureMap)", "Other maps used by this map (canonical URLs).", 0, java.lang.Integer.MAX_VALUE, import_);
7225        case 98629247: /*group*/  return new Property("group", "", "Organizes the mapping into manageable chunks for human review/ease of maintenance.", 0, java.lang.Integer.MAX_VALUE, group);
7226        default: return super.getNamedProperty(_hash, _name, _checkValid);
7227        }
7228
7229      }
7230
7231      @Override
7232      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7233        switch (hash) {
7234        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
7235        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
7236        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
7237        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7238        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
7239        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
7240        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
7241        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
7242        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
7243        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
7244        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
7245        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
7246        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
7247        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
7248        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
7249        case 144518515: /*structure*/ return this.structure == null ? new Base[0] : this.structure.toArray(new Base[this.structure.size()]); // StructureMapStructureComponent
7250        case -1184795739: /*import*/ return this.import_ == null ? new Base[0] : this.import_.toArray(new Base[this.import_.size()]); // CanonicalType
7251        case 98629247: /*group*/ return this.group == null ? new Base[0] : this.group.toArray(new Base[this.group.size()]); // StructureMapGroupComponent
7252        default: return super.getProperty(hash, name, checkValid);
7253        }
7254
7255      }
7256
7257      @Override
7258      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7259        switch (hash) {
7260        case 116079: // url
7261          this.url = TypeConvertor.castToUri(value); // UriType
7262          return value;
7263        case -1618432855: // identifier
7264          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
7265          return value;
7266        case 351608024: // version
7267          this.version = TypeConvertor.castToString(value); // StringType
7268          return value;
7269        case 3373707: // name
7270          this.name = TypeConvertor.castToString(value); // StringType
7271          return value;
7272        case 110371416: // title
7273          this.title = TypeConvertor.castToString(value); // StringType
7274          return value;
7275        case -892481550: // status
7276          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
7277          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
7278          return value;
7279        case -404562712: // experimental
7280          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
7281          return value;
7282        case 3076014: // date
7283          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
7284          return value;
7285        case 1447404028: // publisher
7286          this.publisher = TypeConvertor.castToString(value); // StringType
7287          return value;
7288        case 951526432: // contact
7289          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
7290          return value;
7291        case -1724546052: // description
7292          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
7293          return value;
7294        case -669707736: // useContext
7295          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
7296          return value;
7297        case -507075711: // jurisdiction
7298          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
7299          return value;
7300        case -220463842: // purpose
7301          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
7302          return value;
7303        case 1522889671: // copyright
7304          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
7305          return value;
7306        case 144518515: // structure
7307          this.getStructure().add((StructureMapStructureComponent) value); // StructureMapStructureComponent
7308          return value;
7309        case -1184795739: // import
7310          this.getImport().add(TypeConvertor.castToCanonical(value)); // CanonicalType
7311          return value;
7312        case 98629247: // group
7313          this.getGroup().add((StructureMapGroupComponent) value); // StructureMapGroupComponent
7314          return value;
7315        default: return super.setProperty(hash, name, value);
7316        }
7317
7318      }
7319
7320      @Override
7321      public Base setProperty(String name, Base value) throws FHIRException {
7322        if (name.equals("url")) {
7323          this.url = TypeConvertor.castToUri(value); // UriType
7324        } else if (name.equals("identifier")) {
7325          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
7326        } else if (name.equals("version")) {
7327          this.version = TypeConvertor.castToString(value); // StringType
7328        } else if (name.equals("name")) {
7329          this.name = TypeConvertor.castToString(value); // StringType
7330        } else if (name.equals("title")) {
7331          this.title = TypeConvertor.castToString(value); // StringType
7332        } else if (name.equals("status")) {
7333          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
7334          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
7335        } else if (name.equals("experimental")) {
7336          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
7337        } else if (name.equals("date")) {
7338          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
7339        } else if (name.equals("publisher")) {
7340          this.publisher = TypeConvertor.castToString(value); // StringType
7341        } else if (name.equals("contact")) {
7342          this.getContact().add(TypeConvertor.castToContactDetail(value));
7343        } else if (name.equals("description")) {
7344          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
7345        } else if (name.equals("useContext")) {
7346          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
7347        } else if (name.equals("jurisdiction")) {
7348          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
7349        } else if (name.equals("purpose")) {
7350          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
7351        } else if (name.equals("copyright")) {
7352          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
7353        } else if (name.equals("structure")) {
7354          this.getStructure().add((StructureMapStructureComponent) value);
7355        } else if (name.equals("import")) {
7356          this.getImport().add(TypeConvertor.castToCanonical(value));
7357        } else if (name.equals("group")) {
7358          this.getGroup().add((StructureMapGroupComponent) value);
7359        } else
7360          return super.setProperty(name, value);
7361        return value;
7362      }
7363
7364      @Override
7365      public Base makeProperty(int hash, String name) throws FHIRException {
7366        switch (hash) {
7367        case 116079:  return getUrlElement();
7368        case -1618432855:  return addIdentifier(); 
7369        case 351608024:  return getVersionElement();
7370        case 3373707:  return getNameElement();
7371        case 110371416:  return getTitleElement();
7372        case -892481550:  return getStatusElement();
7373        case -404562712:  return getExperimentalElement();
7374        case 3076014:  return getDateElement();
7375        case 1447404028:  return getPublisherElement();
7376        case 951526432:  return addContact(); 
7377        case -1724546052:  return getDescriptionElement();
7378        case -669707736:  return addUseContext(); 
7379        case -507075711:  return addJurisdiction(); 
7380        case -220463842:  return getPurposeElement();
7381        case 1522889671:  return getCopyrightElement();
7382        case 144518515:  return addStructure(); 
7383        case -1184795739:  return addImportElement();
7384        case 98629247:  return addGroup(); 
7385        default: return super.makeProperty(hash, name);
7386        }
7387
7388      }
7389
7390      @Override
7391      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7392        switch (hash) {
7393        case 116079: /*url*/ return new String[] {"uri"};
7394        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
7395        case 351608024: /*version*/ return new String[] {"string"};
7396        case 3373707: /*name*/ return new String[] {"string"};
7397        case 110371416: /*title*/ return new String[] {"string"};
7398        case -892481550: /*status*/ return new String[] {"code"};
7399        case -404562712: /*experimental*/ return new String[] {"boolean"};
7400        case 3076014: /*date*/ return new String[] {"dateTime"};
7401        case 1447404028: /*publisher*/ return new String[] {"string"};
7402        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
7403        case -1724546052: /*description*/ return new String[] {"markdown"};
7404        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
7405        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
7406        case -220463842: /*purpose*/ return new String[] {"markdown"};
7407        case 1522889671: /*copyright*/ return new String[] {"markdown"};
7408        case 144518515: /*structure*/ return new String[] {};
7409        case -1184795739: /*import*/ return new String[] {"canonical"};
7410        case 98629247: /*group*/ return new String[] {};
7411        default: return super.getTypesForProperty(hash, name);
7412        }
7413
7414      }
7415
7416      @Override
7417      public Base addChild(String name) throws FHIRException {
7418        if (name.equals("url")) {
7419          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.url");
7420        }
7421        else if (name.equals("identifier")) {
7422          return addIdentifier();
7423        }
7424        else if (name.equals("version")) {
7425          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.version");
7426        }
7427        else if (name.equals("name")) {
7428          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.name");
7429        }
7430        else if (name.equals("title")) {
7431          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.title");
7432        }
7433        else if (name.equals("status")) {
7434          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.status");
7435        }
7436        else if (name.equals("experimental")) {
7437          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.experimental");
7438        }
7439        else if (name.equals("date")) {
7440          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.date");
7441        }
7442        else if (name.equals("publisher")) {
7443          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.publisher");
7444        }
7445        else if (name.equals("contact")) {
7446          return addContact();
7447        }
7448        else if (name.equals("description")) {
7449          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.description");
7450        }
7451        else if (name.equals("useContext")) {
7452          return addUseContext();
7453        }
7454        else if (name.equals("jurisdiction")) {
7455          return addJurisdiction();
7456        }
7457        else if (name.equals("purpose")) {
7458          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.purpose");
7459        }
7460        else if (name.equals("copyright")) {
7461          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.copyright");
7462        }
7463        else if (name.equals("structure")) {
7464          return addStructure();
7465        }
7466        else if (name.equals("import")) {
7467          throw new FHIRException("Cannot call addChild on a primitive type StructureMap.import");
7468        }
7469        else if (name.equals("group")) {
7470          return addGroup();
7471        }
7472        else
7473          return super.addChild(name);
7474      }
7475
7476  public String fhirType() {
7477    return "StructureMap";
7478
7479  }
7480
7481      public StructureMap copy() {
7482        StructureMap dst = new StructureMap();
7483        copyValues(dst);
7484        return dst;
7485      }
7486
7487      public void copyValues(StructureMap dst) {
7488        super.copyValues(dst);
7489        dst.url = url == null ? null : url.copy();
7490        if (identifier != null) {
7491          dst.identifier = new ArrayList<Identifier>();
7492          for (Identifier i : identifier)
7493            dst.identifier.add(i.copy());
7494        };
7495        dst.version = version == null ? null : version.copy();
7496        dst.name = name == null ? null : name.copy();
7497        dst.title = title == null ? null : title.copy();
7498        dst.status = status == null ? null : status.copy();
7499        dst.experimental = experimental == null ? null : experimental.copy();
7500        dst.date = date == null ? null : date.copy();
7501        dst.publisher = publisher == null ? null : publisher.copy();
7502        if (contact != null) {
7503          dst.contact = new ArrayList<ContactDetail>();
7504          for (ContactDetail i : contact)
7505            dst.contact.add(i.copy());
7506        };
7507        dst.description = description == null ? null : description.copy();
7508        if (useContext != null) {
7509          dst.useContext = new ArrayList<UsageContext>();
7510          for (UsageContext i : useContext)
7511            dst.useContext.add(i.copy());
7512        };
7513        if (jurisdiction != null) {
7514          dst.jurisdiction = new ArrayList<CodeableConcept>();
7515          for (CodeableConcept i : jurisdiction)
7516            dst.jurisdiction.add(i.copy());
7517        };
7518        dst.purpose = purpose == null ? null : purpose.copy();
7519        dst.copyright = copyright == null ? null : copyright.copy();
7520        if (structure != null) {
7521          dst.structure = new ArrayList<StructureMapStructureComponent>();
7522          for (StructureMapStructureComponent i : structure)
7523            dst.structure.add(i.copy());
7524        };
7525        if (import_ != null) {
7526          dst.import_ = new ArrayList<CanonicalType>();
7527          for (CanonicalType i : import_)
7528            dst.import_.add(i.copy());
7529        };
7530        if (group != null) {
7531          dst.group = new ArrayList<StructureMapGroupComponent>();
7532          for (StructureMapGroupComponent i : group)
7533            dst.group.add(i.copy());
7534        };
7535      }
7536
7537      protected StructureMap typedCopy() {
7538        return copy();
7539      }
7540
7541      @Override
7542      public boolean equalsDeep(Base other_) {
7543        if (!super.equalsDeep(other_))
7544          return false;
7545        if (!(other_ instanceof StructureMap))
7546          return false;
7547        StructureMap o = (StructureMap) other_;
7548        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
7549           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
7550           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
7551           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
7552           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true)
7553           && compareDeep(structure, o.structure, true) && compareDeep(import_, o.import_, true) && compareDeep(group, o.group, true)
7554          ;
7555      }
7556
7557      @Override
7558      public boolean equalsShallow(Base other_) {
7559        if (!super.equalsShallow(other_))
7560          return false;
7561        if (!(other_ instanceof StructureMap))
7562          return false;
7563        StructureMap o = (StructureMap) other_;
7564        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
7565           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
7566           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
7567           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true) && compareValues(import_, o.import_, true)
7568          ;
7569      }
7570
7571      public boolean isEmpty() {
7572        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
7573          , name, title, status, experimental, date, publisher, contact, description, useContext
7574          , jurisdiction, purpose, copyright, structure, import_, group);
7575      }
7576
7577  @Override
7578  public ResourceType getResourceType() {
7579    return ResourceType.StructureMap;
7580   }
7581
7582 /**
7583   * Search parameter: <b>context-quantity</b>
7584   * <p>
7585   * Description: <b>Multiple Resources: 
7586
7587* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
7588* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
7589* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
7590* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
7591* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
7592* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
7593* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
7594* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
7595* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
7596* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
7597* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
7598* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
7599* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
7600* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
7601</b><br>
7602   * Type: <b>quantity</b><br>
7603   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
7604   * </p>
7605   */
7606  @SearchParamDefinition(name="context-quantity", path="(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set\r\n", type="quantity" )
7607  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
7608 /**
7609   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
7610   * <p>
7611   * Description: <b>Multiple Resources: 
7612
7613* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
7614* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
7615* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
7616* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
7617* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
7618* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
7619* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
7620* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
7621* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
7622* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
7623* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
7624* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
7625* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
7626* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
7627</b><br>
7628   * Type: <b>quantity</b><br>
7629   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
7630   * </p>
7631   */
7632  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
7633
7634 /**
7635   * Search parameter: <b>context-type-quantity</b>
7636   * <p>
7637   * Description: <b>Multiple Resources: 
7638
7639* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
7640* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
7641* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
7642* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
7643* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
7644* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
7645* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
7646* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
7647* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
7648* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
7649* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
7650* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
7651* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
7652* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
7653</b><br>
7654   * Type: <b>composite</b><br>
7655   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
7656   * </p>
7657   */
7658  @SearchParamDefinition(name="context-type-quantity", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context-quantity"} )
7659  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
7660 /**
7661   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
7662   * <p>
7663   * Description: <b>Multiple Resources: 
7664
7665* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
7666* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
7667* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
7668* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
7669* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
7670* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
7671* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
7672* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
7673* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
7674* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
7675* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
7676* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
7677* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
7678* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
7679</b><br>
7680   * Type: <b>composite</b><br>
7681   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
7682   * </p>
7683   */
7684  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
7685
7686 /**
7687   * Search parameter: <b>context-type-value</b>
7688   * <p>
7689   * Description: <b>Multiple Resources: 
7690
7691* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
7692* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
7693* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
7694* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
7695* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
7696* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
7697* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
7698* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
7699* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
7700* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
7701* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
7702* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
7703* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
7704* [ValueSet](valueset.html): A use context type and value assigned to the value set
7705</b><br>
7706   * Type: <b>composite</b><br>
7707   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
7708   * </p>
7709   */
7710  @SearchParamDefinition(name="context-type-value", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context"} )
7711  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
7712 /**
7713   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
7714   * <p>
7715   * Description: <b>Multiple Resources: 
7716
7717* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
7718* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
7719* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
7720* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
7721* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
7722* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
7723* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
7724* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
7725* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
7726* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
7727* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
7728* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
7729* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
7730* [ValueSet](valueset.html): A use context type and value assigned to the value set
7731</b><br>
7732   * Type: <b>composite</b><br>
7733   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
7734   * </p>
7735   */
7736  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
7737
7738 /**
7739   * Search parameter: <b>context-type</b>
7740   * <p>
7741   * Description: <b>Multiple Resources: 
7742
7743* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
7744* [CodeSystem](codesystem.html): A type of use context assigned to the code system
7745* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
7746* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
7747* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
7748* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
7749* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
7750* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
7751* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
7752* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
7753* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
7754* [StructureMap](structuremap.html): A type of use context assigned to the structure map
7755* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
7756* [ValueSet](valueset.html): A type of use context assigned to the value set
7757</b><br>
7758   * Type: <b>token</b><br>
7759   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
7760   * </p>
7761   */
7762  @SearchParamDefinition(name="context-type", path="CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A type of use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A type of use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A type of use context assigned to the value set\r\n", type="token" )
7763  public static final String SP_CONTEXT_TYPE = "context-type";
7764 /**
7765   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
7766   * <p>
7767   * Description: <b>Multiple Resources: 
7768
7769* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
7770* [CodeSystem](codesystem.html): A type of use context assigned to the code system
7771* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
7772* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
7773* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
7774* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
7775* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
7776* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
7777* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
7778* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
7779* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
7780* [StructureMap](structuremap.html): A type of use context assigned to the structure map
7781* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
7782* [ValueSet](valueset.html): A type of use context assigned to the value set
7783</b><br>
7784   * Type: <b>token</b><br>
7785   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
7786   * </p>
7787   */
7788  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
7789
7790 /**
7791   * Search parameter: <b>context</b>
7792   * <p>
7793   * Description: <b>Multiple Resources: 
7794
7795* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
7796* [CodeSystem](codesystem.html): A use context assigned to the code system
7797* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
7798* [ConceptMap](conceptmap.html): A use context assigned to the concept map
7799* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
7800* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
7801* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
7802* [NamingSystem](namingsystem.html): A use context assigned to the naming system
7803* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
7804* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
7805* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
7806* [StructureMap](structuremap.html): A use context assigned to the structure map
7807* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
7808* [ValueSet](valueset.html): A use context assigned to the value set
7809</b><br>
7810   * Type: <b>token</b><br>
7811   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
7812   * </p>
7813   */
7814  @SearchParamDefinition(name="context", path="(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context assigned to the value set\r\n", type="token" )
7815  public static final String SP_CONTEXT = "context";
7816 /**
7817   * <b>Fluent Client</b> search parameter constant for <b>context</b>
7818   * <p>
7819   * Description: <b>Multiple Resources: 
7820
7821* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
7822* [CodeSystem](codesystem.html): A use context assigned to the code system
7823* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
7824* [ConceptMap](conceptmap.html): A use context assigned to the concept map
7825* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
7826* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
7827* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
7828* [NamingSystem](namingsystem.html): A use context assigned to the naming system
7829* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
7830* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
7831* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
7832* [StructureMap](structuremap.html): A use context assigned to the structure map
7833* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
7834* [ValueSet](valueset.html): A use context assigned to the value set
7835</b><br>
7836   * Type: <b>token</b><br>
7837   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
7838   * </p>
7839   */
7840  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
7841
7842 /**
7843   * Search parameter: <b>date</b>
7844   * <p>
7845   * Description: <b>Multiple Resources: 
7846
7847* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
7848* [CodeSystem](codesystem.html): The code system publication date
7849* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
7850* [ConceptMap](conceptmap.html): The concept map publication date
7851* [GraphDefinition](graphdefinition.html): The graph definition publication date
7852* [ImplementationGuide](implementationguide.html): The implementation guide publication date
7853* [MessageDefinition](messagedefinition.html): The message definition publication date
7854* [NamingSystem](namingsystem.html): The naming system publication date
7855* [OperationDefinition](operationdefinition.html): The operation definition publication date
7856* [SearchParameter](searchparameter.html): The search parameter publication date
7857* [StructureDefinition](structuredefinition.html): The structure definition publication date
7858* [StructureMap](structuremap.html): The structure map publication date
7859* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
7860* [ValueSet](valueset.html): The value set publication date
7861</b><br>
7862   * Type: <b>date</b><br>
7863   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
7864   * </p>
7865   */
7866  @SearchParamDefinition(name="date", path="CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement publication date\r\n* [CodeSystem](codesystem.html): The code system publication date\r\n* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date\r\n* [ConceptMap](conceptmap.html): The concept map publication date\r\n* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide publication date\r\n* [MessageDefinition](messagedefinition.html): The message definition publication date\r\n* [NamingSystem](namingsystem.html): The naming system publication date\r\n* [OperationDefinition](operationdefinition.html): The operation definition publication date\r\n* [SearchParameter](searchparameter.html): The search parameter publication date\r\n* [StructureDefinition](structuredefinition.html): The structure definition publication date\r\n* [StructureMap](structuremap.html): The structure map publication date\r\n* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
7867  public static final String SP_DATE = "date";
7868 /**
7869   * <b>Fluent Client</b> search parameter constant for <b>date</b>
7870   * <p>
7871   * Description: <b>Multiple Resources: 
7872
7873* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
7874* [CodeSystem](codesystem.html): The code system publication date
7875* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
7876* [ConceptMap](conceptmap.html): The concept map publication date
7877* [GraphDefinition](graphdefinition.html): The graph definition publication date
7878* [ImplementationGuide](implementationguide.html): The implementation guide publication date
7879* [MessageDefinition](messagedefinition.html): The message definition publication date
7880* [NamingSystem](namingsystem.html): The naming system publication date
7881* [OperationDefinition](operationdefinition.html): The operation definition publication date
7882* [SearchParameter](searchparameter.html): The search parameter publication date
7883* [StructureDefinition](structuredefinition.html): The structure definition publication date
7884* [StructureMap](structuremap.html): The structure map publication date
7885* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
7886* [ValueSet](valueset.html): The value set publication date
7887</b><br>
7888   * Type: <b>date</b><br>
7889   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
7890   * </p>
7891   */
7892  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
7893
7894 /**
7895   * Search parameter: <b>description</b>
7896   * <p>
7897   * Description: <b>Multiple Resources: 
7898
7899* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
7900* [CodeSystem](codesystem.html): The description of the code system
7901* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
7902* [ConceptMap](conceptmap.html): The description of the concept map
7903* [GraphDefinition](graphdefinition.html): The description of the graph definition
7904* [ImplementationGuide](implementationguide.html): The description of the implementation guide
7905* [MessageDefinition](messagedefinition.html): The description of the message definition
7906* [NamingSystem](namingsystem.html): The description of the naming system
7907* [OperationDefinition](operationdefinition.html): The description of the operation definition
7908* [SearchParameter](searchparameter.html): The description of the search parameter
7909* [StructureDefinition](structuredefinition.html): The description of the structure definition
7910* [StructureMap](structuremap.html): The description of the structure map
7911* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
7912* [ValueSet](valueset.html): The description of the value set
7913</b><br>
7914   * Type: <b>string</b><br>
7915   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
7916   * </p>
7917   */
7918  @SearchParamDefinition(name="description", path="CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The description of the capability statement\r\n* [CodeSystem](codesystem.html): The description of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition\r\n* [ConceptMap](conceptmap.html): The description of the concept map\r\n* [GraphDefinition](graphdefinition.html): The description of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The description of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The description of the message definition\r\n* [NamingSystem](namingsystem.html): The description of the naming system\r\n* [OperationDefinition](operationdefinition.html): The description of the operation definition\r\n* [SearchParameter](searchparameter.html): The description of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The description of the structure definition\r\n* [StructureMap](structuremap.html): The description of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities\r\n* [ValueSet](valueset.html): The description of the value set\r\n", type="string" )
7919  public static final String SP_DESCRIPTION = "description";
7920 /**
7921   * <b>Fluent Client</b> search parameter constant for <b>description</b>
7922   * <p>
7923   * Description: <b>Multiple Resources: 
7924
7925* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
7926* [CodeSystem](codesystem.html): The description of the code system
7927* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
7928* [ConceptMap](conceptmap.html): The description of the concept map
7929* [GraphDefinition](graphdefinition.html): The description of the graph definition
7930* [ImplementationGuide](implementationguide.html): The description of the implementation guide
7931* [MessageDefinition](messagedefinition.html): The description of the message definition
7932* [NamingSystem](namingsystem.html): The description of the naming system
7933* [OperationDefinition](operationdefinition.html): The description of the operation definition
7934* [SearchParameter](searchparameter.html): The description of the search parameter
7935* [StructureDefinition](structuredefinition.html): The description of the structure definition
7936* [StructureMap](structuremap.html): The description of the structure map
7937* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
7938* [ValueSet](valueset.html): The description of the value set
7939</b><br>
7940   * Type: <b>string</b><br>
7941   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
7942   * </p>
7943   */
7944  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
7945
7946 /**
7947   * Search parameter: <b>identifier</b>
7948   * <p>
7949   * Description: <b>Multiple Resources: 
7950
7951* [CodeSystem](codesystem.html): External identifier for the code system
7952* [ConceptMap](conceptmap.html): External identifier for the concept map
7953* [MessageDefinition](messagedefinition.html): External identifier for the message definition
7954* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
7955* [StructureMap](structuremap.html): External identifier for the structure map
7956* [ValueSet](valueset.html): External identifier for the value set
7957</b><br>
7958   * Type: <b>token</b><br>
7959   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | ValueSet.identifier</b><br>
7960   * </p>
7961   */
7962  @SearchParamDefinition(name="identifier", path="CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
7963  public static final String SP_IDENTIFIER = "identifier";
7964 /**
7965   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
7966   * <p>
7967   * Description: <b>Multiple Resources: 
7968
7969* [CodeSystem](codesystem.html): External identifier for the code system
7970* [ConceptMap](conceptmap.html): External identifier for the concept map
7971* [MessageDefinition](messagedefinition.html): External identifier for the message definition
7972* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
7973* [StructureMap](structuremap.html): External identifier for the structure map
7974* [ValueSet](valueset.html): External identifier for the value set
7975</b><br>
7976   * Type: <b>token</b><br>
7977   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | ValueSet.identifier</b><br>
7978   * </p>
7979   */
7980  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
7981
7982 /**
7983   * Search parameter: <b>jurisdiction</b>
7984   * <p>
7985   * Description: <b>Multiple Resources: 
7986
7987* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
7988* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
7989* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
7990* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
7991* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
7992* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
7993* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
7994* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
7995* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
7996* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
7997* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
7998* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
7999* [ValueSet](valueset.html): Intended jurisdiction for the value set
8000</b><br>
8001   * Type: <b>token</b><br>
8002   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
8003   * </p>
8004   */
8005  @SearchParamDefinition(name="jurisdiction", path="CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement\r\n* [CodeSystem](codesystem.html): Intended jurisdiction for the code system\r\n* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map\r\n* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition\r\n* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition\r\n* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system\r\n* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition\r\n* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter\r\n* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition\r\n* [StructureMap](structuremap.html): Intended jurisdiction for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities\r\n* [ValueSet](valueset.html): Intended jurisdiction for the value set\r\n", type="token" )
8006  public static final String SP_JURISDICTION = "jurisdiction";
8007 /**
8008   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
8009   * <p>
8010   * Description: <b>Multiple Resources: 
8011
8012* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
8013* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
8014* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
8015* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
8016* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
8017* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
8018* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
8019* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
8020* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
8021* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
8022* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
8023* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
8024* [ValueSet](valueset.html): Intended jurisdiction for the value set
8025</b><br>
8026   * Type: <b>token</b><br>
8027   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
8028   * </p>
8029   */
8030  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
8031
8032 /**
8033   * Search parameter: <b>name</b>
8034   * <p>
8035   * Description: <b>Multiple Resources: 
8036
8037* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
8038* [CodeSystem](codesystem.html): Computationally friendly name of the code system
8039* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
8040* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
8041* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
8042* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
8043* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
8044* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
8045* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
8046* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
8047* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
8048* [StructureMap](structuremap.html): Computationally friendly name of the structure map
8049* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
8050* [ValueSet](valueset.html): Computationally friendly name of the value set
8051</b><br>
8052   * Type: <b>string</b><br>
8053   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
8054   * </p>
8055   */
8056  @SearchParamDefinition(name="name", path="CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): Computationally friendly name of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition\r\n* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map\r\n* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition\r\n* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system\r\n* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition\r\n* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition\r\n* [StructureMap](structuremap.html): Computationally friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): Computationally friendly name of the value set\r\n", type="string" )
8057  public static final String SP_NAME = "name";
8058 /**
8059   * <b>Fluent Client</b> search parameter constant for <b>name</b>
8060   * <p>
8061   * Description: <b>Multiple Resources: 
8062
8063* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
8064* [CodeSystem](codesystem.html): Computationally friendly name of the code system
8065* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
8066* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
8067* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
8068* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
8069* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
8070* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
8071* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
8072* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
8073* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
8074* [StructureMap](structuremap.html): Computationally friendly name of the structure map
8075* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
8076* [ValueSet](valueset.html): Computationally friendly name of the value set
8077</b><br>
8078   * Type: <b>string</b><br>
8079   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
8080   * </p>
8081   */
8082  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
8083
8084 /**
8085   * Search parameter: <b>publisher</b>
8086   * <p>
8087   * Description: <b>Multiple Resources: 
8088
8089* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
8090* [CodeSystem](codesystem.html): Name of the publisher of the code system
8091* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
8092* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
8093* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
8094* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
8095* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
8096* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
8097* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
8098* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
8099* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
8100* [StructureMap](structuremap.html): Name of the publisher of the structure map
8101* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
8102* [ValueSet](valueset.html): Name of the publisher of the value set
8103</b><br>
8104   * Type: <b>string</b><br>
8105   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
8106   * </p>
8107   */
8108  @SearchParamDefinition(name="publisher", path="CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement\r\n* [CodeSystem](codesystem.html): Name of the publisher of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition\r\n* [ConceptMap](conceptmap.html): Name of the publisher of the concept map\r\n* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition\r\n* [NamingSystem](namingsystem.html): Name of the publisher of the naming system\r\n* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition\r\n* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition\r\n* [StructureMap](structuremap.html): Name of the publisher of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities\r\n* [ValueSet](valueset.html): Name of the publisher of the value set\r\n", type="string" )
8109  public static final String SP_PUBLISHER = "publisher";
8110 /**
8111   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
8112   * <p>
8113   * Description: <b>Multiple Resources: 
8114
8115* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
8116* [CodeSystem](codesystem.html): Name of the publisher of the code system
8117* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
8118* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
8119* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
8120* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
8121* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
8122* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
8123* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
8124* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
8125* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
8126* [StructureMap](structuremap.html): Name of the publisher of the structure map
8127* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
8128* [ValueSet](valueset.html): Name of the publisher of the value set
8129</b><br>
8130   * Type: <b>string</b><br>
8131   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
8132   * </p>
8133   */
8134  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
8135
8136 /**
8137   * Search parameter: <b>status</b>
8138   * <p>
8139   * Description: <b>Multiple Resources: 
8140
8141* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
8142* [CodeSystem](codesystem.html): The current status of the code system
8143* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
8144* [ConceptMap](conceptmap.html): The current status of the concept map
8145* [GraphDefinition](graphdefinition.html): The current status of the graph definition
8146* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
8147* [MessageDefinition](messagedefinition.html): The current status of the message definition
8148* [NamingSystem](namingsystem.html): The current status of the naming system
8149* [OperationDefinition](operationdefinition.html): The current status of the operation definition
8150* [SearchParameter](searchparameter.html): The current status of the search parameter
8151* [StructureDefinition](structuredefinition.html): The current status of the structure definition
8152* [StructureMap](structuremap.html): The current status of the structure map
8153* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
8154* [ValueSet](valueset.html): The current status of the value set
8155</b><br>
8156   * Type: <b>token</b><br>
8157   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
8158   * </p>
8159   */
8160  @SearchParamDefinition(name="status", path="CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\r\n* [CodeSystem](codesystem.html): The current status of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition\r\n* [ConceptMap](conceptmap.html): The current status of the concept map\r\n* [GraphDefinition](graphdefinition.html): The current status of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The current status of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The current status of the message definition\r\n* [NamingSystem](namingsystem.html): The current status of the naming system\r\n* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The current status of the structure definition\r\n* [StructureMap](structuremap.html): The current status of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
8161  public static final String SP_STATUS = "status";
8162 /**
8163   * <b>Fluent Client</b> search parameter constant for <b>status</b>
8164   * <p>
8165   * Description: <b>Multiple Resources: 
8166
8167* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
8168* [CodeSystem](codesystem.html): The current status of the code system
8169* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
8170* [ConceptMap](conceptmap.html): The current status of the concept map
8171* [GraphDefinition](graphdefinition.html): The current status of the graph definition
8172* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
8173* [MessageDefinition](messagedefinition.html): The current status of the message definition
8174* [NamingSystem](namingsystem.html): The current status of the naming system
8175* [OperationDefinition](operationdefinition.html): The current status of the operation definition
8176* [SearchParameter](searchparameter.html): The current status of the search parameter
8177* [StructureDefinition](structuredefinition.html): The current status of the structure definition
8178* [StructureMap](structuremap.html): The current status of the structure map
8179* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
8180* [ValueSet](valueset.html): The current status of the value set
8181</b><br>
8182   * Type: <b>token</b><br>
8183   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
8184   * </p>
8185   */
8186  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
8187
8188 /**
8189   * Search parameter: <b>title</b>
8190   * <p>
8191   * Description: <b>Multiple Resources: 
8192
8193* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
8194* [CodeSystem](codesystem.html): The human-friendly name of the code system
8195* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
8196* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
8197* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
8198* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
8199* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
8200* [StructureMap](structuremap.html): The human-friendly name of the structure map
8201* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
8202* [ValueSet](valueset.html): The human-friendly name of the value set
8203</b><br>
8204   * Type: <b>string</b><br>
8205   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
8206   * </p>
8207   */
8208  @SearchParamDefinition(name="title", path="CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): The human-friendly name of the code system\r\n* [ConceptMap](conceptmap.html): The human-friendly name of the concept map\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition\r\n* [StructureMap](structuremap.html): The human-friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
8209  public static final String SP_TITLE = "title";
8210 /**
8211   * <b>Fluent Client</b> search parameter constant for <b>title</b>
8212   * <p>
8213   * Description: <b>Multiple Resources: 
8214
8215* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
8216* [CodeSystem](codesystem.html): The human-friendly name of the code system
8217* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
8218* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
8219* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
8220* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
8221* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
8222* [StructureMap](structuremap.html): The human-friendly name of the structure map
8223* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
8224* [ValueSet](valueset.html): The human-friendly name of the value set
8225</b><br>
8226   * Type: <b>string</b><br>
8227   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
8228   * </p>
8229   */
8230  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
8231
8232 /**
8233   * Search parameter: <b>url</b>
8234   * <p>
8235   * Description: <b>Multiple Resources: 
8236
8237* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
8238* [CodeSystem](codesystem.html): The uri that identifies the code system
8239* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
8240* [ConceptMap](conceptmap.html): The uri that identifies the concept map
8241* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
8242* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
8243* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
8244* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
8245* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
8246* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
8247* [StructureMap](structuremap.html): The uri that identifies the structure map
8248* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
8249* [ValueSet](valueset.html): The uri that identifies the value set
8250</b><br>
8251   * Type: <b>uri</b><br>
8252   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
8253   * </p>
8254   */
8255  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The uri that identifies the concept map\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
8256  public static final String SP_URL = "url";
8257 /**
8258   * <b>Fluent Client</b> search parameter constant for <b>url</b>
8259   * <p>
8260   * Description: <b>Multiple Resources: 
8261
8262* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
8263* [CodeSystem](codesystem.html): The uri that identifies the code system
8264* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
8265* [ConceptMap](conceptmap.html): The uri that identifies the concept map
8266* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
8267* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
8268* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
8269* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
8270* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
8271* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
8272* [StructureMap](structuremap.html): The uri that identifies the structure map
8273* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
8274* [ValueSet](valueset.html): The uri that identifies the value set
8275</b><br>
8276   * Type: <b>uri</b><br>
8277   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
8278   * </p>
8279   */
8280  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
8281
8282 /**
8283   * Search parameter: <b>version</b>
8284   * <p>
8285   * Description: <b>Multiple Resources: 
8286
8287* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
8288* [CodeSystem](codesystem.html): The business version of the code system
8289* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
8290* [ConceptMap](conceptmap.html): The business version of the concept map
8291* [GraphDefinition](graphdefinition.html): The business version of the graph definition
8292* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
8293* [MessageDefinition](messagedefinition.html): The business version of the message definition
8294* [OperationDefinition](operationdefinition.html): The business version of the operation definition
8295* [SearchParameter](searchparameter.html): The business version of the search parameter
8296* [StructureDefinition](structuredefinition.html): The business version of the structure definition
8297* [StructureMap](structuremap.html): The business version of the structure map
8298* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
8299* [ValueSet](valueset.html): The business version of the value set
8300</b><br>
8301   * Type: <b>token</b><br>
8302   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
8303   * </p>
8304   */
8305  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
8306  public static final String SP_VERSION = "version";
8307 /**
8308   * <b>Fluent Client</b> search parameter constant for <b>version</b>
8309   * <p>
8310   * Description: <b>Multiple Resources: 
8311
8312* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
8313* [CodeSystem](codesystem.html): The business version of the code system
8314* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
8315* [ConceptMap](conceptmap.html): The business version of the concept map
8316* [GraphDefinition](graphdefinition.html): The business version of the graph definition
8317* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
8318* [MessageDefinition](messagedefinition.html): The business version of the message definition
8319* [OperationDefinition](operationdefinition.html): The business version of the operation definition
8320* [SearchParameter](searchparameter.html): The business version of the search parameter
8321* [StructureDefinition](structuredefinition.html): The business version of the structure definition
8322* [StructureMap](structuremap.html): The business version of the structure map
8323* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
8324* [ValueSet](valueset.html): The business version of the value set
8325</b><br>
8326   * Type: <b>token</b><br>
8327   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
8328   * </p>
8329   */
8330  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
8331
8332// Manual code (from Configuration.txt):
8333public String toString() {
8334    return StructureMapUtilities.render(this);
8335  }
8336// end addition
8337
8338}
8339