001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Describes validation requirements, source(s), status and dates for one or more elements.
052 */
053@ResourceDef(name="VerificationResult", profile="http://hl7.org/fhir/StructureDefinition/VerificationResult")
054public class VerificationResult extends DomainResource {
055
056    public enum VerificationResultStatus {
057        /**
058         * ***TODO***
059         */
060        ATTESTED, 
061        /**
062         * ***TODO***
063         */
064        VALIDATED, 
065        /**
066         * ***TODO***
067         */
068        INPROCESS, 
069        /**
070         * ***TODO***
071         */
072        REQREVALID, 
073        /**
074         * ***TODO***
075         */
076        VALFAIL, 
077        /**
078         * ***TODO***
079         */
080        REVALFAIL, 
081        /**
082         * The VerificationResult record was created erroneously and is not appropriated for use.
083         */
084        ENTEREDINERROR, 
085        /**
086         * added to help the parsers with the generic types
087         */
088        NULL;
089        public static VerificationResultStatus fromCode(String codeString) throws FHIRException {
090            if (codeString == null || "".equals(codeString))
091                return null;
092        if ("attested".equals(codeString))
093          return ATTESTED;
094        if ("validated".equals(codeString))
095          return VALIDATED;
096        if ("in-process".equals(codeString))
097          return INPROCESS;
098        if ("req-revalid".equals(codeString))
099          return REQREVALID;
100        if ("val-fail".equals(codeString))
101          return VALFAIL;
102        if ("reval-fail".equals(codeString))
103          return REVALFAIL;
104        if ("entered-in-error".equals(codeString))
105          return ENTEREDINERROR;
106        if (Configuration.isAcceptInvalidEnums())
107          return null;
108        else
109          throw new FHIRException("Unknown VerificationResultStatus code '"+codeString+"'");
110        }
111        public String toCode() {
112          switch (this) {
113            case ATTESTED: return "attested";
114            case VALIDATED: return "validated";
115            case INPROCESS: return "in-process";
116            case REQREVALID: return "req-revalid";
117            case VALFAIL: return "val-fail";
118            case REVALFAIL: return "reval-fail";
119            case ENTEREDINERROR: return "entered-in-error";
120            case NULL: return null;
121            default: return "?";
122          }
123        }
124        public String getSystem() {
125          switch (this) {
126            case ATTESTED: return "http://hl7.org/fhir/CodeSystem/verificationresult-status";
127            case VALIDATED: return "http://hl7.org/fhir/CodeSystem/verificationresult-status";
128            case INPROCESS: return "http://hl7.org/fhir/CodeSystem/verificationresult-status";
129            case REQREVALID: return "http://hl7.org/fhir/CodeSystem/verificationresult-status";
130            case VALFAIL: return "http://hl7.org/fhir/CodeSystem/verificationresult-status";
131            case REVALFAIL: return "http://hl7.org/fhir/CodeSystem/verificationresult-status";
132            case ENTEREDINERROR: return "http://hl7.org/fhir/CodeSystem/verificationresult-status";
133            case NULL: return null;
134            default: return "?";
135          }
136        }
137        public String getDefinition() {
138          switch (this) {
139            case ATTESTED: return "***TODO***";
140            case VALIDATED: return "***TODO***";
141            case INPROCESS: return "***TODO***";
142            case REQREVALID: return "***TODO***";
143            case VALFAIL: return "***TODO***";
144            case REVALFAIL: return "***TODO***";
145            case ENTEREDINERROR: return "The VerificationResult record was created erroneously and is not appropriated for use.";
146            case NULL: return null;
147            default: return "?";
148          }
149        }
150        public String getDisplay() {
151          switch (this) {
152            case ATTESTED: return "Attested";
153            case VALIDATED: return "Validated";
154            case INPROCESS: return "In process";
155            case REQREVALID: return "Requires revalidation";
156            case VALFAIL: return "Validation failed";
157            case REVALFAIL: return "Re-Validation failed";
158            case ENTEREDINERROR: return "Entered in Error";
159            case NULL: return null;
160            default: return "?";
161          }
162        }
163    }
164
165  public static class VerificationResultStatusEnumFactory implements EnumFactory<VerificationResultStatus> {
166    public VerificationResultStatus fromCode(String codeString) throws IllegalArgumentException {
167      if (codeString == null || "".equals(codeString))
168            if (codeString == null || "".equals(codeString))
169                return null;
170        if ("attested".equals(codeString))
171          return VerificationResultStatus.ATTESTED;
172        if ("validated".equals(codeString))
173          return VerificationResultStatus.VALIDATED;
174        if ("in-process".equals(codeString))
175          return VerificationResultStatus.INPROCESS;
176        if ("req-revalid".equals(codeString))
177          return VerificationResultStatus.REQREVALID;
178        if ("val-fail".equals(codeString))
179          return VerificationResultStatus.VALFAIL;
180        if ("reval-fail".equals(codeString))
181          return VerificationResultStatus.REVALFAIL;
182        if ("entered-in-error".equals(codeString))
183          return VerificationResultStatus.ENTEREDINERROR;
184        throw new IllegalArgumentException("Unknown VerificationResultStatus code '"+codeString+"'");
185        }
186        public Enumeration<VerificationResultStatus> fromType(PrimitiveType<?> code) throws FHIRException {
187          if (code == null)
188            return null;
189          if (code.isEmpty())
190            return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.NULL, code);
191          String codeString = ((PrimitiveType) code).asStringValue();
192          if (codeString == null || "".equals(codeString))
193            return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.NULL, code);
194        if ("attested".equals(codeString))
195          return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.ATTESTED, code);
196        if ("validated".equals(codeString))
197          return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.VALIDATED, code);
198        if ("in-process".equals(codeString))
199          return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.INPROCESS, code);
200        if ("req-revalid".equals(codeString))
201          return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.REQREVALID, code);
202        if ("val-fail".equals(codeString))
203          return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.VALFAIL, code);
204        if ("reval-fail".equals(codeString))
205          return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.REVALFAIL, code);
206        if ("entered-in-error".equals(codeString))
207          return new Enumeration<VerificationResultStatus>(this, VerificationResultStatus.ENTEREDINERROR, code);
208        throw new FHIRException("Unknown VerificationResultStatus code '"+codeString+"'");
209        }
210    public String toCode(VerificationResultStatus code) {
211      if (code == VerificationResultStatus.ATTESTED)
212        return "attested";
213      if (code == VerificationResultStatus.VALIDATED)
214        return "validated";
215      if (code == VerificationResultStatus.INPROCESS)
216        return "in-process";
217      if (code == VerificationResultStatus.REQREVALID)
218        return "req-revalid";
219      if (code == VerificationResultStatus.VALFAIL)
220        return "val-fail";
221      if (code == VerificationResultStatus.REVALFAIL)
222        return "reval-fail";
223      if (code == VerificationResultStatus.ENTEREDINERROR)
224        return "entered-in-error";
225      return "?";
226      }
227    public String toSystem(VerificationResultStatus code) {
228      return code.getSystem();
229      }
230    }
231
232    @Block()
233    public static class VerificationResultPrimarySourceComponent extends BackboneElement implements IBaseBackboneElement {
234        /**
235         * Reference to the primary source.
236         */
237        @Child(name = "who", type = {Organization.class, Practitioner.class, PractitionerRole.class}, order=1, min=0, max=1, modifier=false, summary=false)
238        @Description(shortDefinition="Reference to the primary source", formalDefinition="Reference to the primary source." )
239        protected Reference who;
240
241        /**
242         * Type of primary source (License Board; Primary Education; Continuing Education; Postal Service; Relationship owner; Registration Authority; legal source; issuing source; authoritative source).
243         */
244        @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
245        @Description(shortDefinition="Type of primary source (License Board; Primary Education; Continuing Education; Postal Service; Relationship owner; Registration Authority; legal source; issuing source; authoritative source)", formalDefinition="Type of primary source (License Board; Primary Education; Continuing Education; Postal Service; Relationship owner; Registration Authority; legal source; issuing source; authoritative source)." )
246        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-primary-source-type")
247        protected List<CodeableConcept> type;
248
249        /**
250         * Method for communicating with the primary source (manual; API; Push).
251         */
252        @Child(name = "communicationMethod", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
253        @Description(shortDefinition="Method for exchanging information with the primary source", formalDefinition="Method for communicating with the primary source (manual; API; Push)." )
254        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-communication-method")
255        protected List<CodeableConcept> communicationMethod;
256
257        /**
258         * Status of the validation of the target against the primary source (successful; failed; unknown).
259         */
260        @Child(name = "validationStatus", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
261        @Description(shortDefinition="successful | failed | unknown", formalDefinition="Status of the validation of the target against the primary source (successful; failed; unknown)." )
262        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-validation-status")
263        protected CodeableConcept validationStatus;
264
265        /**
266         * When the target was validated against the primary source.
267         */
268        @Child(name = "validationDate", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=false)
269        @Description(shortDefinition="When the target was validated against the primary source", formalDefinition="When the target was validated against the primary source." )
270        protected DateTimeType validationDate;
271
272        /**
273         * Ability of the primary source to push updates/alerts (yes; no; undetermined).
274         */
275        @Child(name = "canPushUpdates", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true)
276        @Description(shortDefinition="yes | no | undetermined", formalDefinition="Ability of the primary source to push updates/alerts (yes; no; undetermined)." )
277        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-can-push-updates")
278        protected CodeableConcept canPushUpdates;
279
280        /**
281         * Type of alerts/updates the primary source can send (specific requested changes; any changes; as defined by source).
282         */
283        @Child(name = "pushTypeAvailable", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
284        @Description(shortDefinition="specific | any | source", formalDefinition="Type of alerts/updates the primary source can send (specific requested changes; any changes; as defined by source)." )
285        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-push-type-available")
286        protected List<CodeableConcept> pushTypeAvailable;
287
288        private static final long serialVersionUID = -266994197L;
289
290    /**
291     * Constructor
292     */
293      public VerificationResultPrimarySourceComponent() {
294        super();
295      }
296
297        /**
298         * @return {@link #who} (Reference to the primary source.)
299         */
300        public Reference getWho() { 
301          if (this.who == null)
302            if (Configuration.errorOnAutoCreate())
303              throw new Error("Attempt to auto-create VerificationResultPrimarySourceComponent.who");
304            else if (Configuration.doAutoCreate())
305              this.who = new Reference(); // cc
306          return this.who;
307        }
308
309        public boolean hasWho() { 
310          return this.who != null && !this.who.isEmpty();
311        }
312
313        /**
314         * @param value {@link #who} (Reference to the primary source.)
315         */
316        public VerificationResultPrimarySourceComponent setWho(Reference value) { 
317          this.who = value;
318          return this;
319        }
320
321        /**
322         * @return {@link #type} (Type of primary source (License Board; Primary Education; Continuing Education; Postal Service; Relationship owner; Registration Authority; legal source; issuing source; authoritative source).)
323         */
324        public List<CodeableConcept> getType() { 
325          if (this.type == null)
326            this.type = new ArrayList<CodeableConcept>();
327          return this.type;
328        }
329
330        /**
331         * @return Returns a reference to <code>this</code> for easy method chaining
332         */
333        public VerificationResultPrimarySourceComponent setType(List<CodeableConcept> theType) { 
334          this.type = theType;
335          return this;
336        }
337
338        public boolean hasType() { 
339          if (this.type == null)
340            return false;
341          for (CodeableConcept item : this.type)
342            if (!item.isEmpty())
343              return true;
344          return false;
345        }
346
347        public CodeableConcept addType() { //3
348          CodeableConcept t = new CodeableConcept();
349          if (this.type == null)
350            this.type = new ArrayList<CodeableConcept>();
351          this.type.add(t);
352          return t;
353        }
354
355        public VerificationResultPrimarySourceComponent addType(CodeableConcept t) { //3
356          if (t == null)
357            return this;
358          if (this.type == null)
359            this.type = new ArrayList<CodeableConcept>();
360          this.type.add(t);
361          return this;
362        }
363
364        /**
365         * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3}
366         */
367        public CodeableConcept getTypeFirstRep() { 
368          if (getType().isEmpty()) {
369            addType();
370          }
371          return getType().get(0);
372        }
373
374        /**
375         * @return {@link #communicationMethod} (Method for communicating with the primary source (manual; API; Push).)
376         */
377        public List<CodeableConcept> getCommunicationMethod() { 
378          if (this.communicationMethod == null)
379            this.communicationMethod = new ArrayList<CodeableConcept>();
380          return this.communicationMethod;
381        }
382
383        /**
384         * @return Returns a reference to <code>this</code> for easy method chaining
385         */
386        public VerificationResultPrimarySourceComponent setCommunicationMethod(List<CodeableConcept> theCommunicationMethod) { 
387          this.communicationMethod = theCommunicationMethod;
388          return this;
389        }
390
391        public boolean hasCommunicationMethod() { 
392          if (this.communicationMethod == null)
393            return false;
394          for (CodeableConcept item : this.communicationMethod)
395            if (!item.isEmpty())
396              return true;
397          return false;
398        }
399
400        public CodeableConcept addCommunicationMethod() { //3
401          CodeableConcept t = new CodeableConcept();
402          if (this.communicationMethod == null)
403            this.communicationMethod = new ArrayList<CodeableConcept>();
404          this.communicationMethod.add(t);
405          return t;
406        }
407
408        public VerificationResultPrimarySourceComponent addCommunicationMethod(CodeableConcept t) { //3
409          if (t == null)
410            return this;
411          if (this.communicationMethod == null)
412            this.communicationMethod = new ArrayList<CodeableConcept>();
413          this.communicationMethod.add(t);
414          return this;
415        }
416
417        /**
418         * @return The first repetition of repeating field {@link #communicationMethod}, creating it if it does not already exist {3}
419         */
420        public CodeableConcept getCommunicationMethodFirstRep() { 
421          if (getCommunicationMethod().isEmpty()) {
422            addCommunicationMethod();
423          }
424          return getCommunicationMethod().get(0);
425        }
426
427        /**
428         * @return {@link #validationStatus} (Status of the validation of the target against the primary source (successful; failed; unknown).)
429         */
430        public CodeableConcept getValidationStatus() { 
431          if (this.validationStatus == null)
432            if (Configuration.errorOnAutoCreate())
433              throw new Error("Attempt to auto-create VerificationResultPrimarySourceComponent.validationStatus");
434            else if (Configuration.doAutoCreate())
435              this.validationStatus = new CodeableConcept(); // cc
436          return this.validationStatus;
437        }
438
439        public boolean hasValidationStatus() { 
440          return this.validationStatus != null && !this.validationStatus.isEmpty();
441        }
442
443        /**
444         * @param value {@link #validationStatus} (Status of the validation of the target against the primary source (successful; failed; unknown).)
445         */
446        public VerificationResultPrimarySourceComponent setValidationStatus(CodeableConcept value) { 
447          this.validationStatus = value;
448          return this;
449        }
450
451        /**
452         * @return {@link #validationDate} (When the target was validated against the primary source.). This is the underlying object with id, value and extensions. The accessor "getValidationDate" gives direct access to the value
453         */
454        public DateTimeType getValidationDateElement() { 
455          if (this.validationDate == null)
456            if (Configuration.errorOnAutoCreate())
457              throw new Error("Attempt to auto-create VerificationResultPrimarySourceComponent.validationDate");
458            else if (Configuration.doAutoCreate())
459              this.validationDate = new DateTimeType(); // bb
460          return this.validationDate;
461        }
462
463        public boolean hasValidationDateElement() { 
464          return this.validationDate != null && !this.validationDate.isEmpty();
465        }
466
467        public boolean hasValidationDate() { 
468          return this.validationDate != null && !this.validationDate.isEmpty();
469        }
470
471        /**
472         * @param value {@link #validationDate} (When the target was validated against the primary source.). This is the underlying object with id, value and extensions. The accessor "getValidationDate" gives direct access to the value
473         */
474        public VerificationResultPrimarySourceComponent setValidationDateElement(DateTimeType value) { 
475          this.validationDate = value;
476          return this;
477        }
478
479        /**
480         * @return When the target was validated against the primary source.
481         */
482        public Date getValidationDate() { 
483          return this.validationDate == null ? null : this.validationDate.getValue();
484        }
485
486        /**
487         * @param value When the target was validated against the primary source.
488         */
489        public VerificationResultPrimarySourceComponent setValidationDate(Date value) { 
490          if (value == null)
491            this.validationDate = null;
492          else {
493            if (this.validationDate == null)
494              this.validationDate = new DateTimeType();
495            this.validationDate.setValue(value);
496          }
497          return this;
498        }
499
500        /**
501         * @return {@link #canPushUpdates} (Ability of the primary source to push updates/alerts (yes; no; undetermined).)
502         */
503        public CodeableConcept getCanPushUpdates() { 
504          if (this.canPushUpdates == null)
505            if (Configuration.errorOnAutoCreate())
506              throw new Error("Attempt to auto-create VerificationResultPrimarySourceComponent.canPushUpdates");
507            else if (Configuration.doAutoCreate())
508              this.canPushUpdates = new CodeableConcept(); // cc
509          return this.canPushUpdates;
510        }
511
512        public boolean hasCanPushUpdates() { 
513          return this.canPushUpdates != null && !this.canPushUpdates.isEmpty();
514        }
515
516        /**
517         * @param value {@link #canPushUpdates} (Ability of the primary source to push updates/alerts (yes; no; undetermined).)
518         */
519        public VerificationResultPrimarySourceComponent setCanPushUpdates(CodeableConcept value) { 
520          this.canPushUpdates = value;
521          return this;
522        }
523
524        /**
525         * @return {@link #pushTypeAvailable} (Type of alerts/updates the primary source can send (specific requested changes; any changes; as defined by source).)
526         */
527        public List<CodeableConcept> getPushTypeAvailable() { 
528          if (this.pushTypeAvailable == null)
529            this.pushTypeAvailable = new ArrayList<CodeableConcept>();
530          return this.pushTypeAvailable;
531        }
532
533        /**
534         * @return Returns a reference to <code>this</code> for easy method chaining
535         */
536        public VerificationResultPrimarySourceComponent setPushTypeAvailable(List<CodeableConcept> thePushTypeAvailable) { 
537          this.pushTypeAvailable = thePushTypeAvailable;
538          return this;
539        }
540
541        public boolean hasPushTypeAvailable() { 
542          if (this.pushTypeAvailable == null)
543            return false;
544          for (CodeableConcept item : this.pushTypeAvailable)
545            if (!item.isEmpty())
546              return true;
547          return false;
548        }
549
550        public CodeableConcept addPushTypeAvailable() { //3
551          CodeableConcept t = new CodeableConcept();
552          if (this.pushTypeAvailable == null)
553            this.pushTypeAvailable = new ArrayList<CodeableConcept>();
554          this.pushTypeAvailable.add(t);
555          return t;
556        }
557
558        public VerificationResultPrimarySourceComponent addPushTypeAvailable(CodeableConcept t) { //3
559          if (t == null)
560            return this;
561          if (this.pushTypeAvailable == null)
562            this.pushTypeAvailable = new ArrayList<CodeableConcept>();
563          this.pushTypeAvailable.add(t);
564          return this;
565        }
566
567        /**
568         * @return The first repetition of repeating field {@link #pushTypeAvailable}, creating it if it does not already exist {3}
569         */
570        public CodeableConcept getPushTypeAvailableFirstRep() { 
571          if (getPushTypeAvailable().isEmpty()) {
572            addPushTypeAvailable();
573          }
574          return getPushTypeAvailable().get(0);
575        }
576
577        protected void listChildren(List<Property> children) {
578          super.listChildren(children);
579          children.add(new Property("who", "Reference(Organization|Practitioner|PractitionerRole)", "Reference to the primary source.", 0, 1, who));
580          children.add(new Property("type", "CodeableConcept", "Type of primary source (License Board; Primary Education; Continuing Education; Postal Service; Relationship owner; Registration Authority; legal source; issuing source; authoritative source).", 0, java.lang.Integer.MAX_VALUE, type));
581          children.add(new Property("communicationMethod", "CodeableConcept", "Method for communicating with the primary source (manual; API; Push).", 0, java.lang.Integer.MAX_VALUE, communicationMethod));
582          children.add(new Property("validationStatus", "CodeableConcept", "Status of the validation of the target against the primary source (successful; failed; unknown).", 0, 1, validationStatus));
583          children.add(new Property("validationDate", "dateTime", "When the target was validated against the primary source.", 0, 1, validationDate));
584          children.add(new Property("canPushUpdates", "CodeableConcept", "Ability of the primary source to push updates/alerts (yes; no; undetermined).", 0, 1, canPushUpdates));
585          children.add(new Property("pushTypeAvailable", "CodeableConcept", "Type of alerts/updates the primary source can send (specific requested changes; any changes; as defined by source).", 0, java.lang.Integer.MAX_VALUE, pushTypeAvailable));
586        }
587
588        @Override
589        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
590          switch (_hash) {
591          case 117694: /*who*/  return new Property("who", "Reference(Organization|Practitioner|PractitionerRole)", "Reference to the primary source.", 0, 1, who);
592          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Type of primary source (License Board; Primary Education; Continuing Education; Postal Service; Relationship owner; Registration Authority; legal source; issuing source; authoritative source).", 0, java.lang.Integer.MAX_VALUE, type);
593          case 1314116695: /*communicationMethod*/  return new Property("communicationMethod", "CodeableConcept", "Method for communicating with the primary source (manual; API; Push).", 0, java.lang.Integer.MAX_VALUE, communicationMethod);
594          case 1775633867: /*validationStatus*/  return new Property("validationStatus", "CodeableConcept", "Status of the validation of the target against the primary source (successful; failed; unknown).", 0, 1, validationStatus);
595          case -280180793: /*validationDate*/  return new Property("validationDate", "dateTime", "When the target was validated against the primary source.", 0, 1, validationDate);
596          case 1463787104: /*canPushUpdates*/  return new Property("canPushUpdates", "CodeableConcept", "Ability of the primary source to push updates/alerts (yes; no; undetermined).", 0, 1, canPushUpdates);
597          case 945223605: /*pushTypeAvailable*/  return new Property("pushTypeAvailable", "CodeableConcept", "Type of alerts/updates the primary source can send (specific requested changes; any changes; as defined by source).", 0, java.lang.Integer.MAX_VALUE, pushTypeAvailable);
598          default: return super.getNamedProperty(_hash, _name, _checkValid);
599          }
600
601        }
602
603      @Override
604      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
605        switch (hash) {
606        case 117694: /*who*/ return this.who == null ? new Base[0] : new Base[] {this.who}; // Reference
607        case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept
608        case 1314116695: /*communicationMethod*/ return this.communicationMethod == null ? new Base[0] : this.communicationMethod.toArray(new Base[this.communicationMethod.size()]); // CodeableConcept
609        case 1775633867: /*validationStatus*/ return this.validationStatus == null ? new Base[0] : new Base[] {this.validationStatus}; // CodeableConcept
610        case -280180793: /*validationDate*/ return this.validationDate == null ? new Base[0] : new Base[] {this.validationDate}; // DateTimeType
611        case 1463787104: /*canPushUpdates*/ return this.canPushUpdates == null ? new Base[0] : new Base[] {this.canPushUpdates}; // CodeableConcept
612        case 945223605: /*pushTypeAvailable*/ return this.pushTypeAvailable == null ? new Base[0] : this.pushTypeAvailable.toArray(new Base[this.pushTypeAvailable.size()]); // CodeableConcept
613        default: return super.getProperty(hash, name, checkValid);
614        }
615
616      }
617
618      @Override
619      public Base setProperty(int hash, String name, Base value) throws FHIRException {
620        switch (hash) {
621        case 117694: // who
622          this.who = TypeConvertor.castToReference(value); // Reference
623          return value;
624        case 3575610: // type
625          this.getType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
626          return value;
627        case 1314116695: // communicationMethod
628          this.getCommunicationMethod().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
629          return value;
630        case 1775633867: // validationStatus
631          this.validationStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
632          return value;
633        case -280180793: // validationDate
634          this.validationDate = TypeConvertor.castToDateTime(value); // DateTimeType
635          return value;
636        case 1463787104: // canPushUpdates
637          this.canPushUpdates = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
638          return value;
639        case 945223605: // pushTypeAvailable
640          this.getPushTypeAvailable().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
641          return value;
642        default: return super.setProperty(hash, name, value);
643        }
644
645      }
646
647      @Override
648      public Base setProperty(String name, Base value) throws FHIRException {
649        if (name.equals("who")) {
650          this.who = TypeConvertor.castToReference(value); // Reference
651        } else if (name.equals("type")) {
652          this.getType().add(TypeConvertor.castToCodeableConcept(value));
653        } else if (name.equals("communicationMethod")) {
654          this.getCommunicationMethod().add(TypeConvertor.castToCodeableConcept(value));
655        } else if (name.equals("validationStatus")) {
656          this.validationStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
657        } else if (name.equals("validationDate")) {
658          this.validationDate = TypeConvertor.castToDateTime(value); // DateTimeType
659        } else if (name.equals("canPushUpdates")) {
660          this.canPushUpdates = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
661        } else if (name.equals("pushTypeAvailable")) {
662          this.getPushTypeAvailable().add(TypeConvertor.castToCodeableConcept(value));
663        } else
664          return super.setProperty(name, value);
665        return value;
666      }
667
668      @Override
669      public Base makeProperty(int hash, String name) throws FHIRException {
670        switch (hash) {
671        case 117694:  return getWho();
672        case 3575610:  return addType(); 
673        case 1314116695:  return addCommunicationMethod(); 
674        case 1775633867:  return getValidationStatus();
675        case -280180793:  return getValidationDateElement();
676        case 1463787104:  return getCanPushUpdates();
677        case 945223605:  return addPushTypeAvailable(); 
678        default: return super.makeProperty(hash, name);
679        }
680
681      }
682
683      @Override
684      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
685        switch (hash) {
686        case 117694: /*who*/ return new String[] {"Reference"};
687        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
688        case 1314116695: /*communicationMethod*/ return new String[] {"CodeableConcept"};
689        case 1775633867: /*validationStatus*/ return new String[] {"CodeableConcept"};
690        case -280180793: /*validationDate*/ return new String[] {"dateTime"};
691        case 1463787104: /*canPushUpdates*/ return new String[] {"CodeableConcept"};
692        case 945223605: /*pushTypeAvailable*/ return new String[] {"CodeableConcept"};
693        default: return super.getTypesForProperty(hash, name);
694        }
695
696      }
697
698      @Override
699      public Base addChild(String name) throws FHIRException {
700        if (name.equals("who")) {
701          this.who = new Reference();
702          return this.who;
703        }
704        else if (name.equals("type")) {
705          return addType();
706        }
707        else if (name.equals("communicationMethod")) {
708          return addCommunicationMethod();
709        }
710        else if (name.equals("validationStatus")) {
711          this.validationStatus = new CodeableConcept();
712          return this.validationStatus;
713        }
714        else if (name.equals("validationDate")) {
715          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.primarySource.validationDate");
716        }
717        else if (name.equals("canPushUpdates")) {
718          this.canPushUpdates = new CodeableConcept();
719          return this.canPushUpdates;
720        }
721        else if (name.equals("pushTypeAvailable")) {
722          return addPushTypeAvailable();
723        }
724        else
725          return super.addChild(name);
726      }
727
728      public VerificationResultPrimarySourceComponent copy() {
729        VerificationResultPrimarySourceComponent dst = new VerificationResultPrimarySourceComponent();
730        copyValues(dst);
731        return dst;
732      }
733
734      public void copyValues(VerificationResultPrimarySourceComponent dst) {
735        super.copyValues(dst);
736        dst.who = who == null ? null : who.copy();
737        if (type != null) {
738          dst.type = new ArrayList<CodeableConcept>();
739          for (CodeableConcept i : type)
740            dst.type.add(i.copy());
741        };
742        if (communicationMethod != null) {
743          dst.communicationMethod = new ArrayList<CodeableConcept>();
744          for (CodeableConcept i : communicationMethod)
745            dst.communicationMethod.add(i.copy());
746        };
747        dst.validationStatus = validationStatus == null ? null : validationStatus.copy();
748        dst.validationDate = validationDate == null ? null : validationDate.copy();
749        dst.canPushUpdates = canPushUpdates == null ? null : canPushUpdates.copy();
750        if (pushTypeAvailable != null) {
751          dst.pushTypeAvailable = new ArrayList<CodeableConcept>();
752          for (CodeableConcept i : pushTypeAvailable)
753            dst.pushTypeAvailable.add(i.copy());
754        };
755      }
756
757      @Override
758      public boolean equalsDeep(Base other_) {
759        if (!super.equalsDeep(other_))
760          return false;
761        if (!(other_ instanceof VerificationResultPrimarySourceComponent))
762          return false;
763        VerificationResultPrimarySourceComponent o = (VerificationResultPrimarySourceComponent) other_;
764        return compareDeep(who, o.who, true) && compareDeep(type, o.type, true) && compareDeep(communicationMethod, o.communicationMethod, true)
765           && compareDeep(validationStatus, o.validationStatus, true) && compareDeep(validationDate, o.validationDate, true)
766           && compareDeep(canPushUpdates, o.canPushUpdates, true) && compareDeep(pushTypeAvailable, o.pushTypeAvailable, true)
767          ;
768      }
769
770      @Override
771      public boolean equalsShallow(Base other_) {
772        if (!super.equalsShallow(other_))
773          return false;
774        if (!(other_ instanceof VerificationResultPrimarySourceComponent))
775          return false;
776        VerificationResultPrimarySourceComponent o = (VerificationResultPrimarySourceComponent) other_;
777        return compareValues(validationDate, o.validationDate, true);
778      }
779
780      public boolean isEmpty() {
781        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(who, type, communicationMethod
782          , validationStatus, validationDate, canPushUpdates, pushTypeAvailable);
783      }
784
785  public String fhirType() {
786    return "VerificationResult.primarySource";
787
788  }
789
790  }
791
792    @Block()
793    public static class VerificationResultAttestationComponent extends BackboneElement implements IBaseBackboneElement {
794        /**
795         * The individual or organization attesting to information.
796         */
797        @Child(name = "who", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=1, min=0, max=1, modifier=false, summary=true)
798        @Description(shortDefinition="The individual or organization attesting to information", formalDefinition="The individual or organization attesting to information." )
799        protected Reference who;
800
801        /**
802         * When the who is asserting on behalf of another (organization or individual).
803         */
804        @Child(name = "onBehalfOf", type = {Organization.class, Practitioner.class, PractitionerRole.class}, order=2, min=0, max=1, modifier=false, summary=true)
805        @Description(shortDefinition="When the who is asserting on behalf of another (organization or individual)", formalDefinition="When the who is asserting on behalf of another (organization or individual)." )
806        protected Reference onBehalfOf;
807
808        /**
809         * The method by which attested information was submitted/retrieved (manual; API; Push).
810         */
811        @Child(name = "communicationMethod", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
812        @Description(shortDefinition="The method by which attested information was submitted/retrieved", formalDefinition="The method by which attested information was submitted/retrieved (manual; API; Push)." )
813        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-communication-method")
814        protected CodeableConcept communicationMethod;
815
816        /**
817         * The date the information was attested to.
818         */
819        @Child(name = "date", type = {DateType.class}, order=4, min=0, max=1, modifier=false, summary=true)
820        @Description(shortDefinition="The date the information was attested to", formalDefinition="The date the information was attested to." )
821        protected DateType date;
822
823        /**
824         * A digital identity certificate associated with the attestation source.
825         */
826        @Child(name = "sourceIdentityCertificate", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
827        @Description(shortDefinition="A digital identity certificate associated with the attestation source", formalDefinition="A digital identity certificate associated with the attestation source." )
828        protected StringType sourceIdentityCertificate;
829
830        /**
831         * A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source.
832         */
833        @Child(name = "proxyIdentityCertificate", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
834        @Description(shortDefinition="A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source", formalDefinition="A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source." )
835        protected StringType proxyIdentityCertificate;
836
837        /**
838         * Signed assertion by the proxy entity indicating that they have the right to submit attested information on behalf of the attestation source.
839         */
840        @Child(name = "proxySignature", type = {Signature.class}, order=7, min=0, max=1, modifier=false, summary=false)
841        @Description(shortDefinition="Proxy signature (digital or image)", formalDefinition="Signed assertion by the proxy entity indicating that they have the right to submit attested information on behalf of the attestation source." )
842        protected Signature proxySignature;
843
844        /**
845         * Signed assertion by the attestation source that they have attested to the information.
846         */
847        @Child(name = "sourceSignature", type = {Signature.class}, order=8, min=0, max=1, modifier=false, summary=false)
848        @Description(shortDefinition="Attester signature (digital or image)", formalDefinition="Signed assertion by the attestation source that they have attested to the information." )
849        protected Signature sourceSignature;
850
851        private static final long serialVersionUID = -1110142980L;
852
853    /**
854     * Constructor
855     */
856      public VerificationResultAttestationComponent() {
857        super();
858      }
859
860        /**
861         * @return {@link #who} (The individual or organization attesting to information.)
862         */
863        public Reference getWho() { 
864          if (this.who == null)
865            if (Configuration.errorOnAutoCreate())
866              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.who");
867            else if (Configuration.doAutoCreate())
868              this.who = new Reference(); // cc
869          return this.who;
870        }
871
872        public boolean hasWho() { 
873          return this.who != null && !this.who.isEmpty();
874        }
875
876        /**
877         * @param value {@link #who} (The individual or organization attesting to information.)
878         */
879        public VerificationResultAttestationComponent setWho(Reference value) { 
880          this.who = value;
881          return this;
882        }
883
884        /**
885         * @return {@link #onBehalfOf} (When the who is asserting on behalf of another (organization or individual).)
886         */
887        public Reference getOnBehalfOf() { 
888          if (this.onBehalfOf == null)
889            if (Configuration.errorOnAutoCreate())
890              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.onBehalfOf");
891            else if (Configuration.doAutoCreate())
892              this.onBehalfOf = new Reference(); // cc
893          return this.onBehalfOf;
894        }
895
896        public boolean hasOnBehalfOf() { 
897          return this.onBehalfOf != null && !this.onBehalfOf.isEmpty();
898        }
899
900        /**
901         * @param value {@link #onBehalfOf} (When the who is asserting on behalf of another (organization or individual).)
902         */
903        public VerificationResultAttestationComponent setOnBehalfOf(Reference value) { 
904          this.onBehalfOf = value;
905          return this;
906        }
907
908        /**
909         * @return {@link #communicationMethod} (The method by which attested information was submitted/retrieved (manual; API; Push).)
910         */
911        public CodeableConcept getCommunicationMethod() { 
912          if (this.communicationMethod == null)
913            if (Configuration.errorOnAutoCreate())
914              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.communicationMethod");
915            else if (Configuration.doAutoCreate())
916              this.communicationMethod = new CodeableConcept(); // cc
917          return this.communicationMethod;
918        }
919
920        public boolean hasCommunicationMethod() { 
921          return this.communicationMethod != null && !this.communicationMethod.isEmpty();
922        }
923
924        /**
925         * @param value {@link #communicationMethod} (The method by which attested information was submitted/retrieved (manual; API; Push).)
926         */
927        public VerificationResultAttestationComponent setCommunicationMethod(CodeableConcept value) { 
928          this.communicationMethod = value;
929          return this;
930        }
931
932        /**
933         * @return {@link #date} (The date the information was attested to.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
934         */
935        public DateType getDateElement() { 
936          if (this.date == null)
937            if (Configuration.errorOnAutoCreate())
938              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.date");
939            else if (Configuration.doAutoCreate())
940              this.date = new DateType(); // bb
941          return this.date;
942        }
943
944        public boolean hasDateElement() { 
945          return this.date != null && !this.date.isEmpty();
946        }
947
948        public boolean hasDate() { 
949          return this.date != null && !this.date.isEmpty();
950        }
951
952        /**
953         * @param value {@link #date} (The date the information was attested to.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
954         */
955        public VerificationResultAttestationComponent setDateElement(DateType value) { 
956          this.date = value;
957          return this;
958        }
959
960        /**
961         * @return The date the information was attested to.
962         */
963        public Date getDate() { 
964          return this.date == null ? null : this.date.getValue();
965        }
966
967        /**
968         * @param value The date the information was attested to.
969         */
970        public VerificationResultAttestationComponent setDate(Date value) { 
971          if (value == null)
972            this.date = null;
973          else {
974            if (this.date == null)
975              this.date = new DateType();
976            this.date.setValue(value);
977          }
978          return this;
979        }
980
981        /**
982         * @return {@link #sourceIdentityCertificate} (A digital identity certificate associated with the attestation source.). This is the underlying object with id, value and extensions. The accessor "getSourceIdentityCertificate" gives direct access to the value
983         */
984        public StringType getSourceIdentityCertificateElement() { 
985          if (this.sourceIdentityCertificate == null)
986            if (Configuration.errorOnAutoCreate())
987              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.sourceIdentityCertificate");
988            else if (Configuration.doAutoCreate())
989              this.sourceIdentityCertificate = new StringType(); // bb
990          return this.sourceIdentityCertificate;
991        }
992
993        public boolean hasSourceIdentityCertificateElement() { 
994          return this.sourceIdentityCertificate != null && !this.sourceIdentityCertificate.isEmpty();
995        }
996
997        public boolean hasSourceIdentityCertificate() { 
998          return this.sourceIdentityCertificate != null && !this.sourceIdentityCertificate.isEmpty();
999        }
1000
1001        /**
1002         * @param value {@link #sourceIdentityCertificate} (A digital identity certificate associated with the attestation source.). This is the underlying object with id, value and extensions. The accessor "getSourceIdentityCertificate" gives direct access to the value
1003         */
1004        public VerificationResultAttestationComponent setSourceIdentityCertificateElement(StringType value) { 
1005          this.sourceIdentityCertificate = value;
1006          return this;
1007        }
1008
1009        /**
1010         * @return A digital identity certificate associated with the attestation source.
1011         */
1012        public String getSourceIdentityCertificate() { 
1013          return this.sourceIdentityCertificate == null ? null : this.sourceIdentityCertificate.getValue();
1014        }
1015
1016        /**
1017         * @param value A digital identity certificate associated with the attestation source.
1018         */
1019        public VerificationResultAttestationComponent setSourceIdentityCertificate(String value) { 
1020          if (Utilities.noString(value))
1021            this.sourceIdentityCertificate = null;
1022          else {
1023            if (this.sourceIdentityCertificate == null)
1024              this.sourceIdentityCertificate = new StringType();
1025            this.sourceIdentityCertificate.setValue(value);
1026          }
1027          return this;
1028        }
1029
1030        /**
1031         * @return {@link #proxyIdentityCertificate} (A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source.). This is the underlying object with id, value and extensions. The accessor "getProxyIdentityCertificate" gives direct access to the value
1032         */
1033        public StringType getProxyIdentityCertificateElement() { 
1034          if (this.proxyIdentityCertificate == null)
1035            if (Configuration.errorOnAutoCreate())
1036              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.proxyIdentityCertificate");
1037            else if (Configuration.doAutoCreate())
1038              this.proxyIdentityCertificate = new StringType(); // bb
1039          return this.proxyIdentityCertificate;
1040        }
1041
1042        public boolean hasProxyIdentityCertificateElement() { 
1043          return this.proxyIdentityCertificate != null && !this.proxyIdentityCertificate.isEmpty();
1044        }
1045
1046        public boolean hasProxyIdentityCertificate() { 
1047          return this.proxyIdentityCertificate != null && !this.proxyIdentityCertificate.isEmpty();
1048        }
1049
1050        /**
1051         * @param value {@link #proxyIdentityCertificate} (A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source.). This is the underlying object with id, value and extensions. The accessor "getProxyIdentityCertificate" gives direct access to the value
1052         */
1053        public VerificationResultAttestationComponent setProxyIdentityCertificateElement(StringType value) { 
1054          this.proxyIdentityCertificate = value;
1055          return this;
1056        }
1057
1058        /**
1059         * @return A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source.
1060         */
1061        public String getProxyIdentityCertificate() { 
1062          return this.proxyIdentityCertificate == null ? null : this.proxyIdentityCertificate.getValue();
1063        }
1064
1065        /**
1066         * @param value A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source.
1067         */
1068        public VerificationResultAttestationComponent setProxyIdentityCertificate(String value) { 
1069          if (Utilities.noString(value))
1070            this.proxyIdentityCertificate = null;
1071          else {
1072            if (this.proxyIdentityCertificate == null)
1073              this.proxyIdentityCertificate = new StringType();
1074            this.proxyIdentityCertificate.setValue(value);
1075          }
1076          return this;
1077        }
1078
1079        /**
1080         * @return {@link #proxySignature} (Signed assertion by the proxy entity indicating that they have the right to submit attested information on behalf of the attestation source.)
1081         */
1082        public Signature getProxySignature() { 
1083          if (this.proxySignature == null)
1084            if (Configuration.errorOnAutoCreate())
1085              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.proxySignature");
1086            else if (Configuration.doAutoCreate())
1087              this.proxySignature = new Signature(); // cc
1088          return this.proxySignature;
1089        }
1090
1091        public boolean hasProxySignature() { 
1092          return this.proxySignature != null && !this.proxySignature.isEmpty();
1093        }
1094
1095        /**
1096         * @param value {@link #proxySignature} (Signed assertion by the proxy entity indicating that they have the right to submit attested information on behalf of the attestation source.)
1097         */
1098        public VerificationResultAttestationComponent setProxySignature(Signature value) { 
1099          this.proxySignature = value;
1100          return this;
1101        }
1102
1103        /**
1104         * @return {@link #sourceSignature} (Signed assertion by the attestation source that they have attested to the information.)
1105         */
1106        public Signature getSourceSignature() { 
1107          if (this.sourceSignature == null)
1108            if (Configuration.errorOnAutoCreate())
1109              throw new Error("Attempt to auto-create VerificationResultAttestationComponent.sourceSignature");
1110            else if (Configuration.doAutoCreate())
1111              this.sourceSignature = new Signature(); // cc
1112          return this.sourceSignature;
1113        }
1114
1115        public boolean hasSourceSignature() { 
1116          return this.sourceSignature != null && !this.sourceSignature.isEmpty();
1117        }
1118
1119        /**
1120         * @param value {@link #sourceSignature} (Signed assertion by the attestation source that they have attested to the information.)
1121         */
1122        public VerificationResultAttestationComponent setSourceSignature(Signature value) { 
1123          this.sourceSignature = value;
1124          return this;
1125        }
1126
1127        protected void listChildren(List<Property> children) {
1128          super.listChildren(children);
1129          children.add(new Property("who", "Reference(Practitioner|PractitionerRole|Organization)", "The individual or organization attesting to information.", 0, 1, who));
1130          children.add(new Property("onBehalfOf", "Reference(Organization|Practitioner|PractitionerRole)", "When the who is asserting on behalf of another (organization or individual).", 0, 1, onBehalfOf));
1131          children.add(new Property("communicationMethod", "CodeableConcept", "The method by which attested information was submitted/retrieved (manual; API; Push).", 0, 1, communicationMethod));
1132          children.add(new Property("date", "date", "The date the information was attested to.", 0, 1, date));
1133          children.add(new Property("sourceIdentityCertificate", "string", "A digital identity certificate associated with the attestation source.", 0, 1, sourceIdentityCertificate));
1134          children.add(new Property("proxyIdentityCertificate", "string", "A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source.", 0, 1, proxyIdentityCertificate));
1135          children.add(new Property("proxySignature", "Signature", "Signed assertion by the proxy entity indicating that they have the right to submit attested information on behalf of the attestation source.", 0, 1, proxySignature));
1136          children.add(new Property("sourceSignature", "Signature", "Signed assertion by the attestation source that they have attested to the information.", 0, 1, sourceSignature));
1137        }
1138
1139        @Override
1140        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1141          switch (_hash) {
1142          case 117694: /*who*/  return new Property("who", "Reference(Practitioner|PractitionerRole|Organization)", "The individual or organization attesting to information.", 0, 1, who);
1143          case -14402964: /*onBehalfOf*/  return new Property("onBehalfOf", "Reference(Organization|Practitioner|PractitionerRole)", "When the who is asserting on behalf of another (organization or individual).", 0, 1, onBehalfOf);
1144          case 1314116695: /*communicationMethod*/  return new Property("communicationMethod", "CodeableConcept", "The method by which attested information was submitted/retrieved (manual; API; Push).", 0, 1, communicationMethod);
1145          case 3076014: /*date*/  return new Property("date", "date", "The date the information was attested to.", 0, 1, date);
1146          case -799067682: /*sourceIdentityCertificate*/  return new Property("sourceIdentityCertificate", "string", "A digital identity certificate associated with the attestation source.", 0, 1, sourceIdentityCertificate);
1147          case 431558827: /*proxyIdentityCertificate*/  return new Property("proxyIdentityCertificate", "string", "A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source.", 0, 1, proxyIdentityCertificate);
1148          case 1455540714: /*proxySignature*/  return new Property("proxySignature", "Signature", "Signed assertion by the proxy entity indicating that they have the right to submit attested information on behalf of the attestation source.", 0, 1, proxySignature);
1149          case 1754480349: /*sourceSignature*/  return new Property("sourceSignature", "Signature", "Signed assertion by the attestation source that they have attested to the information.", 0, 1, sourceSignature);
1150          default: return super.getNamedProperty(_hash, _name, _checkValid);
1151          }
1152
1153        }
1154
1155      @Override
1156      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1157        switch (hash) {
1158        case 117694: /*who*/ return this.who == null ? new Base[0] : new Base[] {this.who}; // Reference
1159        case -14402964: /*onBehalfOf*/ return this.onBehalfOf == null ? new Base[0] : new Base[] {this.onBehalfOf}; // Reference
1160        case 1314116695: /*communicationMethod*/ return this.communicationMethod == null ? new Base[0] : new Base[] {this.communicationMethod}; // CodeableConcept
1161        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateType
1162        case -799067682: /*sourceIdentityCertificate*/ return this.sourceIdentityCertificate == null ? new Base[0] : new Base[] {this.sourceIdentityCertificate}; // StringType
1163        case 431558827: /*proxyIdentityCertificate*/ return this.proxyIdentityCertificate == null ? new Base[0] : new Base[] {this.proxyIdentityCertificate}; // StringType
1164        case 1455540714: /*proxySignature*/ return this.proxySignature == null ? new Base[0] : new Base[] {this.proxySignature}; // Signature
1165        case 1754480349: /*sourceSignature*/ return this.sourceSignature == null ? new Base[0] : new Base[] {this.sourceSignature}; // Signature
1166        default: return super.getProperty(hash, name, checkValid);
1167        }
1168
1169      }
1170
1171      @Override
1172      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1173        switch (hash) {
1174        case 117694: // who
1175          this.who = TypeConvertor.castToReference(value); // Reference
1176          return value;
1177        case -14402964: // onBehalfOf
1178          this.onBehalfOf = TypeConvertor.castToReference(value); // Reference
1179          return value;
1180        case 1314116695: // communicationMethod
1181          this.communicationMethod = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1182          return value;
1183        case 3076014: // date
1184          this.date = TypeConvertor.castToDate(value); // DateType
1185          return value;
1186        case -799067682: // sourceIdentityCertificate
1187          this.sourceIdentityCertificate = TypeConvertor.castToString(value); // StringType
1188          return value;
1189        case 431558827: // proxyIdentityCertificate
1190          this.proxyIdentityCertificate = TypeConvertor.castToString(value); // StringType
1191          return value;
1192        case 1455540714: // proxySignature
1193          this.proxySignature = TypeConvertor.castToSignature(value); // Signature
1194          return value;
1195        case 1754480349: // sourceSignature
1196          this.sourceSignature = TypeConvertor.castToSignature(value); // Signature
1197          return value;
1198        default: return super.setProperty(hash, name, value);
1199        }
1200
1201      }
1202
1203      @Override
1204      public Base setProperty(String name, Base value) throws FHIRException {
1205        if (name.equals("who")) {
1206          this.who = TypeConvertor.castToReference(value); // Reference
1207        } else if (name.equals("onBehalfOf")) {
1208          this.onBehalfOf = TypeConvertor.castToReference(value); // Reference
1209        } else if (name.equals("communicationMethod")) {
1210          this.communicationMethod = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1211        } else if (name.equals("date")) {
1212          this.date = TypeConvertor.castToDate(value); // DateType
1213        } else if (name.equals("sourceIdentityCertificate")) {
1214          this.sourceIdentityCertificate = TypeConvertor.castToString(value); // StringType
1215        } else if (name.equals("proxyIdentityCertificate")) {
1216          this.proxyIdentityCertificate = TypeConvertor.castToString(value); // StringType
1217        } else if (name.equals("proxySignature")) {
1218          this.proxySignature = TypeConvertor.castToSignature(value); // Signature
1219        } else if (name.equals("sourceSignature")) {
1220          this.sourceSignature = TypeConvertor.castToSignature(value); // Signature
1221        } else
1222          return super.setProperty(name, value);
1223        return value;
1224      }
1225
1226      @Override
1227      public Base makeProperty(int hash, String name) throws FHIRException {
1228        switch (hash) {
1229        case 117694:  return getWho();
1230        case -14402964:  return getOnBehalfOf();
1231        case 1314116695:  return getCommunicationMethod();
1232        case 3076014:  return getDateElement();
1233        case -799067682:  return getSourceIdentityCertificateElement();
1234        case 431558827:  return getProxyIdentityCertificateElement();
1235        case 1455540714:  return getProxySignature();
1236        case 1754480349:  return getSourceSignature();
1237        default: return super.makeProperty(hash, name);
1238        }
1239
1240      }
1241
1242      @Override
1243      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1244        switch (hash) {
1245        case 117694: /*who*/ return new String[] {"Reference"};
1246        case -14402964: /*onBehalfOf*/ return new String[] {"Reference"};
1247        case 1314116695: /*communicationMethod*/ return new String[] {"CodeableConcept"};
1248        case 3076014: /*date*/ return new String[] {"date"};
1249        case -799067682: /*sourceIdentityCertificate*/ return new String[] {"string"};
1250        case 431558827: /*proxyIdentityCertificate*/ return new String[] {"string"};
1251        case 1455540714: /*proxySignature*/ return new String[] {"Signature"};
1252        case 1754480349: /*sourceSignature*/ return new String[] {"Signature"};
1253        default: return super.getTypesForProperty(hash, name);
1254        }
1255
1256      }
1257
1258      @Override
1259      public Base addChild(String name) throws FHIRException {
1260        if (name.equals("who")) {
1261          this.who = new Reference();
1262          return this.who;
1263        }
1264        else if (name.equals("onBehalfOf")) {
1265          this.onBehalfOf = new Reference();
1266          return this.onBehalfOf;
1267        }
1268        else if (name.equals("communicationMethod")) {
1269          this.communicationMethod = new CodeableConcept();
1270          return this.communicationMethod;
1271        }
1272        else if (name.equals("date")) {
1273          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.attestation.date");
1274        }
1275        else if (name.equals("sourceIdentityCertificate")) {
1276          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.attestation.sourceIdentityCertificate");
1277        }
1278        else if (name.equals("proxyIdentityCertificate")) {
1279          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.attestation.proxyIdentityCertificate");
1280        }
1281        else if (name.equals("proxySignature")) {
1282          this.proxySignature = new Signature();
1283          return this.proxySignature;
1284        }
1285        else if (name.equals("sourceSignature")) {
1286          this.sourceSignature = new Signature();
1287          return this.sourceSignature;
1288        }
1289        else
1290          return super.addChild(name);
1291      }
1292
1293      public VerificationResultAttestationComponent copy() {
1294        VerificationResultAttestationComponent dst = new VerificationResultAttestationComponent();
1295        copyValues(dst);
1296        return dst;
1297      }
1298
1299      public void copyValues(VerificationResultAttestationComponent dst) {
1300        super.copyValues(dst);
1301        dst.who = who == null ? null : who.copy();
1302        dst.onBehalfOf = onBehalfOf == null ? null : onBehalfOf.copy();
1303        dst.communicationMethod = communicationMethod == null ? null : communicationMethod.copy();
1304        dst.date = date == null ? null : date.copy();
1305        dst.sourceIdentityCertificate = sourceIdentityCertificate == null ? null : sourceIdentityCertificate.copy();
1306        dst.proxyIdentityCertificate = proxyIdentityCertificate == null ? null : proxyIdentityCertificate.copy();
1307        dst.proxySignature = proxySignature == null ? null : proxySignature.copy();
1308        dst.sourceSignature = sourceSignature == null ? null : sourceSignature.copy();
1309      }
1310
1311      @Override
1312      public boolean equalsDeep(Base other_) {
1313        if (!super.equalsDeep(other_))
1314          return false;
1315        if (!(other_ instanceof VerificationResultAttestationComponent))
1316          return false;
1317        VerificationResultAttestationComponent o = (VerificationResultAttestationComponent) other_;
1318        return compareDeep(who, o.who, true) && compareDeep(onBehalfOf, o.onBehalfOf, true) && compareDeep(communicationMethod, o.communicationMethod, true)
1319           && compareDeep(date, o.date, true) && compareDeep(sourceIdentityCertificate, o.sourceIdentityCertificate, true)
1320           && compareDeep(proxyIdentityCertificate, o.proxyIdentityCertificate, true) && compareDeep(proxySignature, o.proxySignature, true)
1321           && compareDeep(sourceSignature, o.sourceSignature, true);
1322      }
1323
1324      @Override
1325      public boolean equalsShallow(Base other_) {
1326        if (!super.equalsShallow(other_))
1327          return false;
1328        if (!(other_ instanceof VerificationResultAttestationComponent))
1329          return false;
1330        VerificationResultAttestationComponent o = (VerificationResultAttestationComponent) other_;
1331        return compareValues(date, o.date, true) && compareValues(sourceIdentityCertificate, o.sourceIdentityCertificate, true)
1332           && compareValues(proxyIdentityCertificate, o.proxyIdentityCertificate, true);
1333      }
1334
1335      public boolean isEmpty() {
1336        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(who, onBehalfOf, communicationMethod
1337          , date, sourceIdentityCertificate, proxyIdentityCertificate, proxySignature, sourceSignature
1338          );
1339      }
1340
1341  public String fhirType() {
1342    return "VerificationResult.attestation";
1343
1344  }
1345
1346  }
1347
1348    @Block()
1349    public static class VerificationResultValidatorComponent extends BackboneElement implements IBaseBackboneElement {
1350        /**
1351         * Reference to the organization validating information.
1352         */
1353        @Child(name = "organization", type = {Organization.class}, order=1, min=1, max=1, modifier=false, summary=false)
1354        @Description(shortDefinition="Reference to the organization validating information", formalDefinition="Reference to the organization validating information." )
1355        protected Reference organization;
1356
1357        /**
1358         * A digital identity certificate associated with the validator.
1359         */
1360        @Child(name = "identityCertificate", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1361        @Description(shortDefinition="A digital identity certificate associated with the validator", formalDefinition="A digital identity certificate associated with the validator." )
1362        protected StringType identityCertificate;
1363
1364        /**
1365         * Signed assertion by the validator that they have validated the information.
1366         */
1367        @Child(name = "attestationSignature", type = {Signature.class}, order=3, min=0, max=1, modifier=false, summary=false)
1368        @Description(shortDefinition="Validator signature (digital or image)", formalDefinition="Signed assertion by the validator that they have validated the information." )
1369        protected Signature attestationSignature;
1370
1371        private static final long serialVersionUID = 335952370L;
1372
1373    /**
1374     * Constructor
1375     */
1376      public VerificationResultValidatorComponent() {
1377        super();
1378      }
1379
1380    /**
1381     * Constructor
1382     */
1383      public VerificationResultValidatorComponent(Reference organization) {
1384        super();
1385        this.setOrganization(organization);
1386      }
1387
1388        /**
1389         * @return {@link #organization} (Reference to the organization validating information.)
1390         */
1391        public Reference getOrganization() { 
1392          if (this.organization == null)
1393            if (Configuration.errorOnAutoCreate())
1394              throw new Error("Attempt to auto-create VerificationResultValidatorComponent.organization");
1395            else if (Configuration.doAutoCreate())
1396              this.organization = new Reference(); // cc
1397          return this.organization;
1398        }
1399
1400        public boolean hasOrganization() { 
1401          return this.organization != null && !this.organization.isEmpty();
1402        }
1403
1404        /**
1405         * @param value {@link #organization} (Reference to the organization validating information.)
1406         */
1407        public VerificationResultValidatorComponent setOrganization(Reference value) { 
1408          this.organization = value;
1409          return this;
1410        }
1411
1412        /**
1413         * @return {@link #identityCertificate} (A digital identity certificate associated with the validator.). This is the underlying object with id, value and extensions. The accessor "getIdentityCertificate" gives direct access to the value
1414         */
1415        public StringType getIdentityCertificateElement() { 
1416          if (this.identityCertificate == null)
1417            if (Configuration.errorOnAutoCreate())
1418              throw new Error("Attempt to auto-create VerificationResultValidatorComponent.identityCertificate");
1419            else if (Configuration.doAutoCreate())
1420              this.identityCertificate = new StringType(); // bb
1421          return this.identityCertificate;
1422        }
1423
1424        public boolean hasIdentityCertificateElement() { 
1425          return this.identityCertificate != null && !this.identityCertificate.isEmpty();
1426        }
1427
1428        public boolean hasIdentityCertificate() { 
1429          return this.identityCertificate != null && !this.identityCertificate.isEmpty();
1430        }
1431
1432        /**
1433         * @param value {@link #identityCertificate} (A digital identity certificate associated with the validator.). This is the underlying object with id, value and extensions. The accessor "getIdentityCertificate" gives direct access to the value
1434         */
1435        public VerificationResultValidatorComponent setIdentityCertificateElement(StringType value) { 
1436          this.identityCertificate = value;
1437          return this;
1438        }
1439
1440        /**
1441         * @return A digital identity certificate associated with the validator.
1442         */
1443        public String getIdentityCertificate() { 
1444          return this.identityCertificate == null ? null : this.identityCertificate.getValue();
1445        }
1446
1447        /**
1448         * @param value A digital identity certificate associated with the validator.
1449         */
1450        public VerificationResultValidatorComponent setIdentityCertificate(String value) { 
1451          if (Utilities.noString(value))
1452            this.identityCertificate = null;
1453          else {
1454            if (this.identityCertificate == null)
1455              this.identityCertificate = new StringType();
1456            this.identityCertificate.setValue(value);
1457          }
1458          return this;
1459        }
1460
1461        /**
1462         * @return {@link #attestationSignature} (Signed assertion by the validator that they have validated the information.)
1463         */
1464        public Signature getAttestationSignature() { 
1465          if (this.attestationSignature == null)
1466            if (Configuration.errorOnAutoCreate())
1467              throw new Error("Attempt to auto-create VerificationResultValidatorComponent.attestationSignature");
1468            else if (Configuration.doAutoCreate())
1469              this.attestationSignature = new Signature(); // cc
1470          return this.attestationSignature;
1471        }
1472
1473        public boolean hasAttestationSignature() { 
1474          return this.attestationSignature != null && !this.attestationSignature.isEmpty();
1475        }
1476
1477        /**
1478         * @param value {@link #attestationSignature} (Signed assertion by the validator that they have validated the information.)
1479         */
1480        public VerificationResultValidatorComponent setAttestationSignature(Signature value) { 
1481          this.attestationSignature = value;
1482          return this;
1483        }
1484
1485        protected void listChildren(List<Property> children) {
1486          super.listChildren(children);
1487          children.add(new Property("organization", "Reference(Organization)", "Reference to the organization validating information.", 0, 1, organization));
1488          children.add(new Property("identityCertificate", "string", "A digital identity certificate associated with the validator.", 0, 1, identityCertificate));
1489          children.add(new Property("attestationSignature", "Signature", "Signed assertion by the validator that they have validated the information.", 0, 1, attestationSignature));
1490        }
1491
1492        @Override
1493        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1494          switch (_hash) {
1495          case 1178922291: /*organization*/  return new Property("organization", "Reference(Organization)", "Reference to the organization validating information.", 0, 1, organization);
1496          case -854379015: /*identityCertificate*/  return new Property("identityCertificate", "string", "A digital identity certificate associated with the validator.", 0, 1, identityCertificate);
1497          case -184196152: /*attestationSignature*/  return new Property("attestationSignature", "Signature", "Signed assertion by the validator that they have validated the information.", 0, 1, attestationSignature);
1498          default: return super.getNamedProperty(_hash, _name, _checkValid);
1499          }
1500
1501        }
1502
1503      @Override
1504      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1505        switch (hash) {
1506        case 1178922291: /*organization*/ return this.organization == null ? new Base[0] : new Base[] {this.organization}; // Reference
1507        case -854379015: /*identityCertificate*/ return this.identityCertificate == null ? new Base[0] : new Base[] {this.identityCertificate}; // StringType
1508        case -184196152: /*attestationSignature*/ return this.attestationSignature == null ? new Base[0] : new Base[] {this.attestationSignature}; // Signature
1509        default: return super.getProperty(hash, name, checkValid);
1510        }
1511
1512      }
1513
1514      @Override
1515      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1516        switch (hash) {
1517        case 1178922291: // organization
1518          this.organization = TypeConvertor.castToReference(value); // Reference
1519          return value;
1520        case -854379015: // identityCertificate
1521          this.identityCertificate = TypeConvertor.castToString(value); // StringType
1522          return value;
1523        case -184196152: // attestationSignature
1524          this.attestationSignature = TypeConvertor.castToSignature(value); // Signature
1525          return value;
1526        default: return super.setProperty(hash, name, value);
1527        }
1528
1529      }
1530
1531      @Override
1532      public Base setProperty(String name, Base value) throws FHIRException {
1533        if (name.equals("organization")) {
1534          this.organization = TypeConvertor.castToReference(value); // Reference
1535        } else if (name.equals("identityCertificate")) {
1536          this.identityCertificate = TypeConvertor.castToString(value); // StringType
1537        } else if (name.equals("attestationSignature")) {
1538          this.attestationSignature = TypeConvertor.castToSignature(value); // Signature
1539        } else
1540          return super.setProperty(name, value);
1541        return value;
1542      }
1543
1544      @Override
1545      public Base makeProperty(int hash, String name) throws FHIRException {
1546        switch (hash) {
1547        case 1178922291:  return getOrganization();
1548        case -854379015:  return getIdentityCertificateElement();
1549        case -184196152:  return getAttestationSignature();
1550        default: return super.makeProperty(hash, name);
1551        }
1552
1553      }
1554
1555      @Override
1556      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1557        switch (hash) {
1558        case 1178922291: /*organization*/ return new String[] {"Reference"};
1559        case -854379015: /*identityCertificate*/ return new String[] {"string"};
1560        case -184196152: /*attestationSignature*/ return new String[] {"Signature"};
1561        default: return super.getTypesForProperty(hash, name);
1562        }
1563
1564      }
1565
1566      @Override
1567      public Base addChild(String name) throws FHIRException {
1568        if (name.equals("organization")) {
1569          this.organization = new Reference();
1570          return this.organization;
1571        }
1572        else if (name.equals("identityCertificate")) {
1573          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.validator.identityCertificate");
1574        }
1575        else if (name.equals("attestationSignature")) {
1576          this.attestationSignature = new Signature();
1577          return this.attestationSignature;
1578        }
1579        else
1580          return super.addChild(name);
1581      }
1582
1583      public VerificationResultValidatorComponent copy() {
1584        VerificationResultValidatorComponent dst = new VerificationResultValidatorComponent();
1585        copyValues(dst);
1586        return dst;
1587      }
1588
1589      public void copyValues(VerificationResultValidatorComponent dst) {
1590        super.copyValues(dst);
1591        dst.organization = organization == null ? null : organization.copy();
1592        dst.identityCertificate = identityCertificate == null ? null : identityCertificate.copy();
1593        dst.attestationSignature = attestationSignature == null ? null : attestationSignature.copy();
1594      }
1595
1596      @Override
1597      public boolean equalsDeep(Base other_) {
1598        if (!super.equalsDeep(other_))
1599          return false;
1600        if (!(other_ instanceof VerificationResultValidatorComponent))
1601          return false;
1602        VerificationResultValidatorComponent o = (VerificationResultValidatorComponent) other_;
1603        return compareDeep(organization, o.organization, true) && compareDeep(identityCertificate, o.identityCertificate, true)
1604           && compareDeep(attestationSignature, o.attestationSignature, true);
1605      }
1606
1607      @Override
1608      public boolean equalsShallow(Base other_) {
1609        if (!super.equalsShallow(other_))
1610          return false;
1611        if (!(other_ instanceof VerificationResultValidatorComponent))
1612          return false;
1613        VerificationResultValidatorComponent o = (VerificationResultValidatorComponent) other_;
1614        return compareValues(identityCertificate, o.identityCertificate, true);
1615      }
1616
1617      public boolean isEmpty() {
1618        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(organization, identityCertificate
1619          , attestationSignature);
1620      }
1621
1622  public String fhirType() {
1623    return "VerificationResult.validator";
1624
1625  }
1626
1627  }
1628
1629    /**
1630     * A resource that was validated.
1631     */
1632    @Child(name = "target", type = {Reference.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1633    @Description(shortDefinition="A resource that was validated", formalDefinition="A resource that was validated." )
1634    protected List<Reference> target;
1635
1636    /**
1637     * The fhirpath location(s) within the resource that was validated.
1638     */
1639    @Child(name = "targetLocation", type = {StringType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1640    @Description(shortDefinition="The fhirpath location(s) within the resource that was validated", formalDefinition="The fhirpath location(s) within the resource that was validated." )
1641    protected List<StringType> targetLocation;
1642
1643    /**
1644     * The frequency with which the target must be validated (none; initial; periodic).
1645     */
1646    @Child(name = "need", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
1647    @Description(shortDefinition="none | initial | periodic", formalDefinition="The frequency with which the target must be validated (none; initial; periodic)." )
1648    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-need")
1649    protected CodeableConcept need;
1650
1651    /**
1652     * The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed).
1653     */
1654    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1655    @Description(shortDefinition="attested | validated | in-process | req-revalid | val-fail | reval-fail | entered-in-error", formalDefinition="The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed)." )
1656    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-status")
1657    protected Enumeration<VerificationResultStatus> status;
1658
1659    /**
1660     * When the validation status was updated.
1661     */
1662    @Child(name = "statusDate", type = {DateTimeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1663    @Description(shortDefinition="When the validation status was updated", formalDefinition="When the validation status was updated." )
1664    protected DateTimeType statusDate;
1665
1666    /**
1667     * What the target is validated against (nothing; primary source; multiple sources).
1668     */
1669    @Child(name = "validationType", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=true)
1670    @Description(shortDefinition="nothing | primary | multiple", formalDefinition="What the target is validated against (nothing; primary source; multiple sources)." )
1671    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-validation-type")
1672    protected CodeableConcept validationType;
1673
1674    /**
1675     * The primary process by which the target is validated (edit check; value set; primary source; multiple sources; standalone; in context).
1676     */
1677    @Child(name = "validationProcess", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1678    @Description(shortDefinition="The primary process by which the target is validated (edit check; value set; primary source; multiple sources; standalone; in context)", formalDefinition="The primary process by which the target is validated (edit check; value set; primary source; multiple sources; standalone; in context)." )
1679    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-validation-process")
1680    protected List<CodeableConcept> validationProcess;
1681
1682    /**
1683     * Frequency of revalidation.
1684     */
1685    @Child(name = "frequency", type = {Timing.class}, order=7, min=0, max=1, modifier=false, summary=false)
1686    @Description(shortDefinition="Frequency of revalidation", formalDefinition="Frequency of revalidation." )
1687    protected Timing frequency;
1688
1689    /**
1690     * The date/time validation was last completed (including failed validations).
1691     */
1692    @Child(name = "lastPerformed", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=false)
1693    @Description(shortDefinition="The date/time validation was last completed (including failed validations)", formalDefinition="The date/time validation was last completed (including failed validations)." )
1694    protected DateTimeType lastPerformed;
1695
1696    /**
1697     * The date when target is next validated, if appropriate.
1698     */
1699    @Child(name = "nextScheduled", type = {DateType.class}, order=9, min=0, max=1, modifier=false, summary=false)
1700    @Description(shortDefinition="The date when target is next validated, if appropriate", formalDefinition="The date when target is next validated, if appropriate." )
1701    protected DateType nextScheduled;
1702
1703    /**
1704     * The result if validation fails (fatal; warning; record only; none).
1705     */
1706    @Child(name = "failureAction", type = {CodeableConcept.class}, order=10, min=0, max=1, modifier=false, summary=true)
1707    @Description(shortDefinition="fatal | warn | rec-only | none", formalDefinition="The result if validation fails (fatal; warning; record only; none)." )
1708    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/verificationresult-failure-action")
1709    protected CodeableConcept failureAction;
1710
1711    /**
1712     * Information about the primary source(s) involved in validation.
1713     */
1714    @Child(name = "primarySource", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1715    @Description(shortDefinition="Information about the primary source(s) involved in validation", formalDefinition="Information about the primary source(s) involved in validation." )
1716    protected List<VerificationResultPrimarySourceComponent> primarySource;
1717
1718    /**
1719     * Information about the entity attesting to information.
1720     */
1721    @Child(name = "attestation", type = {}, order=12, min=0, max=1, modifier=false, summary=false)
1722    @Description(shortDefinition="Information about the entity attesting to information", formalDefinition="Information about the entity attesting to information." )
1723    protected VerificationResultAttestationComponent attestation;
1724
1725    /**
1726     * Information about the entity validating information.
1727     */
1728    @Child(name = "validator", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1729    @Description(shortDefinition="Information about the entity validating information", formalDefinition="Information about the entity validating information." )
1730    protected List<VerificationResultValidatorComponent> validator;
1731
1732    private static final long serialVersionUID = -612905810L;
1733
1734  /**
1735   * Constructor
1736   */
1737    public VerificationResult() {
1738      super();
1739    }
1740
1741  /**
1742   * Constructor
1743   */
1744    public VerificationResult(VerificationResultStatus status) {
1745      super();
1746      this.setStatus(status);
1747    }
1748
1749    /**
1750     * @return {@link #target} (A resource that was validated.)
1751     */
1752    public List<Reference> getTarget() { 
1753      if (this.target == null)
1754        this.target = new ArrayList<Reference>();
1755      return this.target;
1756    }
1757
1758    /**
1759     * @return Returns a reference to <code>this</code> for easy method chaining
1760     */
1761    public VerificationResult setTarget(List<Reference> theTarget) { 
1762      this.target = theTarget;
1763      return this;
1764    }
1765
1766    public boolean hasTarget() { 
1767      if (this.target == null)
1768        return false;
1769      for (Reference item : this.target)
1770        if (!item.isEmpty())
1771          return true;
1772      return false;
1773    }
1774
1775    public Reference addTarget() { //3
1776      Reference t = new Reference();
1777      if (this.target == null)
1778        this.target = new ArrayList<Reference>();
1779      this.target.add(t);
1780      return t;
1781    }
1782
1783    public VerificationResult addTarget(Reference t) { //3
1784      if (t == null)
1785        return this;
1786      if (this.target == null)
1787        this.target = new ArrayList<Reference>();
1788      this.target.add(t);
1789      return this;
1790    }
1791
1792    /**
1793     * @return The first repetition of repeating field {@link #target}, creating it if it does not already exist {3}
1794     */
1795    public Reference getTargetFirstRep() { 
1796      if (getTarget().isEmpty()) {
1797        addTarget();
1798      }
1799      return getTarget().get(0);
1800    }
1801
1802    /**
1803     * @return {@link #targetLocation} (The fhirpath location(s) within the resource that was validated.)
1804     */
1805    public List<StringType> getTargetLocation() { 
1806      if (this.targetLocation == null)
1807        this.targetLocation = new ArrayList<StringType>();
1808      return this.targetLocation;
1809    }
1810
1811    /**
1812     * @return Returns a reference to <code>this</code> for easy method chaining
1813     */
1814    public VerificationResult setTargetLocation(List<StringType> theTargetLocation) { 
1815      this.targetLocation = theTargetLocation;
1816      return this;
1817    }
1818
1819    public boolean hasTargetLocation() { 
1820      if (this.targetLocation == null)
1821        return false;
1822      for (StringType item : this.targetLocation)
1823        if (!item.isEmpty())
1824          return true;
1825      return false;
1826    }
1827
1828    /**
1829     * @return {@link #targetLocation} (The fhirpath location(s) within the resource that was validated.)
1830     */
1831    public StringType addTargetLocationElement() {//2 
1832      StringType t = new StringType();
1833      if (this.targetLocation == null)
1834        this.targetLocation = new ArrayList<StringType>();
1835      this.targetLocation.add(t);
1836      return t;
1837    }
1838
1839    /**
1840     * @param value {@link #targetLocation} (The fhirpath location(s) within the resource that was validated.)
1841     */
1842    public VerificationResult addTargetLocation(String value) { //1
1843      StringType t = new StringType();
1844      t.setValue(value);
1845      if (this.targetLocation == null)
1846        this.targetLocation = new ArrayList<StringType>();
1847      this.targetLocation.add(t);
1848      return this;
1849    }
1850
1851    /**
1852     * @param value {@link #targetLocation} (The fhirpath location(s) within the resource that was validated.)
1853     */
1854    public boolean hasTargetLocation(String value) { 
1855      if (this.targetLocation == null)
1856        return false;
1857      for (StringType v : this.targetLocation)
1858        if (v.getValue().equals(value)) // string
1859          return true;
1860      return false;
1861    }
1862
1863    /**
1864     * @return {@link #need} (The frequency with which the target must be validated (none; initial; periodic).)
1865     */
1866    public CodeableConcept getNeed() { 
1867      if (this.need == null)
1868        if (Configuration.errorOnAutoCreate())
1869          throw new Error("Attempt to auto-create VerificationResult.need");
1870        else if (Configuration.doAutoCreate())
1871          this.need = new CodeableConcept(); // cc
1872      return this.need;
1873    }
1874
1875    public boolean hasNeed() { 
1876      return this.need != null && !this.need.isEmpty();
1877    }
1878
1879    /**
1880     * @param value {@link #need} (The frequency with which the target must be validated (none; initial; periodic).)
1881     */
1882    public VerificationResult setNeed(CodeableConcept value) { 
1883      this.need = value;
1884      return this;
1885    }
1886
1887    /**
1888     * @return {@link #status} (The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed).). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1889     */
1890    public Enumeration<VerificationResultStatus> getStatusElement() { 
1891      if (this.status == null)
1892        if (Configuration.errorOnAutoCreate())
1893          throw new Error("Attempt to auto-create VerificationResult.status");
1894        else if (Configuration.doAutoCreate())
1895          this.status = new Enumeration<VerificationResultStatus>(new VerificationResultStatusEnumFactory()); // bb
1896      return this.status;
1897    }
1898
1899    public boolean hasStatusElement() { 
1900      return this.status != null && !this.status.isEmpty();
1901    }
1902
1903    public boolean hasStatus() { 
1904      return this.status != null && !this.status.isEmpty();
1905    }
1906
1907    /**
1908     * @param value {@link #status} (The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed).). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1909     */
1910    public VerificationResult setStatusElement(Enumeration<VerificationResultStatus> value) { 
1911      this.status = value;
1912      return this;
1913    }
1914
1915    /**
1916     * @return The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed).
1917     */
1918    public VerificationResultStatus getStatus() { 
1919      return this.status == null ? null : this.status.getValue();
1920    }
1921
1922    /**
1923     * @param value The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed).
1924     */
1925    public VerificationResult setStatus(VerificationResultStatus value) { 
1926        if (this.status == null)
1927          this.status = new Enumeration<VerificationResultStatus>(new VerificationResultStatusEnumFactory());
1928        this.status.setValue(value);
1929      return this;
1930    }
1931
1932    /**
1933     * @return {@link #statusDate} (When the validation status was updated.). This is the underlying object with id, value and extensions. The accessor "getStatusDate" gives direct access to the value
1934     */
1935    public DateTimeType getStatusDateElement() { 
1936      if (this.statusDate == null)
1937        if (Configuration.errorOnAutoCreate())
1938          throw new Error("Attempt to auto-create VerificationResult.statusDate");
1939        else if (Configuration.doAutoCreate())
1940          this.statusDate = new DateTimeType(); // bb
1941      return this.statusDate;
1942    }
1943
1944    public boolean hasStatusDateElement() { 
1945      return this.statusDate != null && !this.statusDate.isEmpty();
1946    }
1947
1948    public boolean hasStatusDate() { 
1949      return this.statusDate != null && !this.statusDate.isEmpty();
1950    }
1951
1952    /**
1953     * @param value {@link #statusDate} (When the validation status was updated.). This is the underlying object with id, value and extensions. The accessor "getStatusDate" gives direct access to the value
1954     */
1955    public VerificationResult setStatusDateElement(DateTimeType value) { 
1956      this.statusDate = value;
1957      return this;
1958    }
1959
1960    /**
1961     * @return When the validation status was updated.
1962     */
1963    public Date getStatusDate() { 
1964      return this.statusDate == null ? null : this.statusDate.getValue();
1965    }
1966
1967    /**
1968     * @param value When the validation status was updated.
1969     */
1970    public VerificationResult setStatusDate(Date value) { 
1971      if (value == null)
1972        this.statusDate = null;
1973      else {
1974        if (this.statusDate == null)
1975          this.statusDate = new DateTimeType();
1976        this.statusDate.setValue(value);
1977      }
1978      return this;
1979    }
1980
1981    /**
1982     * @return {@link #validationType} (What the target is validated against (nothing; primary source; multiple sources).)
1983     */
1984    public CodeableConcept getValidationType() { 
1985      if (this.validationType == null)
1986        if (Configuration.errorOnAutoCreate())
1987          throw new Error("Attempt to auto-create VerificationResult.validationType");
1988        else if (Configuration.doAutoCreate())
1989          this.validationType = new CodeableConcept(); // cc
1990      return this.validationType;
1991    }
1992
1993    public boolean hasValidationType() { 
1994      return this.validationType != null && !this.validationType.isEmpty();
1995    }
1996
1997    /**
1998     * @param value {@link #validationType} (What the target is validated against (nothing; primary source; multiple sources).)
1999     */
2000    public VerificationResult setValidationType(CodeableConcept value) { 
2001      this.validationType = value;
2002      return this;
2003    }
2004
2005    /**
2006     * @return {@link #validationProcess} (The primary process by which the target is validated (edit check; value set; primary source; multiple sources; standalone; in context).)
2007     */
2008    public List<CodeableConcept> getValidationProcess() { 
2009      if (this.validationProcess == null)
2010        this.validationProcess = new ArrayList<CodeableConcept>();
2011      return this.validationProcess;
2012    }
2013
2014    /**
2015     * @return Returns a reference to <code>this</code> for easy method chaining
2016     */
2017    public VerificationResult setValidationProcess(List<CodeableConcept> theValidationProcess) { 
2018      this.validationProcess = theValidationProcess;
2019      return this;
2020    }
2021
2022    public boolean hasValidationProcess() { 
2023      if (this.validationProcess == null)
2024        return false;
2025      for (CodeableConcept item : this.validationProcess)
2026        if (!item.isEmpty())
2027          return true;
2028      return false;
2029    }
2030
2031    public CodeableConcept addValidationProcess() { //3
2032      CodeableConcept t = new CodeableConcept();
2033      if (this.validationProcess == null)
2034        this.validationProcess = new ArrayList<CodeableConcept>();
2035      this.validationProcess.add(t);
2036      return t;
2037    }
2038
2039    public VerificationResult addValidationProcess(CodeableConcept t) { //3
2040      if (t == null)
2041        return this;
2042      if (this.validationProcess == null)
2043        this.validationProcess = new ArrayList<CodeableConcept>();
2044      this.validationProcess.add(t);
2045      return this;
2046    }
2047
2048    /**
2049     * @return The first repetition of repeating field {@link #validationProcess}, creating it if it does not already exist {3}
2050     */
2051    public CodeableConcept getValidationProcessFirstRep() { 
2052      if (getValidationProcess().isEmpty()) {
2053        addValidationProcess();
2054      }
2055      return getValidationProcess().get(0);
2056    }
2057
2058    /**
2059     * @return {@link #frequency} (Frequency of revalidation.)
2060     */
2061    public Timing getFrequency() { 
2062      if (this.frequency == null)
2063        if (Configuration.errorOnAutoCreate())
2064          throw new Error("Attempt to auto-create VerificationResult.frequency");
2065        else if (Configuration.doAutoCreate())
2066          this.frequency = new Timing(); // cc
2067      return this.frequency;
2068    }
2069
2070    public boolean hasFrequency() { 
2071      return this.frequency != null && !this.frequency.isEmpty();
2072    }
2073
2074    /**
2075     * @param value {@link #frequency} (Frequency of revalidation.)
2076     */
2077    public VerificationResult setFrequency(Timing value) { 
2078      this.frequency = value;
2079      return this;
2080    }
2081
2082    /**
2083     * @return {@link #lastPerformed} (The date/time validation was last completed (including failed validations).). This is the underlying object with id, value and extensions. The accessor "getLastPerformed" gives direct access to the value
2084     */
2085    public DateTimeType getLastPerformedElement() { 
2086      if (this.lastPerformed == null)
2087        if (Configuration.errorOnAutoCreate())
2088          throw new Error("Attempt to auto-create VerificationResult.lastPerformed");
2089        else if (Configuration.doAutoCreate())
2090          this.lastPerformed = new DateTimeType(); // bb
2091      return this.lastPerformed;
2092    }
2093
2094    public boolean hasLastPerformedElement() { 
2095      return this.lastPerformed != null && !this.lastPerformed.isEmpty();
2096    }
2097
2098    public boolean hasLastPerformed() { 
2099      return this.lastPerformed != null && !this.lastPerformed.isEmpty();
2100    }
2101
2102    /**
2103     * @param value {@link #lastPerformed} (The date/time validation was last completed (including failed validations).). This is the underlying object with id, value and extensions. The accessor "getLastPerformed" gives direct access to the value
2104     */
2105    public VerificationResult setLastPerformedElement(DateTimeType value) { 
2106      this.lastPerformed = value;
2107      return this;
2108    }
2109
2110    /**
2111     * @return The date/time validation was last completed (including failed validations).
2112     */
2113    public Date getLastPerformed() { 
2114      return this.lastPerformed == null ? null : this.lastPerformed.getValue();
2115    }
2116
2117    /**
2118     * @param value The date/time validation was last completed (including failed validations).
2119     */
2120    public VerificationResult setLastPerformed(Date value) { 
2121      if (value == null)
2122        this.lastPerformed = null;
2123      else {
2124        if (this.lastPerformed == null)
2125          this.lastPerformed = new DateTimeType();
2126        this.lastPerformed.setValue(value);
2127      }
2128      return this;
2129    }
2130
2131    /**
2132     * @return {@link #nextScheduled} (The date when target is next validated, if appropriate.). This is the underlying object with id, value and extensions. The accessor "getNextScheduled" gives direct access to the value
2133     */
2134    public DateType getNextScheduledElement() { 
2135      if (this.nextScheduled == null)
2136        if (Configuration.errorOnAutoCreate())
2137          throw new Error("Attempt to auto-create VerificationResult.nextScheduled");
2138        else if (Configuration.doAutoCreate())
2139          this.nextScheduled = new DateType(); // bb
2140      return this.nextScheduled;
2141    }
2142
2143    public boolean hasNextScheduledElement() { 
2144      return this.nextScheduled != null && !this.nextScheduled.isEmpty();
2145    }
2146
2147    public boolean hasNextScheduled() { 
2148      return this.nextScheduled != null && !this.nextScheduled.isEmpty();
2149    }
2150
2151    /**
2152     * @param value {@link #nextScheduled} (The date when target is next validated, if appropriate.). This is the underlying object with id, value and extensions. The accessor "getNextScheduled" gives direct access to the value
2153     */
2154    public VerificationResult setNextScheduledElement(DateType value) { 
2155      this.nextScheduled = value;
2156      return this;
2157    }
2158
2159    /**
2160     * @return The date when target is next validated, if appropriate.
2161     */
2162    public Date getNextScheduled() { 
2163      return this.nextScheduled == null ? null : this.nextScheduled.getValue();
2164    }
2165
2166    /**
2167     * @param value The date when target is next validated, if appropriate.
2168     */
2169    public VerificationResult setNextScheduled(Date value) { 
2170      if (value == null)
2171        this.nextScheduled = null;
2172      else {
2173        if (this.nextScheduled == null)
2174          this.nextScheduled = new DateType();
2175        this.nextScheduled.setValue(value);
2176      }
2177      return this;
2178    }
2179
2180    /**
2181     * @return {@link #failureAction} (The result if validation fails (fatal; warning; record only; none).)
2182     */
2183    public CodeableConcept getFailureAction() { 
2184      if (this.failureAction == null)
2185        if (Configuration.errorOnAutoCreate())
2186          throw new Error("Attempt to auto-create VerificationResult.failureAction");
2187        else if (Configuration.doAutoCreate())
2188          this.failureAction = new CodeableConcept(); // cc
2189      return this.failureAction;
2190    }
2191
2192    public boolean hasFailureAction() { 
2193      return this.failureAction != null && !this.failureAction.isEmpty();
2194    }
2195
2196    /**
2197     * @param value {@link #failureAction} (The result if validation fails (fatal; warning; record only; none).)
2198     */
2199    public VerificationResult setFailureAction(CodeableConcept value) { 
2200      this.failureAction = value;
2201      return this;
2202    }
2203
2204    /**
2205     * @return {@link #primarySource} (Information about the primary source(s) involved in validation.)
2206     */
2207    public List<VerificationResultPrimarySourceComponent> getPrimarySource() { 
2208      if (this.primarySource == null)
2209        this.primarySource = new ArrayList<VerificationResultPrimarySourceComponent>();
2210      return this.primarySource;
2211    }
2212
2213    /**
2214     * @return Returns a reference to <code>this</code> for easy method chaining
2215     */
2216    public VerificationResult setPrimarySource(List<VerificationResultPrimarySourceComponent> thePrimarySource) { 
2217      this.primarySource = thePrimarySource;
2218      return this;
2219    }
2220
2221    public boolean hasPrimarySource() { 
2222      if (this.primarySource == null)
2223        return false;
2224      for (VerificationResultPrimarySourceComponent item : this.primarySource)
2225        if (!item.isEmpty())
2226          return true;
2227      return false;
2228    }
2229
2230    public VerificationResultPrimarySourceComponent addPrimarySource() { //3
2231      VerificationResultPrimarySourceComponent t = new VerificationResultPrimarySourceComponent();
2232      if (this.primarySource == null)
2233        this.primarySource = new ArrayList<VerificationResultPrimarySourceComponent>();
2234      this.primarySource.add(t);
2235      return t;
2236    }
2237
2238    public VerificationResult addPrimarySource(VerificationResultPrimarySourceComponent t) { //3
2239      if (t == null)
2240        return this;
2241      if (this.primarySource == null)
2242        this.primarySource = new ArrayList<VerificationResultPrimarySourceComponent>();
2243      this.primarySource.add(t);
2244      return this;
2245    }
2246
2247    /**
2248     * @return The first repetition of repeating field {@link #primarySource}, creating it if it does not already exist {3}
2249     */
2250    public VerificationResultPrimarySourceComponent getPrimarySourceFirstRep() { 
2251      if (getPrimarySource().isEmpty()) {
2252        addPrimarySource();
2253      }
2254      return getPrimarySource().get(0);
2255    }
2256
2257    /**
2258     * @return {@link #attestation} (Information about the entity attesting to information.)
2259     */
2260    public VerificationResultAttestationComponent getAttestation() { 
2261      if (this.attestation == null)
2262        if (Configuration.errorOnAutoCreate())
2263          throw new Error("Attempt to auto-create VerificationResult.attestation");
2264        else if (Configuration.doAutoCreate())
2265          this.attestation = new VerificationResultAttestationComponent(); // cc
2266      return this.attestation;
2267    }
2268
2269    public boolean hasAttestation() { 
2270      return this.attestation != null && !this.attestation.isEmpty();
2271    }
2272
2273    /**
2274     * @param value {@link #attestation} (Information about the entity attesting to information.)
2275     */
2276    public VerificationResult setAttestation(VerificationResultAttestationComponent value) { 
2277      this.attestation = value;
2278      return this;
2279    }
2280
2281    /**
2282     * @return {@link #validator} (Information about the entity validating information.)
2283     */
2284    public List<VerificationResultValidatorComponent> getValidator() { 
2285      if (this.validator == null)
2286        this.validator = new ArrayList<VerificationResultValidatorComponent>();
2287      return this.validator;
2288    }
2289
2290    /**
2291     * @return Returns a reference to <code>this</code> for easy method chaining
2292     */
2293    public VerificationResult setValidator(List<VerificationResultValidatorComponent> theValidator) { 
2294      this.validator = theValidator;
2295      return this;
2296    }
2297
2298    public boolean hasValidator() { 
2299      if (this.validator == null)
2300        return false;
2301      for (VerificationResultValidatorComponent item : this.validator)
2302        if (!item.isEmpty())
2303          return true;
2304      return false;
2305    }
2306
2307    public VerificationResultValidatorComponent addValidator() { //3
2308      VerificationResultValidatorComponent t = new VerificationResultValidatorComponent();
2309      if (this.validator == null)
2310        this.validator = new ArrayList<VerificationResultValidatorComponent>();
2311      this.validator.add(t);
2312      return t;
2313    }
2314
2315    public VerificationResult addValidator(VerificationResultValidatorComponent t) { //3
2316      if (t == null)
2317        return this;
2318      if (this.validator == null)
2319        this.validator = new ArrayList<VerificationResultValidatorComponent>();
2320      this.validator.add(t);
2321      return this;
2322    }
2323
2324    /**
2325     * @return The first repetition of repeating field {@link #validator}, creating it if it does not already exist {3}
2326     */
2327    public VerificationResultValidatorComponent getValidatorFirstRep() { 
2328      if (getValidator().isEmpty()) {
2329        addValidator();
2330      }
2331      return getValidator().get(0);
2332    }
2333
2334      protected void listChildren(List<Property> children) {
2335        super.listChildren(children);
2336        children.add(new Property("target", "Reference(Any)", "A resource that was validated.", 0, java.lang.Integer.MAX_VALUE, target));
2337        children.add(new Property("targetLocation", "string", "The fhirpath location(s) within the resource that was validated.", 0, java.lang.Integer.MAX_VALUE, targetLocation));
2338        children.add(new Property("need", "CodeableConcept", "The frequency with which the target must be validated (none; initial; periodic).", 0, 1, need));
2339        children.add(new Property("status", "code", "The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed).", 0, 1, status));
2340        children.add(new Property("statusDate", "dateTime", "When the validation status was updated.", 0, 1, statusDate));
2341        children.add(new Property("validationType", "CodeableConcept", "What the target is validated against (nothing; primary source; multiple sources).", 0, 1, validationType));
2342        children.add(new Property("validationProcess", "CodeableConcept", "The primary process by which the target is validated (edit check; value set; primary source; multiple sources; standalone; in context).", 0, java.lang.Integer.MAX_VALUE, validationProcess));
2343        children.add(new Property("frequency", "Timing", "Frequency of revalidation.", 0, 1, frequency));
2344        children.add(new Property("lastPerformed", "dateTime", "The date/time validation was last completed (including failed validations).", 0, 1, lastPerformed));
2345        children.add(new Property("nextScheduled", "date", "The date when target is next validated, if appropriate.", 0, 1, nextScheduled));
2346        children.add(new Property("failureAction", "CodeableConcept", "The result if validation fails (fatal; warning; record only; none).", 0, 1, failureAction));
2347        children.add(new Property("primarySource", "", "Information about the primary source(s) involved in validation.", 0, java.lang.Integer.MAX_VALUE, primarySource));
2348        children.add(new Property("attestation", "", "Information about the entity attesting to information.", 0, 1, attestation));
2349        children.add(new Property("validator", "", "Information about the entity validating information.", 0, java.lang.Integer.MAX_VALUE, validator));
2350      }
2351
2352      @Override
2353      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2354        switch (_hash) {
2355        case -880905839: /*target*/  return new Property("target", "Reference(Any)", "A resource that was validated.", 0, java.lang.Integer.MAX_VALUE, target);
2356        case 308958310: /*targetLocation*/  return new Property("targetLocation", "string", "The fhirpath location(s) within the resource that was validated.", 0, java.lang.Integer.MAX_VALUE, targetLocation);
2357        case 3377302: /*need*/  return new Property("need", "CodeableConcept", "The frequency with which the target must be validated (none; initial; periodic).", 0, 1, need);
2358        case -892481550: /*status*/  return new Property("status", "code", "The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed).", 0, 1, status);
2359        case 247524032: /*statusDate*/  return new Property("statusDate", "dateTime", "When the validation status was updated.", 0, 1, statusDate);
2360        case -279681197: /*validationType*/  return new Property("validationType", "CodeableConcept", "What the target is validated against (nothing; primary source; multiple sources).", 0, 1, validationType);
2361        case 797680566: /*validationProcess*/  return new Property("validationProcess", "CodeableConcept", "The primary process by which the target is validated (edit check; value set; primary source; multiple sources; standalone; in context).", 0, java.lang.Integer.MAX_VALUE, validationProcess);
2362        case -70023844: /*frequency*/  return new Property("frequency", "Timing", "Frequency of revalidation.", 0, 1, frequency);
2363        case -1313229366: /*lastPerformed*/  return new Property("lastPerformed", "dateTime", "The date/time validation was last completed (including failed validations).", 0, 1, lastPerformed);
2364        case 1874589434: /*nextScheduled*/  return new Property("nextScheduled", "date", "The date when target is next validated, if appropriate.", 0, 1, nextScheduled);
2365        case 1816382560: /*failureAction*/  return new Property("failureAction", "CodeableConcept", "The result if validation fails (fatal; warning; record only; none).", 0, 1, failureAction);
2366        case -528721731: /*primarySource*/  return new Property("primarySource", "", "Information about the primary source(s) involved in validation.", 0, java.lang.Integer.MAX_VALUE, primarySource);
2367        case -709624112: /*attestation*/  return new Property("attestation", "", "Information about the entity attesting to information.", 0, 1, attestation);
2368        case -1109783726: /*validator*/  return new Property("validator", "", "Information about the entity validating information.", 0, java.lang.Integer.MAX_VALUE, validator);
2369        default: return super.getNamedProperty(_hash, _name, _checkValid);
2370        }
2371
2372      }
2373
2374      @Override
2375      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2376        switch (hash) {
2377        case -880905839: /*target*/ return this.target == null ? new Base[0] : this.target.toArray(new Base[this.target.size()]); // Reference
2378        case 308958310: /*targetLocation*/ return this.targetLocation == null ? new Base[0] : this.targetLocation.toArray(new Base[this.targetLocation.size()]); // StringType
2379        case 3377302: /*need*/ return this.need == null ? new Base[0] : new Base[] {this.need}; // CodeableConcept
2380        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<VerificationResultStatus>
2381        case 247524032: /*statusDate*/ return this.statusDate == null ? new Base[0] : new Base[] {this.statusDate}; // DateTimeType
2382        case -279681197: /*validationType*/ return this.validationType == null ? new Base[0] : new Base[] {this.validationType}; // CodeableConcept
2383        case 797680566: /*validationProcess*/ return this.validationProcess == null ? new Base[0] : this.validationProcess.toArray(new Base[this.validationProcess.size()]); // CodeableConcept
2384        case -70023844: /*frequency*/ return this.frequency == null ? new Base[0] : new Base[] {this.frequency}; // Timing
2385        case -1313229366: /*lastPerformed*/ return this.lastPerformed == null ? new Base[0] : new Base[] {this.lastPerformed}; // DateTimeType
2386        case 1874589434: /*nextScheduled*/ return this.nextScheduled == null ? new Base[0] : new Base[] {this.nextScheduled}; // DateType
2387        case 1816382560: /*failureAction*/ return this.failureAction == null ? new Base[0] : new Base[] {this.failureAction}; // CodeableConcept
2388        case -528721731: /*primarySource*/ return this.primarySource == null ? new Base[0] : this.primarySource.toArray(new Base[this.primarySource.size()]); // VerificationResultPrimarySourceComponent
2389        case -709624112: /*attestation*/ return this.attestation == null ? new Base[0] : new Base[] {this.attestation}; // VerificationResultAttestationComponent
2390        case -1109783726: /*validator*/ return this.validator == null ? new Base[0] : this.validator.toArray(new Base[this.validator.size()]); // VerificationResultValidatorComponent
2391        default: return super.getProperty(hash, name, checkValid);
2392        }
2393
2394      }
2395
2396      @Override
2397      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2398        switch (hash) {
2399        case -880905839: // target
2400          this.getTarget().add(TypeConvertor.castToReference(value)); // Reference
2401          return value;
2402        case 308958310: // targetLocation
2403          this.getTargetLocation().add(TypeConvertor.castToString(value)); // StringType
2404          return value;
2405        case 3377302: // need
2406          this.need = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2407          return value;
2408        case -892481550: // status
2409          value = new VerificationResultStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2410          this.status = (Enumeration) value; // Enumeration<VerificationResultStatus>
2411          return value;
2412        case 247524032: // statusDate
2413          this.statusDate = TypeConvertor.castToDateTime(value); // DateTimeType
2414          return value;
2415        case -279681197: // validationType
2416          this.validationType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2417          return value;
2418        case 797680566: // validationProcess
2419          this.getValidationProcess().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2420          return value;
2421        case -70023844: // frequency
2422          this.frequency = TypeConvertor.castToTiming(value); // Timing
2423          return value;
2424        case -1313229366: // lastPerformed
2425          this.lastPerformed = TypeConvertor.castToDateTime(value); // DateTimeType
2426          return value;
2427        case 1874589434: // nextScheduled
2428          this.nextScheduled = TypeConvertor.castToDate(value); // DateType
2429          return value;
2430        case 1816382560: // failureAction
2431          this.failureAction = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2432          return value;
2433        case -528721731: // primarySource
2434          this.getPrimarySource().add((VerificationResultPrimarySourceComponent) value); // VerificationResultPrimarySourceComponent
2435          return value;
2436        case -709624112: // attestation
2437          this.attestation = (VerificationResultAttestationComponent) value; // VerificationResultAttestationComponent
2438          return value;
2439        case -1109783726: // validator
2440          this.getValidator().add((VerificationResultValidatorComponent) value); // VerificationResultValidatorComponent
2441          return value;
2442        default: return super.setProperty(hash, name, value);
2443        }
2444
2445      }
2446
2447      @Override
2448      public Base setProperty(String name, Base value) throws FHIRException {
2449        if (name.equals("target")) {
2450          this.getTarget().add(TypeConvertor.castToReference(value));
2451        } else if (name.equals("targetLocation")) {
2452          this.getTargetLocation().add(TypeConvertor.castToString(value));
2453        } else if (name.equals("need")) {
2454          this.need = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2455        } else if (name.equals("status")) {
2456          value = new VerificationResultStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2457          this.status = (Enumeration) value; // Enumeration<VerificationResultStatus>
2458        } else if (name.equals("statusDate")) {
2459          this.statusDate = TypeConvertor.castToDateTime(value); // DateTimeType
2460        } else if (name.equals("validationType")) {
2461          this.validationType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2462        } else if (name.equals("validationProcess")) {
2463          this.getValidationProcess().add(TypeConvertor.castToCodeableConcept(value));
2464        } else if (name.equals("frequency")) {
2465          this.frequency = TypeConvertor.castToTiming(value); // Timing
2466        } else if (name.equals("lastPerformed")) {
2467          this.lastPerformed = TypeConvertor.castToDateTime(value); // DateTimeType
2468        } else if (name.equals("nextScheduled")) {
2469          this.nextScheduled = TypeConvertor.castToDate(value); // DateType
2470        } else if (name.equals("failureAction")) {
2471          this.failureAction = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2472        } else if (name.equals("primarySource")) {
2473          this.getPrimarySource().add((VerificationResultPrimarySourceComponent) value);
2474        } else if (name.equals("attestation")) {
2475          this.attestation = (VerificationResultAttestationComponent) value; // VerificationResultAttestationComponent
2476        } else if (name.equals("validator")) {
2477          this.getValidator().add((VerificationResultValidatorComponent) value);
2478        } else
2479          return super.setProperty(name, value);
2480        return value;
2481      }
2482
2483      @Override
2484      public Base makeProperty(int hash, String name) throws FHIRException {
2485        switch (hash) {
2486        case -880905839:  return addTarget(); 
2487        case 308958310:  return addTargetLocationElement();
2488        case 3377302:  return getNeed();
2489        case -892481550:  return getStatusElement();
2490        case 247524032:  return getStatusDateElement();
2491        case -279681197:  return getValidationType();
2492        case 797680566:  return addValidationProcess(); 
2493        case -70023844:  return getFrequency();
2494        case -1313229366:  return getLastPerformedElement();
2495        case 1874589434:  return getNextScheduledElement();
2496        case 1816382560:  return getFailureAction();
2497        case -528721731:  return addPrimarySource(); 
2498        case -709624112:  return getAttestation();
2499        case -1109783726:  return addValidator(); 
2500        default: return super.makeProperty(hash, name);
2501        }
2502
2503      }
2504
2505      @Override
2506      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2507        switch (hash) {
2508        case -880905839: /*target*/ return new String[] {"Reference"};
2509        case 308958310: /*targetLocation*/ return new String[] {"string"};
2510        case 3377302: /*need*/ return new String[] {"CodeableConcept"};
2511        case -892481550: /*status*/ return new String[] {"code"};
2512        case 247524032: /*statusDate*/ return new String[] {"dateTime"};
2513        case -279681197: /*validationType*/ return new String[] {"CodeableConcept"};
2514        case 797680566: /*validationProcess*/ return new String[] {"CodeableConcept"};
2515        case -70023844: /*frequency*/ return new String[] {"Timing"};
2516        case -1313229366: /*lastPerformed*/ return new String[] {"dateTime"};
2517        case 1874589434: /*nextScheduled*/ return new String[] {"date"};
2518        case 1816382560: /*failureAction*/ return new String[] {"CodeableConcept"};
2519        case -528721731: /*primarySource*/ return new String[] {};
2520        case -709624112: /*attestation*/ return new String[] {};
2521        case -1109783726: /*validator*/ return new String[] {};
2522        default: return super.getTypesForProperty(hash, name);
2523        }
2524
2525      }
2526
2527      @Override
2528      public Base addChild(String name) throws FHIRException {
2529        if (name.equals("target")) {
2530          return addTarget();
2531        }
2532        else if (name.equals("targetLocation")) {
2533          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.targetLocation");
2534        }
2535        else if (name.equals("need")) {
2536          this.need = new CodeableConcept();
2537          return this.need;
2538        }
2539        else if (name.equals("status")) {
2540          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.status");
2541        }
2542        else if (name.equals("statusDate")) {
2543          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.statusDate");
2544        }
2545        else if (name.equals("validationType")) {
2546          this.validationType = new CodeableConcept();
2547          return this.validationType;
2548        }
2549        else if (name.equals("validationProcess")) {
2550          return addValidationProcess();
2551        }
2552        else if (name.equals("frequency")) {
2553          this.frequency = new Timing();
2554          return this.frequency;
2555        }
2556        else if (name.equals("lastPerformed")) {
2557          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.lastPerformed");
2558        }
2559        else if (name.equals("nextScheduled")) {
2560          throw new FHIRException("Cannot call addChild on a singleton property VerificationResult.nextScheduled");
2561        }
2562        else if (name.equals("failureAction")) {
2563          this.failureAction = new CodeableConcept();
2564          return this.failureAction;
2565        }
2566        else if (name.equals("primarySource")) {
2567          return addPrimarySource();
2568        }
2569        else if (name.equals("attestation")) {
2570          this.attestation = new VerificationResultAttestationComponent();
2571          return this.attestation;
2572        }
2573        else if (name.equals("validator")) {
2574          return addValidator();
2575        }
2576        else
2577          return super.addChild(name);
2578      }
2579
2580  public String fhirType() {
2581    return "VerificationResult";
2582
2583  }
2584
2585      public VerificationResult copy() {
2586        VerificationResult dst = new VerificationResult();
2587        copyValues(dst);
2588        return dst;
2589      }
2590
2591      public void copyValues(VerificationResult dst) {
2592        super.copyValues(dst);
2593        if (target != null) {
2594          dst.target = new ArrayList<Reference>();
2595          for (Reference i : target)
2596            dst.target.add(i.copy());
2597        };
2598        if (targetLocation != null) {
2599          dst.targetLocation = new ArrayList<StringType>();
2600          for (StringType i : targetLocation)
2601            dst.targetLocation.add(i.copy());
2602        };
2603        dst.need = need == null ? null : need.copy();
2604        dst.status = status == null ? null : status.copy();
2605        dst.statusDate = statusDate == null ? null : statusDate.copy();
2606        dst.validationType = validationType == null ? null : validationType.copy();
2607        if (validationProcess != null) {
2608          dst.validationProcess = new ArrayList<CodeableConcept>();
2609          for (CodeableConcept i : validationProcess)
2610            dst.validationProcess.add(i.copy());
2611        };
2612        dst.frequency = frequency == null ? null : frequency.copy();
2613        dst.lastPerformed = lastPerformed == null ? null : lastPerformed.copy();
2614        dst.nextScheduled = nextScheduled == null ? null : nextScheduled.copy();
2615        dst.failureAction = failureAction == null ? null : failureAction.copy();
2616        if (primarySource != null) {
2617          dst.primarySource = new ArrayList<VerificationResultPrimarySourceComponent>();
2618          for (VerificationResultPrimarySourceComponent i : primarySource)
2619            dst.primarySource.add(i.copy());
2620        };
2621        dst.attestation = attestation == null ? null : attestation.copy();
2622        if (validator != null) {
2623          dst.validator = new ArrayList<VerificationResultValidatorComponent>();
2624          for (VerificationResultValidatorComponent i : validator)
2625            dst.validator.add(i.copy());
2626        };
2627      }
2628
2629      protected VerificationResult typedCopy() {
2630        return copy();
2631      }
2632
2633      @Override
2634      public boolean equalsDeep(Base other_) {
2635        if (!super.equalsDeep(other_))
2636          return false;
2637        if (!(other_ instanceof VerificationResult))
2638          return false;
2639        VerificationResult o = (VerificationResult) other_;
2640        return compareDeep(target, o.target, true) && compareDeep(targetLocation, o.targetLocation, true)
2641           && compareDeep(need, o.need, true) && compareDeep(status, o.status, true) && compareDeep(statusDate, o.statusDate, true)
2642           && compareDeep(validationType, o.validationType, true) && compareDeep(validationProcess, o.validationProcess, true)
2643           && compareDeep(frequency, o.frequency, true) && compareDeep(lastPerformed, o.lastPerformed, true)
2644           && compareDeep(nextScheduled, o.nextScheduled, true) && compareDeep(failureAction, o.failureAction, true)
2645           && compareDeep(primarySource, o.primarySource, true) && compareDeep(attestation, o.attestation, true)
2646           && compareDeep(validator, o.validator, true);
2647      }
2648
2649      @Override
2650      public boolean equalsShallow(Base other_) {
2651        if (!super.equalsShallow(other_))
2652          return false;
2653        if (!(other_ instanceof VerificationResult))
2654          return false;
2655        VerificationResult o = (VerificationResult) other_;
2656        return compareValues(targetLocation, o.targetLocation, true) && compareValues(status, o.status, true)
2657           && compareValues(statusDate, o.statusDate, true) && compareValues(lastPerformed, o.lastPerformed, true)
2658           && compareValues(nextScheduled, o.nextScheduled, true);
2659      }
2660
2661      public boolean isEmpty() {
2662        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(target, targetLocation, need
2663          , status, statusDate, validationType, validationProcess, frequency, lastPerformed
2664          , nextScheduled, failureAction, primarySource, attestation, validator);
2665      }
2666
2667  @Override
2668  public ResourceType getResourceType() {
2669    return ResourceType.VerificationResult;
2670   }
2671
2672 /**
2673   * Search parameter: <b>attestation-method</b>
2674   * <p>
2675   * Description: <b>Select validation information for data that was attested to using the specified method</b><br>
2676   * Type: <b>token</b><br>
2677   * Path: <b>VerificationResult.attestation.communicationMethod</b><br>
2678   * </p>
2679   */
2680  @SearchParamDefinition(name="attestation-method", path="VerificationResult.attestation.communicationMethod", description="Select validation information for data that was attested to using the specified method", type="token" )
2681  public static final String SP_ATTESTATION_METHOD = "attestation-method";
2682 /**
2683   * <b>Fluent Client</b> search parameter constant for <b>attestation-method</b>
2684   * <p>
2685   * Description: <b>Select validation information for data that was attested to using the specified method</b><br>
2686   * Type: <b>token</b><br>
2687   * Path: <b>VerificationResult.attestation.communicationMethod</b><br>
2688   * </p>
2689   */
2690  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ATTESTATION_METHOD = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ATTESTATION_METHOD);
2691
2692 /**
2693   * Search parameter: <b>attestation-onbehalfof</b>
2694   * <p>
2695   * Description: <b>Select validation information for data that was attested to on behalf of the specified source</b><br>
2696   * Type: <b>reference</b><br>
2697   * Path: <b>VerificationResult.attestation.onBehalfOf</b><br>
2698   * </p>
2699   */
2700  @SearchParamDefinition(name="attestation-onbehalfof", path="VerificationResult.attestation.onBehalfOf", description="Select validation information for data that was attested to on behalf of the specified source", type="reference", target={Organization.class, Practitioner.class, PractitionerRole.class } )
2701  public static final String SP_ATTESTATION_ONBEHALFOF = "attestation-onbehalfof";
2702 /**
2703   * <b>Fluent Client</b> search parameter constant for <b>attestation-onbehalfof</b>
2704   * <p>
2705   * Description: <b>Select validation information for data that was attested to on behalf of the specified source</b><br>
2706   * Type: <b>reference</b><br>
2707   * Path: <b>VerificationResult.attestation.onBehalfOf</b><br>
2708   * </p>
2709   */
2710  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ATTESTATION_ONBEHALFOF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ATTESTATION_ONBEHALFOF);
2711
2712/**
2713   * Constant for fluent queries to be used to add include statements. Specifies
2714   * the path value of "<b>VerificationResult:attestation-onbehalfof</b>".
2715   */
2716  public static final ca.uhn.fhir.model.api.Include INCLUDE_ATTESTATION_ONBEHALFOF = new ca.uhn.fhir.model.api.Include("VerificationResult:attestation-onbehalfof").toLocked();
2717
2718 /**
2719   * Search parameter: <b>attestation-who</b>
2720   * <p>
2721   * Description: <b>Select validation information for data that was attested to by the specified source</b><br>
2722   * Type: <b>reference</b><br>
2723   * Path: <b>VerificationResult.attestation.who</b><br>
2724   * </p>
2725   */
2726  @SearchParamDefinition(name="attestation-who", path="VerificationResult.attestation.who", description="Select validation information for data that was attested to by the specified source", type="reference", target={Organization.class, Practitioner.class, PractitionerRole.class } )
2727  public static final String SP_ATTESTATION_WHO = "attestation-who";
2728 /**
2729   * <b>Fluent Client</b> search parameter constant for <b>attestation-who</b>
2730   * <p>
2731   * Description: <b>Select validation information for data that was attested to by the specified source</b><br>
2732   * Type: <b>reference</b><br>
2733   * Path: <b>VerificationResult.attestation.who</b><br>
2734   * </p>
2735   */
2736  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ATTESTATION_WHO = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ATTESTATION_WHO);
2737
2738/**
2739   * Constant for fluent queries to be used to add include statements. Specifies
2740   * the path value of "<b>VerificationResult:attestation-who</b>".
2741   */
2742  public static final ca.uhn.fhir.model.api.Include INCLUDE_ATTESTATION_WHO = new ca.uhn.fhir.model.api.Include("VerificationResult:attestation-who").toLocked();
2743
2744 /**
2745   * Search parameter: <b>primarysource-date</b>
2746   * <p>
2747   * Description: <b>Select validation information for data that was validated against a primary source on the specified date</b><br>
2748   * Type: <b>date</b><br>
2749   * Path: <b>VerificationResult.primarySource.validationDate</b><br>
2750   * </p>
2751   */
2752  @SearchParamDefinition(name="primarysource-date", path="VerificationResult.primarySource.validationDate", description="Select validation information for data that was validated against a primary source on the specified date", type="date" )
2753  public static final String SP_PRIMARYSOURCE_DATE = "primarysource-date";
2754 /**
2755   * <b>Fluent Client</b> search parameter constant for <b>primarysource-date</b>
2756   * <p>
2757   * Description: <b>Select validation information for data that was validated against a primary source on the specified date</b><br>
2758   * Type: <b>date</b><br>
2759   * Path: <b>VerificationResult.primarySource.validationDate</b><br>
2760   * </p>
2761   */
2762  public static final ca.uhn.fhir.rest.gclient.DateClientParam PRIMARYSOURCE_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_PRIMARYSOURCE_DATE);
2763
2764 /**
2765   * Search parameter: <b>primarysource-type</b>
2766   * <p>
2767   * Description: <b>Select validation information for data that was validated against the specified type of primary source organization</b><br>
2768   * Type: <b>token</b><br>
2769   * Path: <b>VerificationResult.primarySource.type</b><br>
2770   * </p>
2771   */
2772  @SearchParamDefinition(name="primarysource-type", path="VerificationResult.primarySource.type", description="Select validation information for data that was validated against the specified type of primary source organization", type="token" )
2773  public static final String SP_PRIMARYSOURCE_TYPE = "primarysource-type";
2774 /**
2775   * <b>Fluent Client</b> search parameter constant for <b>primarysource-type</b>
2776   * <p>
2777   * Description: <b>Select validation information for data that was validated against the specified type of primary source organization</b><br>
2778   * Type: <b>token</b><br>
2779   * Path: <b>VerificationResult.primarySource.type</b><br>
2780   * </p>
2781   */
2782  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIMARYSOURCE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIMARYSOURCE_TYPE);
2783
2784 /**
2785   * Search parameter: <b>primarysource-who</b>
2786   * <p>
2787   * Description: <b>Select validation information for data that was validated against the specified primary source</b><br>
2788   * Type: <b>reference</b><br>
2789   * Path: <b>VerificationResult.primarySource.who</b><br>
2790   * </p>
2791   */
2792  @SearchParamDefinition(name="primarysource-who", path="VerificationResult.primarySource.who", description="Select validation information for data that was validated against the specified primary source", type="reference", target={Organization.class, Practitioner.class, PractitionerRole.class } )
2793  public static final String SP_PRIMARYSOURCE_WHO = "primarysource-who";
2794 /**
2795   * <b>Fluent Client</b> search parameter constant for <b>primarysource-who</b>
2796   * <p>
2797   * Description: <b>Select validation information for data that was validated against the specified primary source</b><br>
2798   * Type: <b>reference</b><br>
2799   * Path: <b>VerificationResult.primarySource.who</b><br>
2800   * </p>
2801   */
2802  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRIMARYSOURCE_WHO = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRIMARYSOURCE_WHO);
2803
2804/**
2805   * Constant for fluent queries to be used to add include statements. Specifies
2806   * the path value of "<b>VerificationResult:primarysource-who</b>".
2807   */
2808  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRIMARYSOURCE_WHO = new ca.uhn.fhir.model.api.Include("VerificationResult:primarysource-who").toLocked();
2809
2810 /**
2811   * Search parameter: <b>status-date</b>
2812   * <p>
2813   * Description: <b>Select validation information with a validation status that occurred at the specified date/time</b><br>
2814   * Type: <b>date</b><br>
2815   * Path: <b>VerificationResult.statusDate</b><br>
2816   * </p>
2817   */
2818  @SearchParamDefinition(name="status-date", path="VerificationResult.statusDate", description="Select validation information with a validation status that occurred at the specified date/time", type="date" )
2819  public static final String SP_STATUS_DATE = "status-date";
2820 /**
2821   * <b>Fluent Client</b> search parameter constant for <b>status-date</b>
2822   * <p>
2823   * Description: <b>Select validation information with a validation status that occurred at the specified date/time</b><br>
2824   * Type: <b>date</b><br>
2825   * Path: <b>VerificationResult.statusDate</b><br>
2826   * </p>
2827   */
2828  public static final ca.uhn.fhir.rest.gclient.DateClientParam STATUS_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_STATUS_DATE);
2829
2830 /**
2831   * Search parameter: <b>status</b>
2832   * <p>
2833   * Description: <b>Select validation information with the specified status</b><br>
2834   * Type: <b>token</b><br>
2835   * Path: <b>VerificationResult.status</b><br>
2836   * </p>
2837   */
2838  @SearchParamDefinition(name="status", path="VerificationResult.status", description="Select validation information with the specified status", type="token" )
2839  public static final String SP_STATUS = "status";
2840 /**
2841   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2842   * <p>
2843   * Description: <b>Select validation information with the specified status</b><br>
2844   * Type: <b>token</b><br>
2845   * Path: <b>VerificationResult.status</b><br>
2846   * </p>
2847   */
2848  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2849
2850 /**
2851   * Search parameter: <b>target</b>
2852   * <p>
2853   * Description: <b>A resource that was validated</b><br>
2854   * Type: <b>reference</b><br>
2855   * Path: <b>VerificationResult.target</b><br>
2856   * </p>
2857   */
2858  @SearchParamDefinition(name="target", path="VerificationResult.target", description="A resource that was validated", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2859  public static final String SP_TARGET = "target";
2860 /**
2861   * <b>Fluent Client</b> search parameter constant for <b>target</b>
2862   * <p>
2863   * Description: <b>A resource that was validated</b><br>
2864   * Type: <b>reference</b><br>
2865   * Path: <b>VerificationResult.target</b><br>
2866   * </p>
2867   */
2868  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam TARGET = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_TARGET);
2869
2870/**
2871   * Constant for fluent queries to be used to add include statements. Specifies
2872   * the path value of "<b>VerificationResult:target</b>".
2873   */
2874  public static final ca.uhn.fhir.model.api.Include INCLUDE_TARGET = new ca.uhn.fhir.model.api.Include("VerificationResult:target").toLocked();
2875
2876 /**
2877   * Search parameter: <b>validator-organization</b>
2878   * <p>
2879   * Description: <b>Select validation information for data that was validated by the specified organization</b><br>
2880   * Type: <b>reference</b><br>
2881   * Path: <b>VerificationResult.validator.organization</b><br>
2882   * </p>
2883   */
2884  @SearchParamDefinition(name="validator-organization", path="VerificationResult.validator.organization", description="Select validation information for data that was validated by the specified organization", type="reference", target={Organization.class } )
2885  public static final String SP_VALIDATOR_ORGANIZATION = "validator-organization";
2886 /**
2887   * <b>Fluent Client</b> search parameter constant for <b>validator-organization</b>
2888   * <p>
2889   * Description: <b>Select validation information for data that was validated by the specified organization</b><br>
2890   * Type: <b>reference</b><br>
2891   * Path: <b>VerificationResult.validator.organization</b><br>
2892   * </p>
2893   */
2894  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam VALIDATOR_ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_VALIDATOR_ORGANIZATION);
2895
2896/**
2897   * Constant for fluent queries to be used to add include statements. Specifies
2898   * the path value of "<b>VerificationResult:validator-organization</b>".
2899   */
2900  public static final ca.uhn.fhir.model.api.Include INCLUDE_VALIDATOR_ORGANIZATION = new ca.uhn.fhir.model.api.Include("VerificationResult:validator-organization").toLocked();
2901
2902
2903}
2904