001package org.hl7.fhir.r4.model;
002
003import java.math.BigDecimal;
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, 
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this 
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, 
015     this list of conditions and the following disclaimer in the documentation 
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
030  POSSIBILITY OF SUCH DAMAGE.
031  
032*/
033
034// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
035import java.util.ArrayList;
036import java.util.Date;
037import java.util.List;
038
039import org.hl7.fhir.exceptions.FHIRException;
040import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
041import org.hl7.fhir.utilities.Utilities;
042
043import ca.uhn.fhir.model.api.annotation.Block;
044import ca.uhn.fhir.model.api.annotation.Child;
045import ca.uhn.fhir.model.api.annotation.Description;
046import ca.uhn.fhir.model.api.annotation.ResourceDef;
047import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
048
049/**
050 * A summary of information based on the results of executing a TestScript.
051 */
052@ResourceDef(name = "TestReport", profile = "http://hl7.org/fhir/StructureDefinition/TestReport")
053public class TestReport extends DomainResource {
054
055  public enum TestReportStatus {
056    /**
057     * All test operations have completed.
058     */
059    COMPLETED,
060    /**
061     * A test operations is currently executing.
062     */
063    INPROGRESS,
064    /**
065     * A test operation is waiting for an external client request.
066     */
067    WAITING,
068    /**
069     * The test script execution was manually stopped.
070     */
071    STOPPED,
072    /**
073     * This test report was entered or created in error.
074     */
075    ENTEREDINERROR,
076    /**
077     * added to help the parsers with the generic types
078     */
079    NULL;
080
081    public static TestReportStatus fromCode(String codeString) throws FHIRException {
082      if (codeString == null || "".equals(codeString))
083        return null;
084      if ("completed".equals(codeString))
085        return COMPLETED;
086      if ("in-progress".equals(codeString))
087        return INPROGRESS;
088      if ("waiting".equals(codeString))
089        return WAITING;
090      if ("stopped".equals(codeString))
091        return STOPPED;
092      if ("entered-in-error".equals(codeString))
093        return ENTEREDINERROR;
094      if (Configuration.isAcceptInvalidEnums())
095        return null;
096      else
097        throw new FHIRException("Unknown TestReportStatus code '" + codeString + "'");
098    }
099
100    public String toCode() {
101      switch (this) {
102      case COMPLETED:
103        return "completed";
104      case INPROGRESS:
105        return "in-progress";
106      case WAITING:
107        return "waiting";
108      case STOPPED:
109        return "stopped";
110      case ENTEREDINERROR:
111        return "entered-in-error";
112      case NULL:
113        return null;
114      default:
115        return "?";
116      }
117    }
118
119    public String getSystem() {
120      switch (this) {
121      case COMPLETED:
122        return "http://hl7.org/fhir/report-status-codes";
123      case INPROGRESS:
124        return "http://hl7.org/fhir/report-status-codes";
125      case WAITING:
126        return "http://hl7.org/fhir/report-status-codes";
127      case STOPPED:
128        return "http://hl7.org/fhir/report-status-codes";
129      case ENTEREDINERROR:
130        return "http://hl7.org/fhir/report-status-codes";
131      case NULL:
132        return null;
133      default:
134        return "?";
135      }
136    }
137
138    public String getDefinition() {
139      switch (this) {
140      case COMPLETED:
141        return "All test operations have completed.";
142      case INPROGRESS:
143        return "A test operations is currently executing.";
144      case WAITING:
145        return "A test operation is waiting for an external client request.";
146      case STOPPED:
147        return "The test script execution was manually stopped.";
148      case ENTEREDINERROR:
149        return "This test report was entered or created in error.";
150      case NULL:
151        return null;
152      default:
153        return "?";
154      }
155    }
156
157    public String getDisplay() {
158      switch (this) {
159      case COMPLETED:
160        return "Completed";
161      case INPROGRESS:
162        return "In Progress";
163      case WAITING:
164        return "Waiting";
165      case STOPPED:
166        return "Stopped";
167      case ENTEREDINERROR:
168        return "Entered In Error";
169      case NULL:
170        return null;
171      default:
172        return "?";
173      }
174    }
175  }
176
177  public static class TestReportStatusEnumFactory implements EnumFactory<TestReportStatus> {
178    public TestReportStatus fromCode(String codeString) throws IllegalArgumentException {
179      if (codeString == null || "".equals(codeString))
180        if (codeString == null || "".equals(codeString))
181          return null;
182      if ("completed".equals(codeString))
183        return TestReportStatus.COMPLETED;
184      if ("in-progress".equals(codeString))
185        return TestReportStatus.INPROGRESS;
186      if ("waiting".equals(codeString))
187        return TestReportStatus.WAITING;
188      if ("stopped".equals(codeString))
189        return TestReportStatus.STOPPED;
190      if ("entered-in-error".equals(codeString))
191        return TestReportStatus.ENTEREDINERROR;
192      throw new IllegalArgumentException("Unknown TestReportStatus code '" + codeString + "'");
193    }
194
195    public Enumeration<TestReportStatus> fromType(PrimitiveType<?> code) throws FHIRException {
196      if (code == null)
197        return null;
198      if (code.isEmpty())
199        return new Enumeration<TestReportStatus>(this, TestReportStatus.NULL, code);
200      String codeString = code.asStringValue();
201      if (codeString == null || "".equals(codeString))
202        return new Enumeration<TestReportStatus>(this, TestReportStatus.NULL, code);
203      if ("completed".equals(codeString))
204        return new Enumeration<TestReportStatus>(this, TestReportStatus.COMPLETED, code);
205      if ("in-progress".equals(codeString))
206        return new Enumeration<TestReportStatus>(this, TestReportStatus.INPROGRESS, code);
207      if ("waiting".equals(codeString))
208        return new Enumeration<TestReportStatus>(this, TestReportStatus.WAITING, code);
209      if ("stopped".equals(codeString))
210        return new Enumeration<TestReportStatus>(this, TestReportStatus.STOPPED, code);
211      if ("entered-in-error".equals(codeString))
212        return new Enumeration<TestReportStatus>(this, TestReportStatus.ENTEREDINERROR, code);
213      throw new FHIRException("Unknown TestReportStatus code '" + codeString + "'");
214    }
215
216    public String toCode(TestReportStatus code) {
217      if (code == TestReportStatus.COMPLETED)
218        return "completed";
219      if (code == TestReportStatus.INPROGRESS)
220        return "in-progress";
221      if (code == TestReportStatus.WAITING)
222        return "waiting";
223      if (code == TestReportStatus.STOPPED)
224        return "stopped";
225      if (code == TestReportStatus.ENTEREDINERROR)
226        return "entered-in-error";
227      return "?";
228    }
229
230    public String toSystem(TestReportStatus code) {
231      return code.getSystem();
232    }
233  }
234
235  public enum TestReportResult {
236    /**
237     * All test operations successfully passed all asserts.
238     */
239    PASS,
240    /**
241     * One or more test operations failed one or more asserts.
242     */
243    FAIL,
244    /**
245     * One or more test operations is pending execution completion.
246     */
247    PENDING,
248    /**
249     * added to help the parsers with the generic types
250     */
251    NULL;
252
253    public static TestReportResult fromCode(String codeString) throws FHIRException {
254      if (codeString == null || "".equals(codeString))
255        return null;
256      if ("pass".equals(codeString))
257        return PASS;
258      if ("fail".equals(codeString))
259        return FAIL;
260      if ("pending".equals(codeString))
261        return PENDING;
262      if (Configuration.isAcceptInvalidEnums())
263        return null;
264      else
265        throw new FHIRException("Unknown TestReportResult code '" + codeString + "'");
266    }
267
268    public String toCode() {
269      switch (this) {
270      case PASS:
271        return "pass";
272      case FAIL:
273        return "fail";
274      case PENDING:
275        return "pending";
276      case NULL:
277        return null;
278      default:
279        return "?";
280      }
281    }
282
283    public String getSystem() {
284      switch (this) {
285      case PASS:
286        return "http://hl7.org/fhir/report-result-codes";
287      case FAIL:
288        return "http://hl7.org/fhir/report-result-codes";
289      case PENDING:
290        return "http://hl7.org/fhir/report-result-codes";
291      case NULL:
292        return null;
293      default:
294        return "?";
295      }
296    }
297
298    public String getDefinition() {
299      switch (this) {
300      case PASS:
301        return "All test operations successfully passed all asserts.";
302      case FAIL:
303        return "One or more test operations failed one or more asserts.";
304      case PENDING:
305        return "One or more test operations is pending execution completion.";
306      case NULL:
307        return null;
308      default:
309        return "?";
310      }
311    }
312
313    public String getDisplay() {
314      switch (this) {
315      case PASS:
316        return "Pass";
317      case FAIL:
318        return "Fail";
319      case PENDING:
320        return "Pending";
321      case NULL:
322        return null;
323      default:
324        return "?";
325      }
326    }
327  }
328
329  public static class TestReportResultEnumFactory implements EnumFactory<TestReportResult> {
330    public TestReportResult fromCode(String codeString) throws IllegalArgumentException {
331      if (codeString == null || "".equals(codeString))
332        if (codeString == null || "".equals(codeString))
333          return null;
334      if ("pass".equals(codeString))
335        return TestReportResult.PASS;
336      if ("fail".equals(codeString))
337        return TestReportResult.FAIL;
338      if ("pending".equals(codeString))
339        return TestReportResult.PENDING;
340      throw new IllegalArgumentException("Unknown TestReportResult code '" + codeString + "'");
341    }
342
343    public Enumeration<TestReportResult> fromType(PrimitiveType<?> code) throws FHIRException {
344      if (code == null)
345        return null;
346      if (code.isEmpty())
347        return new Enumeration<TestReportResult>(this, TestReportResult.NULL, code);
348      String codeString = code.asStringValue();
349      if (codeString == null || "".equals(codeString))
350        return new Enumeration<TestReportResult>(this, TestReportResult.NULL, code);
351      if ("pass".equals(codeString))
352        return new Enumeration<TestReportResult>(this, TestReportResult.PASS, code);
353      if ("fail".equals(codeString))
354        return new Enumeration<TestReportResult>(this, TestReportResult.FAIL, code);
355      if ("pending".equals(codeString))
356        return new Enumeration<TestReportResult>(this, TestReportResult.PENDING, code);
357      throw new FHIRException("Unknown TestReportResult code '" + codeString + "'");
358    }
359
360    public String toCode(TestReportResult code) {
361      if (code == TestReportResult.PASS)
362        return "pass";
363      if (code == TestReportResult.FAIL)
364        return "fail";
365      if (code == TestReportResult.PENDING)
366        return "pending";
367      return "?";
368    }
369
370    public String toSystem(TestReportResult code) {
371      return code.getSystem();
372    }
373  }
374
375  public enum TestReportParticipantType {
376    /**
377     * The test execution engine.
378     */
379    TESTENGINE,
380    /**
381     * A FHIR Client.
382     */
383    CLIENT,
384    /**
385     * A FHIR Server.
386     */
387    SERVER,
388    /**
389     * added to help the parsers with the generic types
390     */
391    NULL;
392
393    public static TestReportParticipantType fromCode(String codeString) throws FHIRException {
394      if (codeString == null || "".equals(codeString))
395        return null;
396      if ("test-engine".equals(codeString))
397        return TESTENGINE;
398      if ("client".equals(codeString))
399        return CLIENT;
400      if ("server".equals(codeString))
401        return SERVER;
402      if (Configuration.isAcceptInvalidEnums())
403        return null;
404      else
405        throw new FHIRException("Unknown TestReportParticipantType code '" + codeString + "'");
406    }
407
408    public String toCode() {
409      switch (this) {
410      case TESTENGINE:
411        return "test-engine";
412      case CLIENT:
413        return "client";
414      case SERVER:
415        return "server";
416      case NULL:
417        return null;
418      default:
419        return "?";
420      }
421    }
422
423    public String getSystem() {
424      switch (this) {
425      case TESTENGINE:
426        return "http://hl7.org/fhir/report-participant-type";
427      case CLIENT:
428        return "http://hl7.org/fhir/report-participant-type";
429      case SERVER:
430        return "http://hl7.org/fhir/report-participant-type";
431      case NULL:
432        return null;
433      default:
434        return "?";
435      }
436    }
437
438    public String getDefinition() {
439      switch (this) {
440      case TESTENGINE:
441        return "The test execution engine.";
442      case CLIENT:
443        return "A FHIR Client.";
444      case SERVER:
445        return "A FHIR Server.";
446      case NULL:
447        return null;
448      default:
449        return "?";
450      }
451    }
452
453    public String getDisplay() {
454      switch (this) {
455      case TESTENGINE:
456        return "Test Engine";
457      case CLIENT:
458        return "Client";
459      case SERVER:
460        return "Server";
461      case NULL:
462        return null;
463      default:
464        return "?";
465      }
466    }
467  }
468
469  public static class TestReportParticipantTypeEnumFactory implements EnumFactory<TestReportParticipantType> {
470    public TestReportParticipantType fromCode(String codeString) throws IllegalArgumentException {
471      if (codeString == null || "".equals(codeString))
472        if (codeString == null || "".equals(codeString))
473          return null;
474      if ("test-engine".equals(codeString))
475        return TestReportParticipantType.TESTENGINE;
476      if ("client".equals(codeString))
477        return TestReportParticipantType.CLIENT;
478      if ("server".equals(codeString))
479        return TestReportParticipantType.SERVER;
480      throw new IllegalArgumentException("Unknown TestReportParticipantType code '" + codeString + "'");
481    }
482
483    public Enumeration<TestReportParticipantType> fromType(PrimitiveType<?> code) throws FHIRException {
484      if (code == null)
485        return null;
486      if (code.isEmpty())
487        return new Enumeration<TestReportParticipantType>(this, TestReportParticipantType.NULL, code);
488      String codeString = code.asStringValue();
489      if (codeString == null || "".equals(codeString))
490        return new Enumeration<TestReportParticipantType>(this, TestReportParticipantType.NULL, code);
491      if ("test-engine".equals(codeString))
492        return new Enumeration<TestReportParticipantType>(this, TestReportParticipantType.TESTENGINE, code);
493      if ("client".equals(codeString))
494        return new Enumeration<TestReportParticipantType>(this, TestReportParticipantType.CLIENT, code);
495      if ("server".equals(codeString))
496        return new Enumeration<TestReportParticipantType>(this, TestReportParticipantType.SERVER, code);
497      throw new FHIRException("Unknown TestReportParticipantType code '" + codeString + "'");
498    }
499
500    public String toCode(TestReportParticipantType code) {
501      if (code == TestReportParticipantType.TESTENGINE)
502        return "test-engine";
503      if (code == TestReportParticipantType.CLIENT)
504        return "client";
505      if (code == TestReportParticipantType.SERVER)
506        return "server";
507      return "?";
508    }
509
510    public String toSystem(TestReportParticipantType code) {
511      return code.getSystem();
512    }
513  }
514
515  public enum TestReportActionResult {
516    /**
517     * The action was successful.
518     */
519    PASS,
520    /**
521     * The action was skipped.
522     */
523    SKIP,
524    /**
525     * The action failed.
526     */
527    FAIL,
528    /**
529     * The action passed but with warnings.
530     */
531    WARNING,
532    /**
533     * The action encountered a fatal error and the engine was unable to process.
534     */
535    ERROR,
536    /**
537     * added to help the parsers with the generic types
538     */
539    NULL;
540
541    public static TestReportActionResult fromCode(String codeString) throws FHIRException {
542      if (codeString == null || "".equals(codeString))
543        return null;
544      if ("pass".equals(codeString))
545        return PASS;
546      if ("skip".equals(codeString))
547        return SKIP;
548      if ("fail".equals(codeString))
549        return FAIL;
550      if ("warning".equals(codeString))
551        return WARNING;
552      if ("error".equals(codeString))
553        return ERROR;
554      if (Configuration.isAcceptInvalidEnums())
555        return null;
556      else
557        throw new FHIRException("Unknown TestReportActionResult code '" + codeString + "'");
558    }
559
560    public String toCode() {
561      switch (this) {
562      case PASS:
563        return "pass";
564      case SKIP:
565        return "skip";
566      case FAIL:
567        return "fail";
568      case WARNING:
569        return "warning";
570      case ERROR:
571        return "error";
572      case NULL:
573        return null;
574      default:
575        return "?";
576      }
577    }
578
579    public String getSystem() {
580      switch (this) {
581      case PASS:
582        return "http://hl7.org/fhir/report-action-result-codes";
583      case SKIP:
584        return "http://hl7.org/fhir/report-action-result-codes";
585      case FAIL:
586        return "http://hl7.org/fhir/report-action-result-codes";
587      case WARNING:
588        return "http://hl7.org/fhir/report-action-result-codes";
589      case ERROR:
590        return "http://hl7.org/fhir/report-action-result-codes";
591      case NULL:
592        return null;
593      default:
594        return "?";
595      }
596    }
597
598    public String getDefinition() {
599      switch (this) {
600      case PASS:
601        return "The action was successful.";
602      case SKIP:
603        return "The action was skipped.";
604      case FAIL:
605        return "The action failed.";
606      case WARNING:
607        return "The action passed but with warnings.";
608      case ERROR:
609        return "The action encountered a fatal error and the engine was unable to process.";
610      case NULL:
611        return null;
612      default:
613        return "?";
614      }
615    }
616
617    public String getDisplay() {
618      switch (this) {
619      case PASS:
620        return "Pass";
621      case SKIP:
622        return "Skip";
623      case FAIL:
624        return "Fail";
625      case WARNING:
626        return "Warning";
627      case ERROR:
628        return "Error";
629      case NULL:
630        return null;
631      default:
632        return "?";
633      }
634    }
635  }
636
637  public static class TestReportActionResultEnumFactory implements EnumFactory<TestReportActionResult> {
638    public TestReportActionResult fromCode(String codeString) throws IllegalArgumentException {
639      if (codeString == null || "".equals(codeString))
640        if (codeString == null || "".equals(codeString))
641          return null;
642      if ("pass".equals(codeString))
643        return TestReportActionResult.PASS;
644      if ("skip".equals(codeString))
645        return TestReportActionResult.SKIP;
646      if ("fail".equals(codeString))
647        return TestReportActionResult.FAIL;
648      if ("warning".equals(codeString))
649        return TestReportActionResult.WARNING;
650      if ("error".equals(codeString))
651        return TestReportActionResult.ERROR;
652      throw new IllegalArgumentException("Unknown TestReportActionResult code '" + codeString + "'");
653    }
654
655    public Enumeration<TestReportActionResult> fromType(PrimitiveType<?> code) throws FHIRException {
656      if (code == null)
657        return null;
658      if (code.isEmpty())
659        return new Enumeration<TestReportActionResult>(this, TestReportActionResult.NULL, code);
660      String codeString = code.asStringValue();
661      if (codeString == null || "".equals(codeString))
662        return new Enumeration<TestReportActionResult>(this, TestReportActionResult.NULL, code);
663      if ("pass".equals(codeString))
664        return new Enumeration<TestReportActionResult>(this, TestReportActionResult.PASS, code);
665      if ("skip".equals(codeString))
666        return new Enumeration<TestReportActionResult>(this, TestReportActionResult.SKIP, code);
667      if ("fail".equals(codeString))
668        return new Enumeration<TestReportActionResult>(this, TestReportActionResult.FAIL, code);
669      if ("warning".equals(codeString))
670        return new Enumeration<TestReportActionResult>(this, TestReportActionResult.WARNING, code);
671      if ("error".equals(codeString))
672        return new Enumeration<TestReportActionResult>(this, TestReportActionResult.ERROR, code);
673      throw new FHIRException("Unknown TestReportActionResult code '" + codeString + "'");
674    }
675
676    public String toCode(TestReportActionResult code) {
677      if (code == TestReportActionResult.PASS)
678        return "pass";
679      if (code == TestReportActionResult.SKIP)
680        return "skip";
681      if (code == TestReportActionResult.FAIL)
682        return "fail";
683      if (code == TestReportActionResult.WARNING)
684        return "warning";
685      if (code == TestReportActionResult.ERROR)
686        return "error";
687      return "?";
688    }
689
690    public String toSystem(TestReportActionResult code) {
691      return code.getSystem();
692    }
693  }
694
695  @Block()
696  public static class TestReportParticipantComponent extends BackboneElement implements IBaseBackboneElement {
697    /**
698     * The type of participant.
699     */
700    @Child(name = "type", type = { CodeType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
701    @Description(shortDefinition = "test-engine | client | server", formalDefinition = "The type of participant.")
702    @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/report-participant-type")
703    protected Enumeration<TestReportParticipantType> type;
704
705    /**
706     * The uri of the participant. An absolute URL is preferred.
707     */
708    @Child(name = "uri", type = { UriType.class }, order = 2, min = 1, max = 1, modifier = false, summary = false)
709    @Description(shortDefinition = "The uri of the participant. An absolute URL is preferred", formalDefinition = "The uri of the participant. An absolute URL is preferred.")
710    protected UriType uri;
711
712    /**
713     * The display name of the participant.
714     */
715    @Child(name = "display", type = {
716        StringType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
717    @Description(shortDefinition = "The display name of the participant", formalDefinition = "The display name of the participant.")
718    protected StringType display;
719
720    private static final long serialVersionUID = 577488357L;
721
722    /**
723     * Constructor
724     */
725    public TestReportParticipantComponent() {
726      super();
727    }
728
729    /**
730     * Constructor
731     */
732    public TestReportParticipantComponent(Enumeration<TestReportParticipantType> type, UriType uri) {
733      super();
734      this.type = type;
735      this.uri = uri;
736    }
737
738    /**
739     * @return {@link #type} (The type of participant.). This is the underlying
740     *         object with id, value and extensions. The accessor "getType" gives
741     *         direct access to the value
742     */
743    public Enumeration<TestReportParticipantType> getTypeElement() {
744      if (this.type == null)
745        if (Configuration.errorOnAutoCreate())
746          throw new Error("Attempt to auto-create TestReportParticipantComponent.type");
747        else if (Configuration.doAutoCreate())
748          this.type = new Enumeration<TestReportParticipantType>(new TestReportParticipantTypeEnumFactory()); // bb
749      return this.type;
750    }
751
752    public boolean hasTypeElement() {
753      return this.type != null && !this.type.isEmpty();
754    }
755
756    public boolean hasType() {
757      return this.type != null && !this.type.isEmpty();
758    }
759
760    /**
761     * @param value {@link #type} (The type of participant.). This is the underlying
762     *              object with id, value and extensions. The accessor "getType"
763     *              gives direct access to the value
764     */
765    public TestReportParticipantComponent setTypeElement(Enumeration<TestReportParticipantType> value) {
766      this.type = value;
767      return this;
768    }
769
770    /**
771     * @return The type of participant.
772     */
773    public TestReportParticipantType getType() {
774      return this.type == null ? null : this.type.getValue();
775    }
776
777    /**
778     * @param value The type of participant.
779     */
780    public TestReportParticipantComponent setType(TestReportParticipantType value) {
781      if (this.type == null)
782        this.type = new Enumeration<TestReportParticipantType>(new TestReportParticipantTypeEnumFactory());
783      this.type.setValue(value);
784      return this;
785    }
786
787    /**
788     * @return {@link #uri} (The uri of the participant. An absolute URL is
789     *         preferred.). This is the underlying object with id, value and
790     *         extensions. The accessor "getUri" gives direct access to the value
791     */
792    public UriType getUriElement() {
793      if (this.uri == null)
794        if (Configuration.errorOnAutoCreate())
795          throw new Error("Attempt to auto-create TestReportParticipantComponent.uri");
796        else if (Configuration.doAutoCreate())
797          this.uri = new UriType(); // bb
798      return this.uri;
799    }
800
801    public boolean hasUriElement() {
802      return this.uri != null && !this.uri.isEmpty();
803    }
804
805    public boolean hasUri() {
806      return this.uri != null && !this.uri.isEmpty();
807    }
808
809    /**
810     * @param value {@link #uri} (The uri of the participant. An absolute URL is
811     *              preferred.). This is the underlying object with id, value and
812     *              extensions. The accessor "getUri" gives direct access to the
813     *              value
814     */
815    public TestReportParticipantComponent setUriElement(UriType value) {
816      this.uri = value;
817      return this;
818    }
819
820    /**
821     * @return The uri of the participant. An absolute URL is preferred.
822     */
823    public String getUri() {
824      return this.uri == null ? null : this.uri.getValue();
825    }
826
827    /**
828     * @param value The uri of the participant. An absolute URL is preferred.
829     */
830    public TestReportParticipantComponent setUri(String value) {
831      if (this.uri == null)
832        this.uri = new UriType();
833      this.uri.setValue(value);
834      return this;
835    }
836
837    /**
838     * @return {@link #display} (The display name of the participant.). This is the
839     *         underlying object with id, value and extensions. The accessor
840     *         "getDisplay" gives direct access to the value
841     */
842    public StringType getDisplayElement() {
843      if (this.display == null)
844        if (Configuration.errorOnAutoCreate())
845          throw new Error("Attempt to auto-create TestReportParticipantComponent.display");
846        else if (Configuration.doAutoCreate())
847          this.display = new StringType(); // bb
848      return this.display;
849    }
850
851    public boolean hasDisplayElement() {
852      return this.display != null && !this.display.isEmpty();
853    }
854
855    public boolean hasDisplay() {
856      return this.display != null && !this.display.isEmpty();
857    }
858
859    /**
860     * @param value {@link #display} (The display name of the participant.). This is
861     *              the underlying object with id, value and extensions. The
862     *              accessor "getDisplay" gives direct access to the value
863     */
864    public TestReportParticipantComponent setDisplayElement(StringType value) {
865      this.display = value;
866      return this;
867    }
868
869    /**
870     * @return The display name of the participant.
871     */
872    public String getDisplay() {
873      return this.display == null ? null : this.display.getValue();
874    }
875
876    /**
877     * @param value The display name of the participant.
878     */
879    public TestReportParticipantComponent setDisplay(String value) {
880      if (Utilities.noString(value))
881        this.display = null;
882      else {
883        if (this.display == null)
884          this.display = new StringType();
885        this.display.setValue(value);
886      }
887      return this;
888    }
889
890    protected void listChildren(List<Property> children) {
891      super.listChildren(children);
892      children.add(new Property("type", "code", "The type of participant.", 0, 1, type));
893      children.add(new Property("uri", "uri", "The uri of the participant. An absolute URL is preferred.", 0, 1, uri));
894      children.add(new Property("display", "string", "The display name of the participant.", 0, 1, display));
895    }
896
897    @Override
898    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
899      switch (_hash) {
900      case 3575610:
901        /* type */ return new Property("type", "code", "The type of participant.", 0, 1, type);
902      case 116076:
903        /* uri */ return new Property("uri", "uri", "The uri of the participant. An absolute URL is preferred.", 0, 1,
904            uri);
905      case 1671764162:
906        /* display */ return new Property("display", "string", "The display name of the participant.", 0, 1, display);
907      default:
908        return super.getNamedProperty(_hash, _name, _checkValid);
909      }
910
911    }
912
913    @Override
914    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
915      switch (hash) {
916      case 3575610:
917        /* type */ return this.type == null ? new Base[0] : new Base[] { this.type }; // Enumeration<TestReportParticipantType>
918      case 116076:
919        /* uri */ return this.uri == null ? new Base[0] : new Base[] { this.uri }; // UriType
920      case 1671764162:
921        /* display */ return this.display == null ? new Base[0] : new Base[] { this.display }; // StringType
922      default:
923        return super.getProperty(hash, name, checkValid);
924      }
925
926    }
927
928    @Override
929    public Base setProperty(int hash, String name, Base value) throws FHIRException {
930      switch (hash) {
931      case 3575610: // type
932        value = new TestReportParticipantTypeEnumFactory().fromType(castToCode(value));
933        this.type = (Enumeration) value; // Enumeration<TestReportParticipantType>
934        return value;
935      case 116076: // uri
936        this.uri = castToUri(value); // UriType
937        return value;
938      case 1671764162: // display
939        this.display = castToString(value); // StringType
940        return value;
941      default:
942        return super.setProperty(hash, name, value);
943      }
944
945    }
946
947    @Override
948    public Base setProperty(String name, Base value) throws FHIRException {
949      if (name.equals("type")) {
950        value = new TestReportParticipantTypeEnumFactory().fromType(castToCode(value));
951        this.type = (Enumeration) value; // Enumeration<TestReportParticipantType>
952      } else if (name.equals("uri")) {
953        this.uri = castToUri(value); // UriType
954      } else if (name.equals("display")) {
955        this.display = castToString(value); // StringType
956      } else
957        return super.setProperty(name, value);
958      return value;
959    }
960
961    @Override
962    public Base makeProperty(int hash, String name) throws FHIRException {
963      switch (hash) {
964      case 3575610:
965        return getTypeElement();
966      case 116076:
967        return getUriElement();
968      case 1671764162:
969        return getDisplayElement();
970      default:
971        return super.makeProperty(hash, name);
972      }
973
974    }
975
976    @Override
977    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
978      switch (hash) {
979      case 3575610:
980        /* type */ return new String[] { "code" };
981      case 116076:
982        /* uri */ return new String[] { "uri" };
983      case 1671764162:
984        /* display */ return new String[] { "string" };
985      default:
986        return super.getTypesForProperty(hash, name);
987      }
988
989    }
990
991    @Override
992    public Base addChild(String name) throws FHIRException {
993      if (name.equals("type")) {
994        throw new FHIRException("Cannot call addChild on a singleton property TestReport.type");
995      } else if (name.equals("uri")) {
996        throw new FHIRException("Cannot call addChild on a singleton property TestReport.uri");
997      } else if (name.equals("display")) {
998        throw new FHIRException("Cannot call addChild on a singleton property TestReport.display");
999      } else
1000        return super.addChild(name);
1001    }
1002
1003    public TestReportParticipantComponent copy() {
1004      TestReportParticipantComponent dst = new TestReportParticipantComponent();
1005      copyValues(dst);
1006      return dst;
1007    }
1008
1009    public void copyValues(TestReportParticipantComponent dst) {
1010      super.copyValues(dst);
1011      dst.type = type == null ? null : type.copy();
1012      dst.uri = uri == null ? null : uri.copy();
1013      dst.display = display == null ? null : display.copy();
1014    }
1015
1016    @Override
1017    public boolean equalsDeep(Base other_) {
1018      if (!super.equalsDeep(other_))
1019        return false;
1020      if (!(other_ instanceof TestReportParticipantComponent))
1021        return false;
1022      TestReportParticipantComponent o = (TestReportParticipantComponent) other_;
1023      return compareDeep(type, o.type, true) && compareDeep(uri, o.uri, true) && compareDeep(display, o.display, true);
1024    }
1025
1026    @Override
1027    public boolean equalsShallow(Base other_) {
1028      if (!super.equalsShallow(other_))
1029        return false;
1030      if (!(other_ instanceof TestReportParticipantComponent))
1031        return false;
1032      TestReportParticipantComponent o = (TestReportParticipantComponent) other_;
1033      return compareValues(type, o.type, true) && compareValues(uri, o.uri, true)
1034          && compareValues(display, o.display, true);
1035    }
1036
1037    public boolean isEmpty() {
1038      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, uri, display);
1039    }
1040
1041    public String fhirType() {
1042      return "TestReport.participant";
1043
1044    }
1045
1046  }
1047
1048  @Block()
1049  public static class TestReportSetupComponent extends BackboneElement implements IBaseBackboneElement {
1050    /**
1051     * Action would contain either an operation or an assertion.
1052     */
1053    @Child(name = "action", type = {}, order = 1, min = 1, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
1054    @Description(shortDefinition = "A setup operation or assert that was executed", formalDefinition = "Action would contain either an operation or an assertion.")
1055    protected List<SetupActionComponent> action;
1056
1057    private static final long serialVersionUID = -123374486L;
1058
1059    /**
1060     * Constructor
1061     */
1062    public TestReportSetupComponent() {
1063      super();
1064    }
1065
1066    /**
1067     * @return {@link #action} (Action would contain either an operation or an
1068     *         assertion.)
1069     */
1070    public List<SetupActionComponent> getAction() {
1071      if (this.action == null)
1072        this.action = new ArrayList<SetupActionComponent>();
1073      return this.action;
1074    }
1075
1076    /**
1077     * @return Returns a reference to <code>this</code> for easy method chaining
1078     */
1079    public TestReportSetupComponent setAction(List<SetupActionComponent> theAction) {
1080      this.action = theAction;
1081      return this;
1082    }
1083
1084    public boolean hasAction() {
1085      if (this.action == null)
1086        return false;
1087      for (SetupActionComponent item : this.action)
1088        if (!item.isEmpty())
1089          return true;
1090      return false;
1091    }
1092
1093    public SetupActionComponent addAction() { // 3
1094      SetupActionComponent t = new SetupActionComponent();
1095      if (this.action == null)
1096        this.action = new ArrayList<SetupActionComponent>();
1097      this.action.add(t);
1098      return t;
1099    }
1100
1101    public TestReportSetupComponent addAction(SetupActionComponent t) { // 3
1102      if (t == null)
1103        return this;
1104      if (this.action == null)
1105        this.action = new ArrayList<SetupActionComponent>();
1106      this.action.add(t);
1107      return this;
1108    }
1109
1110    /**
1111     * @return The first repetition of repeating field {@link #action}, creating it
1112     *         if it does not already exist
1113     */
1114    public SetupActionComponent getActionFirstRep() {
1115      if (getAction().isEmpty()) {
1116        addAction();
1117      }
1118      return getAction().get(0);
1119    }
1120
1121    protected void listChildren(List<Property> children) {
1122      super.listChildren(children);
1123      children.add(new Property("action", "", "Action would contain either an operation or an assertion.", 0,
1124          java.lang.Integer.MAX_VALUE, action));
1125    }
1126
1127    @Override
1128    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1129      switch (_hash) {
1130      case -1422950858:
1131        /* action */ return new Property("action", "", "Action would contain either an operation or an assertion.", 0,
1132            java.lang.Integer.MAX_VALUE, action);
1133      default:
1134        return super.getNamedProperty(_hash, _name, _checkValid);
1135      }
1136
1137    }
1138
1139    @Override
1140    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1141      switch (hash) {
1142      case -1422950858:
1143        /* action */ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // SetupActionComponent
1144      default:
1145        return super.getProperty(hash, name, checkValid);
1146      }
1147
1148    }
1149
1150    @Override
1151    public Base setProperty(int hash, String name, Base value) throws FHIRException {
1152      switch (hash) {
1153      case -1422950858: // action
1154        this.getAction().add((SetupActionComponent) value); // SetupActionComponent
1155        return value;
1156      default:
1157        return super.setProperty(hash, name, value);
1158      }
1159
1160    }
1161
1162    @Override
1163    public Base setProperty(String name, Base value) throws FHIRException {
1164      if (name.equals("action")) {
1165        this.getAction().add((SetupActionComponent) value);
1166      } else
1167        return super.setProperty(name, value);
1168      return value;
1169    }
1170
1171    @Override
1172    public Base makeProperty(int hash, String name) throws FHIRException {
1173      switch (hash) {
1174      case -1422950858:
1175        return addAction();
1176      default:
1177        return super.makeProperty(hash, name);
1178      }
1179
1180    }
1181
1182    @Override
1183    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1184      switch (hash) {
1185      case -1422950858:
1186        /* action */ return new String[] {};
1187      default:
1188        return super.getTypesForProperty(hash, name);
1189      }
1190
1191    }
1192
1193    @Override
1194    public Base addChild(String name) throws FHIRException {
1195      if (name.equals("action")) {
1196        return addAction();
1197      } else
1198        return super.addChild(name);
1199    }
1200
1201    public TestReportSetupComponent copy() {
1202      TestReportSetupComponent dst = new TestReportSetupComponent();
1203      copyValues(dst);
1204      return dst;
1205    }
1206
1207    public void copyValues(TestReportSetupComponent dst) {
1208      super.copyValues(dst);
1209      if (action != null) {
1210        dst.action = new ArrayList<SetupActionComponent>();
1211        for (SetupActionComponent i : action)
1212          dst.action.add(i.copy());
1213      }
1214      ;
1215    }
1216
1217    @Override
1218    public boolean equalsDeep(Base other_) {
1219      if (!super.equalsDeep(other_))
1220        return false;
1221      if (!(other_ instanceof TestReportSetupComponent))
1222        return false;
1223      TestReportSetupComponent o = (TestReportSetupComponent) other_;
1224      return compareDeep(action, o.action, true);
1225    }
1226
1227    @Override
1228    public boolean equalsShallow(Base other_) {
1229      if (!super.equalsShallow(other_))
1230        return false;
1231      if (!(other_ instanceof TestReportSetupComponent))
1232        return false;
1233      TestReportSetupComponent o = (TestReportSetupComponent) other_;
1234      return true;
1235    }
1236
1237    public boolean isEmpty() {
1238      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action);
1239    }
1240
1241    public String fhirType() {
1242      return "TestReport.setup";
1243
1244    }
1245
1246  }
1247
1248  @Block()
1249  public static class SetupActionComponent extends BackboneElement implements IBaseBackboneElement {
1250    /**
1251     * The operation performed.
1252     */
1253    @Child(name = "operation", type = {}, order = 1, min = 0, max = 1, modifier = false, summary = false)
1254    @Description(shortDefinition = "The operation to perform", formalDefinition = "The operation performed.")
1255    protected SetupActionOperationComponent operation;
1256
1257    /**
1258     * The results of the assertion performed on the previous operations.
1259     */
1260    @Child(name = "assert", type = {}, order = 2, min = 0, max = 1, modifier = false, summary = false)
1261    @Description(shortDefinition = "The assertion to perform", formalDefinition = "The results of the assertion performed on the previous operations.")
1262    protected SetupActionAssertComponent assert_;
1263
1264    private static final long serialVersionUID = -252088305L;
1265
1266    /**
1267     * Constructor
1268     */
1269    public SetupActionComponent() {
1270      super();
1271    }
1272
1273    /**
1274     * @return {@link #operation} (The operation performed.)
1275     */
1276    public SetupActionOperationComponent getOperation() {
1277      if (this.operation == null)
1278        if (Configuration.errorOnAutoCreate())
1279          throw new Error("Attempt to auto-create SetupActionComponent.operation");
1280        else if (Configuration.doAutoCreate())
1281          this.operation = new SetupActionOperationComponent(); // cc
1282      return this.operation;
1283    }
1284
1285    public boolean hasOperation() {
1286      return this.operation != null && !this.operation.isEmpty();
1287    }
1288
1289    /**
1290     * @param value {@link #operation} (The operation performed.)
1291     */
1292    public SetupActionComponent setOperation(SetupActionOperationComponent value) {
1293      this.operation = value;
1294      return this;
1295    }
1296
1297    /**
1298     * @return {@link #assert_} (The results of the assertion performed on the
1299     *         previous operations.)
1300     */
1301    public SetupActionAssertComponent getAssert() {
1302      if (this.assert_ == null)
1303        if (Configuration.errorOnAutoCreate())
1304          throw new Error("Attempt to auto-create SetupActionComponent.assert_");
1305        else if (Configuration.doAutoCreate())
1306          this.assert_ = new SetupActionAssertComponent(); // cc
1307      return this.assert_;
1308    }
1309
1310    public boolean hasAssert() {
1311      return this.assert_ != null && !this.assert_.isEmpty();
1312    }
1313
1314    /**
1315     * @param value {@link #assert_} (The results of the assertion performed on the
1316     *              previous operations.)
1317     */
1318    public SetupActionComponent setAssert(SetupActionAssertComponent value) {
1319      this.assert_ = value;
1320      return this;
1321    }
1322
1323    protected void listChildren(List<Property> children) {
1324      super.listChildren(children);
1325      children.add(new Property("operation", "", "The operation performed.", 0, 1, operation));
1326      children.add(new Property("assert", "", "The results of the assertion performed on the previous operations.", 0,
1327          1, assert_));
1328    }
1329
1330    @Override
1331    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1332      switch (_hash) {
1333      case 1662702951:
1334        /* operation */ return new Property("operation", "", "The operation performed.", 0, 1, operation);
1335      case -1408208058:
1336        /* assert */ return new Property("assert", "",
1337            "The results of the assertion performed on the previous operations.", 0, 1, assert_);
1338      default:
1339        return super.getNamedProperty(_hash, _name, _checkValid);
1340      }
1341
1342    }
1343
1344    @Override
1345    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1346      switch (hash) {
1347      case 1662702951:
1348        /* operation */ return this.operation == null ? new Base[0] : new Base[] { this.operation }; // SetupActionOperationComponent
1349      case -1408208058:
1350        /* assert */ return this.assert_ == null ? new Base[0] : new Base[] { this.assert_ }; // SetupActionAssertComponent
1351      default:
1352        return super.getProperty(hash, name, checkValid);
1353      }
1354
1355    }
1356
1357    @Override
1358    public Base setProperty(int hash, String name, Base value) throws FHIRException {
1359      switch (hash) {
1360      case 1662702951: // operation
1361        this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
1362        return value;
1363      case -1408208058: // assert
1364        this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
1365        return value;
1366      default:
1367        return super.setProperty(hash, name, value);
1368      }
1369
1370    }
1371
1372    @Override
1373    public Base setProperty(String name, Base value) throws FHIRException {
1374      if (name.equals("operation")) {
1375        this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
1376      } else if (name.equals("assert")) {
1377        this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
1378      } else
1379        return super.setProperty(name, value);
1380      return value;
1381    }
1382
1383    @Override
1384    public Base makeProperty(int hash, String name) throws FHIRException {
1385      switch (hash) {
1386      case 1662702951:
1387        return getOperation();
1388      case -1408208058:
1389        return getAssert();
1390      default:
1391        return super.makeProperty(hash, name);
1392      }
1393
1394    }
1395
1396    @Override
1397    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1398      switch (hash) {
1399      case 1662702951:
1400        /* operation */ return new String[] {};
1401      case -1408208058:
1402        /* assert */ return new String[] {};
1403      default:
1404        return super.getTypesForProperty(hash, name);
1405      }
1406
1407    }
1408
1409    @Override
1410    public Base addChild(String name) throws FHIRException {
1411      if (name.equals("operation")) {
1412        this.operation = new SetupActionOperationComponent();
1413        return this.operation;
1414      } else if (name.equals("assert")) {
1415        this.assert_ = new SetupActionAssertComponent();
1416        return this.assert_;
1417      } else
1418        return super.addChild(name);
1419    }
1420
1421    public SetupActionComponent copy() {
1422      SetupActionComponent dst = new SetupActionComponent();
1423      copyValues(dst);
1424      return dst;
1425    }
1426
1427    public void copyValues(SetupActionComponent dst) {
1428      super.copyValues(dst);
1429      dst.operation = operation == null ? null : operation.copy();
1430      dst.assert_ = assert_ == null ? null : assert_.copy();
1431    }
1432
1433    @Override
1434    public boolean equalsDeep(Base other_) {
1435      if (!super.equalsDeep(other_))
1436        return false;
1437      if (!(other_ instanceof SetupActionComponent))
1438        return false;
1439      SetupActionComponent o = (SetupActionComponent) other_;
1440      return compareDeep(operation, o.operation, true) && compareDeep(assert_, o.assert_, true);
1441    }
1442
1443    @Override
1444    public boolean equalsShallow(Base other_) {
1445      if (!super.equalsShallow(other_))
1446        return false;
1447      if (!(other_ instanceof SetupActionComponent))
1448        return false;
1449      SetupActionComponent o = (SetupActionComponent) other_;
1450      return true;
1451    }
1452
1453    public boolean isEmpty() {
1454      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation, assert_);
1455    }
1456
1457    public String fhirType() {
1458      return "TestReport.setup.action";
1459
1460    }
1461
1462  }
1463
1464  @Block()
1465  public static class SetupActionOperationComponent extends BackboneElement implements IBaseBackboneElement {
1466    /**
1467     * The result of this operation.
1468     */
1469    @Child(name = "result", type = { CodeType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
1470    @Description(shortDefinition = "pass | skip | fail | warning | error", formalDefinition = "The result of this operation.")
1471    @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/report-action-result-codes")
1472    protected Enumeration<TestReportActionResult> result;
1473
1474    /**
1475     * An explanatory message associated with the result.
1476     */
1477    @Child(name = "message", type = {
1478        MarkdownType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
1479    @Description(shortDefinition = "A message associated with the result", formalDefinition = "An explanatory message associated with the result.")
1480    protected MarkdownType message;
1481
1482    /**
1483     * A link to further details on the result.
1484     */
1485    @Child(name = "detail", type = { UriType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
1486    @Description(shortDefinition = "A link to further details on the result", formalDefinition = "A link to further details on the result.")
1487    protected UriType detail;
1488
1489    private static final long serialVersionUID = 269088798L;
1490
1491    /**
1492     * Constructor
1493     */
1494    public SetupActionOperationComponent() {
1495      super();
1496    }
1497
1498    /**
1499     * Constructor
1500     */
1501    public SetupActionOperationComponent(Enumeration<TestReportActionResult> result) {
1502      super();
1503      this.result = result;
1504    }
1505
1506    /**
1507     * @return {@link #result} (The result of this operation.). This is the
1508     *         underlying object with id, value and extensions. The accessor
1509     *         "getResult" gives direct access to the value
1510     */
1511    public Enumeration<TestReportActionResult> getResultElement() {
1512      if (this.result == null)
1513        if (Configuration.errorOnAutoCreate())
1514          throw new Error("Attempt to auto-create SetupActionOperationComponent.result");
1515        else if (Configuration.doAutoCreate())
1516          this.result = new Enumeration<TestReportActionResult>(new TestReportActionResultEnumFactory()); // bb
1517      return this.result;
1518    }
1519
1520    public boolean hasResultElement() {
1521      return this.result != null && !this.result.isEmpty();
1522    }
1523
1524    public boolean hasResult() {
1525      return this.result != null && !this.result.isEmpty();
1526    }
1527
1528    /**
1529     * @param value {@link #result} (The result of this operation.). This is the
1530     *              underlying object with id, value and extensions. The accessor
1531     *              "getResult" gives direct access to the value
1532     */
1533    public SetupActionOperationComponent setResultElement(Enumeration<TestReportActionResult> value) {
1534      this.result = value;
1535      return this;
1536    }
1537
1538    /**
1539     * @return The result of this operation.
1540     */
1541    public TestReportActionResult getResult() {
1542      return this.result == null ? null : this.result.getValue();
1543    }
1544
1545    /**
1546     * @param value The result of this operation.
1547     */
1548    public SetupActionOperationComponent setResult(TestReportActionResult value) {
1549      if (this.result == null)
1550        this.result = new Enumeration<TestReportActionResult>(new TestReportActionResultEnumFactory());
1551      this.result.setValue(value);
1552      return this;
1553    }
1554
1555    /**
1556     * @return {@link #message} (An explanatory message associated with the
1557     *         result.). This is the underlying object with id, value and
1558     *         extensions. The accessor "getMessage" gives direct access to the
1559     *         value
1560     */
1561    public MarkdownType getMessageElement() {
1562      if (this.message == null)
1563        if (Configuration.errorOnAutoCreate())
1564          throw new Error("Attempt to auto-create SetupActionOperationComponent.message");
1565        else if (Configuration.doAutoCreate())
1566          this.message = new MarkdownType(); // bb
1567      return this.message;
1568    }
1569
1570    public boolean hasMessageElement() {
1571      return this.message != null && !this.message.isEmpty();
1572    }
1573
1574    public boolean hasMessage() {
1575      return this.message != null && !this.message.isEmpty();
1576    }
1577
1578    /**
1579     * @param value {@link #message} (An explanatory message associated with the
1580     *              result.). This is the underlying object with id, value and
1581     *              extensions. The accessor "getMessage" gives direct access to the
1582     *              value
1583     */
1584    public SetupActionOperationComponent setMessageElement(MarkdownType value) {
1585      this.message = value;
1586      return this;
1587    }
1588
1589    /**
1590     * @return An explanatory message associated with the result.
1591     */
1592    public String getMessage() {
1593      return this.message == null ? null : this.message.getValue();
1594    }
1595
1596    /**
1597     * @param value An explanatory message associated with the result.
1598     */
1599    public SetupActionOperationComponent setMessage(String value) {
1600      if (value == null)
1601        this.message = null;
1602      else {
1603        if (this.message == null)
1604          this.message = new MarkdownType();
1605        this.message.setValue(value);
1606      }
1607      return this;
1608    }
1609
1610    /**
1611     * @return {@link #detail} (A link to further details on the result.). This is
1612     *         the underlying object with id, value and extensions. The accessor
1613     *         "getDetail" gives direct access to the value
1614     */
1615    public UriType getDetailElement() {
1616      if (this.detail == null)
1617        if (Configuration.errorOnAutoCreate())
1618          throw new Error("Attempt to auto-create SetupActionOperationComponent.detail");
1619        else if (Configuration.doAutoCreate())
1620          this.detail = new UriType(); // bb
1621      return this.detail;
1622    }
1623
1624    public boolean hasDetailElement() {
1625      return this.detail != null && !this.detail.isEmpty();
1626    }
1627
1628    public boolean hasDetail() {
1629      return this.detail != null && !this.detail.isEmpty();
1630    }
1631
1632    /**
1633     * @param value {@link #detail} (A link to further details on the result.). This
1634     *              is the underlying object with id, value and extensions. The
1635     *              accessor "getDetail" gives direct access to the value
1636     */
1637    public SetupActionOperationComponent setDetailElement(UriType value) {
1638      this.detail = value;
1639      return this;
1640    }
1641
1642    /**
1643     * @return A link to further details on the result.
1644     */
1645    public String getDetail() {
1646      return this.detail == null ? null : this.detail.getValue();
1647    }
1648
1649    /**
1650     * @param value A link to further details on the result.
1651     */
1652    public SetupActionOperationComponent setDetail(String value) {
1653      if (Utilities.noString(value))
1654        this.detail = null;
1655      else {
1656        if (this.detail == null)
1657          this.detail = new UriType();
1658        this.detail.setValue(value);
1659      }
1660      return this;
1661    }
1662
1663    protected void listChildren(List<Property> children) {
1664      super.listChildren(children);
1665      children.add(new Property("result", "code", "The result of this operation.", 0, 1, result));
1666      children.add(
1667          new Property("message", "markdown", "An explanatory message associated with the result.", 0, 1, message));
1668      children.add(new Property("detail", "uri", "A link to further details on the result.", 0, 1, detail));
1669    }
1670
1671    @Override
1672    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1673      switch (_hash) {
1674      case -934426595:
1675        /* result */ return new Property("result", "code", "The result of this operation.", 0, 1, result);
1676      case 954925063:
1677        /* message */ return new Property("message", "markdown", "An explanatory message associated with the result.",
1678            0, 1, message);
1679      case -1335224239:
1680        /* detail */ return new Property("detail", "uri", "A link to further details on the result.", 0, 1, detail);
1681      default:
1682        return super.getNamedProperty(_hash, _name, _checkValid);
1683      }
1684
1685    }
1686
1687    @Override
1688    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1689      switch (hash) {
1690      case -934426595:
1691        /* result */ return this.result == null ? new Base[0] : new Base[] { this.result }; // Enumeration<TestReportActionResult>
1692      case 954925063:
1693        /* message */ return this.message == null ? new Base[0] : new Base[] { this.message }; // MarkdownType
1694      case -1335224239:
1695        /* detail */ return this.detail == null ? new Base[0] : new Base[] { this.detail }; // UriType
1696      default:
1697        return super.getProperty(hash, name, checkValid);
1698      }
1699
1700    }
1701
1702    @Override
1703    public Base setProperty(int hash, String name, Base value) throws FHIRException {
1704      switch (hash) {
1705      case -934426595: // result
1706        value = new TestReportActionResultEnumFactory().fromType(castToCode(value));
1707        this.result = (Enumeration) value; // Enumeration<TestReportActionResult>
1708        return value;
1709      case 954925063: // message
1710        this.message = castToMarkdown(value); // MarkdownType
1711        return value;
1712      case -1335224239: // detail
1713        this.detail = castToUri(value); // UriType
1714        return value;
1715      default:
1716        return super.setProperty(hash, name, value);
1717      }
1718
1719    }
1720
1721    @Override
1722    public Base setProperty(String name, Base value) throws FHIRException {
1723      if (name.equals("result")) {
1724        value = new TestReportActionResultEnumFactory().fromType(castToCode(value));
1725        this.result = (Enumeration) value; // Enumeration<TestReportActionResult>
1726      } else if (name.equals("message")) {
1727        this.message = castToMarkdown(value); // MarkdownType
1728      } else if (name.equals("detail")) {
1729        this.detail = castToUri(value); // UriType
1730      } else
1731        return super.setProperty(name, value);
1732      return value;
1733    }
1734
1735    @Override
1736    public Base makeProperty(int hash, String name) throws FHIRException {
1737      switch (hash) {
1738      case -934426595:
1739        return getResultElement();
1740      case 954925063:
1741        return getMessageElement();
1742      case -1335224239:
1743        return getDetailElement();
1744      default:
1745        return super.makeProperty(hash, name);
1746      }
1747
1748    }
1749
1750    @Override
1751    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1752      switch (hash) {
1753      case -934426595:
1754        /* result */ return new String[] { "code" };
1755      case 954925063:
1756        /* message */ return new String[] { "markdown" };
1757      case -1335224239:
1758        /* detail */ return new String[] { "uri" };
1759      default:
1760        return super.getTypesForProperty(hash, name);
1761      }
1762
1763    }
1764
1765    @Override
1766    public Base addChild(String name) throws FHIRException {
1767      if (name.equals("result")) {
1768        throw new FHIRException("Cannot call addChild on a singleton property TestReport.result");
1769      } else if (name.equals("message")) {
1770        throw new FHIRException("Cannot call addChild on a singleton property TestReport.message");
1771      } else if (name.equals("detail")) {
1772        throw new FHIRException("Cannot call addChild on a singleton property TestReport.detail");
1773      } else
1774        return super.addChild(name);
1775    }
1776
1777    public SetupActionOperationComponent copy() {
1778      SetupActionOperationComponent dst = new SetupActionOperationComponent();
1779      copyValues(dst);
1780      return dst;
1781    }
1782
1783    public void copyValues(SetupActionOperationComponent dst) {
1784      super.copyValues(dst);
1785      dst.result = result == null ? null : result.copy();
1786      dst.message = message == null ? null : message.copy();
1787      dst.detail = detail == null ? null : detail.copy();
1788    }
1789
1790    @Override
1791    public boolean equalsDeep(Base other_) {
1792      if (!super.equalsDeep(other_))
1793        return false;
1794      if (!(other_ instanceof SetupActionOperationComponent))
1795        return false;
1796      SetupActionOperationComponent o = (SetupActionOperationComponent) other_;
1797      return compareDeep(result, o.result, true) && compareDeep(message, o.message, true)
1798          && compareDeep(detail, o.detail, true);
1799    }
1800
1801    @Override
1802    public boolean equalsShallow(Base other_) {
1803      if (!super.equalsShallow(other_))
1804        return false;
1805      if (!(other_ instanceof SetupActionOperationComponent))
1806        return false;
1807      SetupActionOperationComponent o = (SetupActionOperationComponent) other_;
1808      return compareValues(result, o.result, true) && compareValues(message, o.message, true)
1809          && compareValues(detail, o.detail, true);
1810    }
1811
1812    public boolean isEmpty() {
1813      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(result, message, detail);
1814    }
1815
1816    public String fhirType() {
1817      return "TestReport.setup.action.operation";
1818
1819    }
1820
1821  }
1822
1823  @Block()
1824  public static class SetupActionAssertComponent extends BackboneElement implements IBaseBackboneElement {
1825    /**
1826     * The result of this assertion.
1827     */
1828    @Child(name = "result", type = { CodeType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
1829    @Description(shortDefinition = "pass | skip | fail | warning | error", formalDefinition = "The result of this assertion.")
1830    @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/report-action-result-codes")
1831    protected Enumeration<TestReportActionResult> result;
1832
1833    /**
1834     * An explanatory message associated with the result.
1835     */
1836    @Child(name = "message", type = {
1837        MarkdownType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
1838    @Description(shortDefinition = "A message associated with the result", formalDefinition = "An explanatory message associated with the result.")
1839    protected MarkdownType message;
1840
1841    /**
1842     * A link to further details on the result.
1843     */
1844    @Child(name = "detail", type = { StringType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
1845    @Description(shortDefinition = "A link to further details on the result", formalDefinition = "A link to further details on the result.")
1846    protected StringType detail;
1847
1848    private static final long serialVersionUID = 467968193L;
1849
1850    /**
1851     * Constructor
1852     */
1853    public SetupActionAssertComponent() {
1854      super();
1855    }
1856
1857    /**
1858     * Constructor
1859     */
1860    public SetupActionAssertComponent(Enumeration<TestReportActionResult> result) {
1861      super();
1862      this.result = result;
1863    }
1864
1865    /**
1866     * @return {@link #result} (The result of this assertion.). This is the
1867     *         underlying object with id, value and extensions. The accessor
1868     *         "getResult" gives direct access to the value
1869     */
1870    public Enumeration<TestReportActionResult> getResultElement() {
1871      if (this.result == null)
1872        if (Configuration.errorOnAutoCreate())
1873          throw new Error("Attempt to auto-create SetupActionAssertComponent.result");
1874        else if (Configuration.doAutoCreate())
1875          this.result = new Enumeration<TestReportActionResult>(new TestReportActionResultEnumFactory()); // bb
1876      return this.result;
1877    }
1878
1879    public boolean hasResultElement() {
1880      return this.result != null && !this.result.isEmpty();
1881    }
1882
1883    public boolean hasResult() {
1884      return this.result != null && !this.result.isEmpty();
1885    }
1886
1887    /**
1888     * @param value {@link #result} (The result of this assertion.). This is the
1889     *              underlying object with id, value and extensions. The accessor
1890     *              "getResult" gives direct access to the value
1891     */
1892    public SetupActionAssertComponent setResultElement(Enumeration<TestReportActionResult> value) {
1893      this.result = value;
1894      return this;
1895    }
1896
1897    /**
1898     * @return The result of this assertion.
1899     */
1900    public TestReportActionResult getResult() {
1901      return this.result == null ? null : this.result.getValue();
1902    }
1903
1904    /**
1905     * @param value The result of this assertion.
1906     */
1907    public SetupActionAssertComponent setResult(TestReportActionResult value) {
1908      if (this.result == null)
1909        this.result = new Enumeration<TestReportActionResult>(new TestReportActionResultEnumFactory());
1910      this.result.setValue(value);
1911      return this;
1912    }
1913
1914    /**
1915     * @return {@link #message} (An explanatory message associated with the
1916     *         result.). This is the underlying object with id, value and
1917     *         extensions. The accessor "getMessage" gives direct access to the
1918     *         value
1919     */
1920    public MarkdownType getMessageElement() {
1921      if (this.message == null)
1922        if (Configuration.errorOnAutoCreate())
1923          throw new Error("Attempt to auto-create SetupActionAssertComponent.message");
1924        else if (Configuration.doAutoCreate())
1925          this.message = new MarkdownType(); // bb
1926      return this.message;
1927    }
1928
1929    public boolean hasMessageElement() {
1930      return this.message != null && !this.message.isEmpty();
1931    }
1932
1933    public boolean hasMessage() {
1934      return this.message != null && !this.message.isEmpty();
1935    }
1936
1937    /**
1938     * @param value {@link #message} (An explanatory message associated with the
1939     *              result.). This is the underlying object with id, value and
1940     *              extensions. The accessor "getMessage" gives direct access to the
1941     *              value
1942     */
1943    public SetupActionAssertComponent setMessageElement(MarkdownType value) {
1944      this.message = value;
1945      return this;
1946    }
1947
1948    /**
1949     * @return An explanatory message associated with the result.
1950     */
1951    public String getMessage() {
1952      return this.message == null ? null : this.message.getValue();
1953    }
1954
1955    /**
1956     * @param value An explanatory message associated with the result.
1957     */
1958    public SetupActionAssertComponent setMessage(String value) {
1959      if (value == null)
1960        this.message = null;
1961      else {
1962        if (this.message == null)
1963          this.message = new MarkdownType();
1964        this.message.setValue(value);
1965      }
1966      return this;
1967    }
1968
1969    /**
1970     * @return {@link #detail} (A link to further details on the result.). This is
1971     *         the underlying object with id, value and extensions. The accessor
1972     *         "getDetail" gives direct access to the value
1973     */
1974    public StringType getDetailElement() {
1975      if (this.detail == null)
1976        if (Configuration.errorOnAutoCreate())
1977          throw new Error("Attempt to auto-create SetupActionAssertComponent.detail");
1978        else if (Configuration.doAutoCreate())
1979          this.detail = new StringType(); // bb
1980      return this.detail;
1981    }
1982
1983    public boolean hasDetailElement() {
1984      return this.detail != null && !this.detail.isEmpty();
1985    }
1986
1987    public boolean hasDetail() {
1988      return this.detail != null && !this.detail.isEmpty();
1989    }
1990
1991    /**
1992     * @param value {@link #detail} (A link to further details on the result.). This
1993     *              is the underlying object with id, value and extensions. The
1994     *              accessor "getDetail" gives direct access to the value
1995     */
1996    public SetupActionAssertComponent setDetailElement(StringType value) {
1997      this.detail = value;
1998      return this;
1999    }
2000
2001    /**
2002     * @return A link to further details on the result.
2003     */
2004    public String getDetail() {
2005      return this.detail == null ? null : this.detail.getValue();
2006    }
2007
2008    /**
2009     * @param value A link to further details on the result.
2010     */
2011    public SetupActionAssertComponent setDetail(String value) {
2012      if (Utilities.noString(value))
2013        this.detail = null;
2014      else {
2015        if (this.detail == null)
2016          this.detail = new StringType();
2017        this.detail.setValue(value);
2018      }
2019      return this;
2020    }
2021
2022    protected void listChildren(List<Property> children) {
2023      super.listChildren(children);
2024      children.add(new Property("result", "code", "The result of this assertion.", 0, 1, result));
2025      children.add(
2026          new Property("message", "markdown", "An explanatory message associated with the result.", 0, 1, message));
2027      children.add(new Property("detail", "string", "A link to further details on the result.", 0, 1, detail));
2028    }
2029
2030    @Override
2031    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2032      switch (_hash) {
2033      case -934426595:
2034        /* result */ return new Property("result", "code", "The result of this assertion.", 0, 1, result);
2035      case 954925063:
2036        /* message */ return new Property("message", "markdown", "An explanatory message associated with the result.",
2037            0, 1, message);
2038      case -1335224239:
2039        /* detail */ return new Property("detail", "string", "A link to further details on the result.", 0, 1, detail);
2040      default:
2041        return super.getNamedProperty(_hash, _name, _checkValid);
2042      }
2043
2044    }
2045
2046    @Override
2047    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2048      switch (hash) {
2049      case -934426595:
2050        /* result */ return this.result == null ? new Base[0] : new Base[] { this.result }; // Enumeration<TestReportActionResult>
2051      case 954925063:
2052        /* message */ return this.message == null ? new Base[0] : new Base[] { this.message }; // MarkdownType
2053      case -1335224239:
2054        /* detail */ return this.detail == null ? new Base[0] : new Base[] { this.detail }; // StringType
2055      default:
2056        return super.getProperty(hash, name, checkValid);
2057      }
2058
2059    }
2060
2061    @Override
2062    public Base setProperty(int hash, String name, Base value) throws FHIRException {
2063      switch (hash) {
2064      case -934426595: // result
2065        value = new TestReportActionResultEnumFactory().fromType(castToCode(value));
2066        this.result = (Enumeration) value; // Enumeration<TestReportActionResult>
2067        return value;
2068      case 954925063: // message
2069        this.message = castToMarkdown(value); // MarkdownType
2070        return value;
2071      case -1335224239: // detail
2072        this.detail = castToString(value); // StringType
2073        return value;
2074      default:
2075        return super.setProperty(hash, name, value);
2076      }
2077
2078    }
2079
2080    @Override
2081    public Base setProperty(String name, Base value) throws FHIRException {
2082      if (name.equals("result")) {
2083        value = new TestReportActionResultEnumFactory().fromType(castToCode(value));
2084        this.result = (Enumeration) value; // Enumeration<TestReportActionResult>
2085      } else if (name.equals("message")) {
2086        this.message = castToMarkdown(value); // MarkdownType
2087      } else if (name.equals("detail")) {
2088        this.detail = castToString(value); // StringType
2089      } else
2090        return super.setProperty(name, value);
2091      return value;
2092    }
2093
2094    @Override
2095    public Base makeProperty(int hash, String name) throws FHIRException {
2096      switch (hash) {
2097      case -934426595:
2098        return getResultElement();
2099      case 954925063:
2100        return getMessageElement();
2101      case -1335224239:
2102        return getDetailElement();
2103      default:
2104        return super.makeProperty(hash, name);
2105      }
2106
2107    }
2108
2109    @Override
2110    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2111      switch (hash) {
2112      case -934426595:
2113        /* result */ return new String[] { "code" };
2114      case 954925063:
2115        /* message */ return new String[] { "markdown" };
2116      case -1335224239:
2117        /* detail */ return new String[] { "string" };
2118      default:
2119        return super.getTypesForProperty(hash, name);
2120      }
2121
2122    }
2123
2124    @Override
2125    public Base addChild(String name) throws FHIRException {
2126      if (name.equals("result")) {
2127        throw new FHIRException("Cannot call addChild on a singleton property TestReport.result");
2128      } else if (name.equals("message")) {
2129        throw new FHIRException("Cannot call addChild on a singleton property TestReport.message");
2130      } else if (name.equals("detail")) {
2131        throw new FHIRException("Cannot call addChild on a singleton property TestReport.detail");
2132      } else
2133        return super.addChild(name);
2134    }
2135
2136    public SetupActionAssertComponent copy() {
2137      SetupActionAssertComponent dst = new SetupActionAssertComponent();
2138      copyValues(dst);
2139      return dst;
2140    }
2141
2142    public void copyValues(SetupActionAssertComponent dst) {
2143      super.copyValues(dst);
2144      dst.result = result == null ? null : result.copy();
2145      dst.message = message == null ? null : message.copy();
2146      dst.detail = detail == null ? null : detail.copy();
2147    }
2148
2149    @Override
2150    public boolean equalsDeep(Base other_) {
2151      if (!super.equalsDeep(other_))
2152        return false;
2153      if (!(other_ instanceof SetupActionAssertComponent))
2154        return false;
2155      SetupActionAssertComponent o = (SetupActionAssertComponent) other_;
2156      return compareDeep(result, o.result, true) && compareDeep(message, o.message, true)
2157          && compareDeep(detail, o.detail, true);
2158    }
2159
2160    @Override
2161    public boolean equalsShallow(Base other_) {
2162      if (!super.equalsShallow(other_))
2163        return false;
2164      if (!(other_ instanceof SetupActionAssertComponent))
2165        return false;
2166      SetupActionAssertComponent o = (SetupActionAssertComponent) other_;
2167      return compareValues(result, o.result, true) && compareValues(message, o.message, true)
2168          && compareValues(detail, o.detail, true);
2169    }
2170
2171    public boolean isEmpty() {
2172      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(result, message, detail);
2173    }
2174
2175    public String fhirType() {
2176      return "TestReport.setup.action.assert";
2177
2178    }
2179
2180  }
2181
2182  @Block()
2183  public static class TestReportTestComponent extends BackboneElement implements IBaseBackboneElement {
2184    /**
2185     * The name of this test used for tracking/logging purposes by test engines.
2186     */
2187    @Child(name = "name", type = { StringType.class }, order = 1, min = 0, max = 1, modifier = false, summary = false)
2188    @Description(shortDefinition = "Tracking/logging name of this test", formalDefinition = "The name of this test used for tracking/logging purposes by test engines.")
2189    protected StringType name;
2190
2191    /**
2192     * A short description of the test used by test engines for tracking and
2193     * reporting purposes.
2194     */
2195    @Child(name = "description", type = {
2196        StringType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
2197    @Description(shortDefinition = "Tracking/reporting short description of the test", formalDefinition = "A short description of the test used by test engines for tracking and reporting purposes.")
2198    protected StringType description;
2199
2200    /**
2201     * Action would contain either an operation or an assertion.
2202     */
2203    @Child(name = "action", type = {}, order = 3, min = 1, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
2204    @Description(shortDefinition = "A test operation or assert that was performed", formalDefinition = "Action would contain either an operation or an assertion.")
2205    protected List<TestActionComponent> action;
2206
2207    private static final long serialVersionUID = -865006110L;
2208
2209    /**
2210     * Constructor
2211     */
2212    public TestReportTestComponent() {
2213      super();
2214    }
2215
2216    /**
2217     * @return {@link #name} (The name of this test used for tracking/logging
2218     *         purposes by test engines.). This is the underlying object with id,
2219     *         value and extensions. The accessor "getName" gives direct access to
2220     *         the value
2221     */
2222    public StringType getNameElement() {
2223      if (this.name == null)
2224        if (Configuration.errorOnAutoCreate())
2225          throw new Error("Attempt to auto-create TestReportTestComponent.name");
2226        else if (Configuration.doAutoCreate())
2227          this.name = new StringType(); // bb
2228      return this.name;
2229    }
2230
2231    public boolean hasNameElement() {
2232      return this.name != null && !this.name.isEmpty();
2233    }
2234
2235    public boolean hasName() {
2236      return this.name != null && !this.name.isEmpty();
2237    }
2238
2239    /**
2240     * @param value {@link #name} (The name of this test used for tracking/logging
2241     *              purposes by test engines.). This is the underlying object with
2242     *              id, value and extensions. The accessor "getName" gives direct
2243     *              access to the value
2244     */
2245    public TestReportTestComponent setNameElement(StringType value) {
2246      this.name = value;
2247      return this;
2248    }
2249
2250    /**
2251     * @return The name of this test used for tracking/logging purposes by test
2252     *         engines.
2253     */
2254    public String getName() {
2255      return this.name == null ? null : this.name.getValue();
2256    }
2257
2258    /**
2259     * @param value The name of this test used for tracking/logging purposes by test
2260     *              engines.
2261     */
2262    public TestReportTestComponent setName(String value) {
2263      if (Utilities.noString(value))
2264        this.name = null;
2265      else {
2266        if (this.name == null)
2267          this.name = new StringType();
2268        this.name.setValue(value);
2269      }
2270      return this;
2271    }
2272
2273    /**
2274     * @return {@link #description} (A short description of the test used by test
2275     *         engines for tracking and reporting purposes.). This is the underlying
2276     *         object with id, value and extensions. The accessor "getDescription"
2277     *         gives direct access to the value
2278     */
2279    public StringType getDescriptionElement() {
2280      if (this.description == null)
2281        if (Configuration.errorOnAutoCreate())
2282          throw new Error("Attempt to auto-create TestReportTestComponent.description");
2283        else if (Configuration.doAutoCreate())
2284          this.description = new StringType(); // bb
2285      return this.description;
2286    }
2287
2288    public boolean hasDescriptionElement() {
2289      return this.description != null && !this.description.isEmpty();
2290    }
2291
2292    public boolean hasDescription() {
2293      return this.description != null && !this.description.isEmpty();
2294    }
2295
2296    /**
2297     * @param value {@link #description} (A short description of the test used by
2298     *              test engines for tracking and reporting purposes.). This is the
2299     *              underlying object with id, value and extensions. The accessor
2300     *              "getDescription" gives direct access to the value
2301     */
2302    public TestReportTestComponent setDescriptionElement(StringType value) {
2303      this.description = value;
2304      return this;
2305    }
2306
2307    /**
2308     * @return A short description of the test used by test engines for tracking and
2309     *         reporting purposes.
2310     */
2311    public String getDescription() {
2312      return this.description == null ? null : this.description.getValue();
2313    }
2314
2315    /**
2316     * @param value A short description of the test used by test engines for
2317     *              tracking and reporting purposes.
2318     */
2319    public TestReportTestComponent setDescription(String value) {
2320      if (Utilities.noString(value))
2321        this.description = null;
2322      else {
2323        if (this.description == null)
2324          this.description = new StringType();
2325        this.description.setValue(value);
2326      }
2327      return this;
2328    }
2329
2330    /**
2331     * @return {@link #action} (Action would contain either an operation or an
2332     *         assertion.)
2333     */
2334    public List<TestActionComponent> getAction() {
2335      if (this.action == null)
2336        this.action = new ArrayList<TestActionComponent>();
2337      return this.action;
2338    }
2339
2340    /**
2341     * @return Returns a reference to <code>this</code> for easy method chaining
2342     */
2343    public TestReportTestComponent setAction(List<TestActionComponent> theAction) {
2344      this.action = theAction;
2345      return this;
2346    }
2347
2348    public boolean hasAction() {
2349      if (this.action == null)
2350        return false;
2351      for (TestActionComponent item : this.action)
2352        if (!item.isEmpty())
2353          return true;
2354      return false;
2355    }
2356
2357    public TestActionComponent addAction() { // 3
2358      TestActionComponent t = new TestActionComponent();
2359      if (this.action == null)
2360        this.action = new ArrayList<TestActionComponent>();
2361      this.action.add(t);
2362      return t;
2363    }
2364
2365    public TestReportTestComponent addAction(TestActionComponent t) { // 3
2366      if (t == null)
2367        return this;
2368      if (this.action == null)
2369        this.action = new ArrayList<TestActionComponent>();
2370      this.action.add(t);
2371      return this;
2372    }
2373
2374    /**
2375     * @return The first repetition of repeating field {@link #action}, creating it
2376     *         if it does not already exist
2377     */
2378    public TestActionComponent getActionFirstRep() {
2379      if (getAction().isEmpty()) {
2380        addAction();
2381      }
2382      return getAction().get(0);
2383    }
2384
2385    protected void listChildren(List<Property> children) {
2386      super.listChildren(children);
2387      children.add(new Property("name", "string",
2388          "The name of this test used for tracking/logging purposes by test engines.", 0, 1, name));
2389      children.add(new Property("description", "string",
2390          "A short description of the test used by test engines for tracking and reporting purposes.", 0, 1,
2391          description));
2392      children.add(new Property("action", "", "Action would contain either an operation or an assertion.", 0,
2393          java.lang.Integer.MAX_VALUE, action));
2394    }
2395
2396    @Override
2397    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2398      switch (_hash) {
2399      case 3373707:
2400        /* name */ return new Property("name", "string",
2401            "The name of this test used for tracking/logging purposes by test engines.", 0, 1, name);
2402      case -1724546052:
2403        /* description */ return new Property("description", "string",
2404            "A short description of the test used by test engines for tracking and reporting purposes.", 0, 1,
2405            description);
2406      case -1422950858:
2407        /* action */ return new Property("action", "", "Action would contain either an operation or an assertion.", 0,
2408            java.lang.Integer.MAX_VALUE, action);
2409      default:
2410        return super.getNamedProperty(_hash, _name, _checkValid);
2411      }
2412
2413    }
2414
2415    @Override
2416    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2417      switch (hash) {
2418      case 3373707:
2419        /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
2420      case -1724546052:
2421        /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // StringType
2422      case -1422950858:
2423        /* action */ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // TestActionComponent
2424      default:
2425        return super.getProperty(hash, name, checkValid);
2426      }
2427
2428    }
2429
2430    @Override
2431    public Base setProperty(int hash, String name, Base value) throws FHIRException {
2432      switch (hash) {
2433      case 3373707: // name
2434        this.name = castToString(value); // StringType
2435        return value;
2436      case -1724546052: // description
2437        this.description = castToString(value); // StringType
2438        return value;
2439      case -1422950858: // action
2440        this.getAction().add((TestActionComponent) value); // TestActionComponent
2441        return value;
2442      default:
2443        return super.setProperty(hash, name, value);
2444      }
2445
2446    }
2447
2448    @Override
2449    public Base setProperty(String name, Base value) throws FHIRException {
2450      if (name.equals("name")) {
2451        this.name = castToString(value); // StringType
2452      } else if (name.equals("description")) {
2453        this.description = castToString(value); // StringType
2454      } else if (name.equals("action")) {
2455        this.getAction().add((TestActionComponent) value);
2456      } else
2457        return super.setProperty(name, value);
2458      return value;
2459    }
2460
2461    @Override
2462    public Base makeProperty(int hash, String name) throws FHIRException {
2463      switch (hash) {
2464      case 3373707:
2465        return getNameElement();
2466      case -1724546052:
2467        return getDescriptionElement();
2468      case -1422950858:
2469        return addAction();
2470      default:
2471        return super.makeProperty(hash, name);
2472      }
2473
2474    }
2475
2476    @Override
2477    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2478      switch (hash) {
2479      case 3373707:
2480        /* name */ return new String[] { "string" };
2481      case -1724546052:
2482        /* description */ return new String[] { "string" };
2483      case -1422950858:
2484        /* action */ return new String[] {};
2485      default:
2486        return super.getTypesForProperty(hash, name);
2487      }
2488
2489    }
2490
2491    @Override
2492    public Base addChild(String name) throws FHIRException {
2493      if (name.equals("name")) {
2494        throw new FHIRException("Cannot call addChild on a singleton property TestReport.name");
2495      } else if (name.equals("description")) {
2496        throw new FHIRException("Cannot call addChild on a singleton property TestReport.description");
2497      } else if (name.equals("action")) {
2498        return addAction();
2499      } else
2500        return super.addChild(name);
2501    }
2502
2503    public TestReportTestComponent copy() {
2504      TestReportTestComponent dst = new TestReportTestComponent();
2505      copyValues(dst);
2506      return dst;
2507    }
2508
2509    public void copyValues(TestReportTestComponent dst) {
2510      super.copyValues(dst);
2511      dst.name = name == null ? null : name.copy();
2512      dst.description = description == null ? null : description.copy();
2513      if (action != null) {
2514        dst.action = new ArrayList<TestActionComponent>();
2515        for (TestActionComponent i : action)
2516          dst.action.add(i.copy());
2517      }
2518      ;
2519    }
2520
2521    @Override
2522    public boolean equalsDeep(Base other_) {
2523      if (!super.equalsDeep(other_))
2524        return false;
2525      if (!(other_ instanceof TestReportTestComponent))
2526        return false;
2527      TestReportTestComponent o = (TestReportTestComponent) other_;
2528      return compareDeep(name, o.name, true) && compareDeep(description, o.description, true)
2529          && compareDeep(action, o.action, true);
2530    }
2531
2532    @Override
2533    public boolean equalsShallow(Base other_) {
2534      if (!super.equalsShallow(other_))
2535        return false;
2536      if (!(other_ instanceof TestReportTestComponent))
2537        return false;
2538      TestReportTestComponent o = (TestReportTestComponent) other_;
2539      return compareValues(name, o.name, true) && compareValues(description, o.description, true);
2540    }
2541
2542    public boolean isEmpty() {
2543      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, description, action);
2544    }
2545
2546    public String fhirType() {
2547      return "TestReport.test";
2548
2549    }
2550
2551  }
2552
2553  @Block()
2554  public static class TestActionComponent extends BackboneElement implements IBaseBackboneElement {
2555    /**
2556     * An operation would involve a REST request to a server.
2557     */
2558    @Child(name = "operation", type = {
2559        SetupActionOperationComponent.class }, order = 1, min = 0, max = 1, modifier = false, summary = false)
2560    @Description(shortDefinition = "The operation performed", formalDefinition = "An operation would involve a REST request to a server.")
2561    protected SetupActionOperationComponent operation;
2562
2563    /**
2564     * The results of the assertion performed on the previous operations.
2565     */
2566    @Child(name = "assert", type = {
2567        SetupActionAssertComponent.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
2568    @Description(shortDefinition = "The assertion performed", formalDefinition = "The results of the assertion performed on the previous operations.")
2569    protected SetupActionAssertComponent assert_;
2570
2571    private static final long serialVersionUID = -252088305L;
2572
2573    /**
2574     * Constructor
2575     */
2576    public TestActionComponent() {
2577      super();
2578    }
2579
2580    /**
2581     * @return {@link #operation} (An operation would involve a REST request to a
2582     *         server.)
2583     */
2584    public SetupActionOperationComponent getOperation() {
2585      if (this.operation == null)
2586        if (Configuration.errorOnAutoCreate())
2587          throw new Error("Attempt to auto-create TestActionComponent.operation");
2588        else if (Configuration.doAutoCreate())
2589          this.operation = new SetupActionOperationComponent(); // cc
2590      return this.operation;
2591    }
2592
2593    public boolean hasOperation() {
2594      return this.operation != null && !this.operation.isEmpty();
2595    }
2596
2597    /**
2598     * @param value {@link #operation} (An operation would involve a REST request to
2599     *              a server.)
2600     */
2601    public TestActionComponent setOperation(SetupActionOperationComponent value) {
2602      this.operation = value;
2603      return this;
2604    }
2605
2606    /**
2607     * @return {@link #assert_} (The results of the assertion performed on the
2608     *         previous operations.)
2609     */
2610    public SetupActionAssertComponent getAssert() {
2611      if (this.assert_ == null)
2612        if (Configuration.errorOnAutoCreate())
2613          throw new Error("Attempt to auto-create TestActionComponent.assert_");
2614        else if (Configuration.doAutoCreate())
2615          this.assert_ = new SetupActionAssertComponent(); // cc
2616      return this.assert_;
2617    }
2618
2619    public boolean hasAssert() {
2620      return this.assert_ != null && !this.assert_.isEmpty();
2621    }
2622
2623    /**
2624     * @param value {@link #assert_} (The results of the assertion performed on the
2625     *              previous operations.)
2626     */
2627    public TestActionComponent setAssert(SetupActionAssertComponent value) {
2628      this.assert_ = value;
2629      return this;
2630    }
2631
2632    protected void listChildren(List<Property> children) {
2633      super.listChildren(children);
2634      children.add(new Property("operation", "@TestReport.setup.action.operation",
2635          "An operation would involve a REST request to a server.", 0, 1, operation));
2636      children.add(new Property("assert", "@TestReport.setup.action.assert",
2637          "The results of the assertion performed on the previous operations.", 0, 1, assert_));
2638    }
2639
2640    @Override
2641    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2642      switch (_hash) {
2643      case 1662702951:
2644        /* operation */ return new Property("operation", "@TestReport.setup.action.operation",
2645            "An operation would involve a REST request to a server.", 0, 1, operation);
2646      case -1408208058:
2647        /* assert */ return new Property("assert", "@TestReport.setup.action.assert",
2648            "The results of the assertion performed on the previous operations.", 0, 1, assert_);
2649      default:
2650        return super.getNamedProperty(_hash, _name, _checkValid);
2651      }
2652
2653    }
2654
2655    @Override
2656    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2657      switch (hash) {
2658      case 1662702951:
2659        /* operation */ return this.operation == null ? new Base[0] : new Base[] { this.operation }; // SetupActionOperationComponent
2660      case -1408208058:
2661        /* assert */ return this.assert_ == null ? new Base[0] : new Base[] { this.assert_ }; // SetupActionAssertComponent
2662      default:
2663        return super.getProperty(hash, name, checkValid);
2664      }
2665
2666    }
2667
2668    @Override
2669    public Base setProperty(int hash, String name, Base value) throws FHIRException {
2670      switch (hash) {
2671      case 1662702951: // operation
2672        this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
2673        return value;
2674      case -1408208058: // assert
2675        this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
2676        return value;
2677      default:
2678        return super.setProperty(hash, name, value);
2679      }
2680
2681    }
2682
2683    @Override
2684    public Base setProperty(String name, Base value) throws FHIRException {
2685      if (name.equals("operation")) {
2686        this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
2687      } else if (name.equals("assert")) {
2688        this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
2689      } else
2690        return super.setProperty(name, value);
2691      return value;
2692    }
2693
2694    @Override
2695    public Base makeProperty(int hash, String name) throws FHIRException {
2696      switch (hash) {
2697      case 1662702951:
2698        return getOperation();
2699      case -1408208058:
2700        return getAssert();
2701      default:
2702        return super.makeProperty(hash, name);
2703      }
2704
2705    }
2706
2707    @Override
2708    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2709      switch (hash) {
2710      case 1662702951:
2711        /* operation */ return new String[] { "@TestReport.setup.action.operation" };
2712      case -1408208058:
2713        /* assert */ return new String[] { "@TestReport.setup.action.assert" };
2714      default:
2715        return super.getTypesForProperty(hash, name);
2716      }
2717
2718    }
2719
2720    @Override
2721    public Base addChild(String name) throws FHIRException {
2722      if (name.equals("operation")) {
2723        this.operation = new SetupActionOperationComponent();
2724        return this.operation;
2725      } else if (name.equals("assert")) {
2726        this.assert_ = new SetupActionAssertComponent();
2727        return this.assert_;
2728      } else
2729        return super.addChild(name);
2730    }
2731
2732    public TestActionComponent copy() {
2733      TestActionComponent dst = new TestActionComponent();
2734      copyValues(dst);
2735      return dst;
2736    }
2737
2738    public void copyValues(TestActionComponent dst) {
2739      super.copyValues(dst);
2740      dst.operation = operation == null ? null : operation.copy();
2741      dst.assert_ = assert_ == null ? null : assert_.copy();
2742    }
2743
2744    @Override
2745    public boolean equalsDeep(Base other_) {
2746      if (!super.equalsDeep(other_))
2747        return false;
2748      if (!(other_ instanceof TestActionComponent))
2749        return false;
2750      TestActionComponent o = (TestActionComponent) other_;
2751      return compareDeep(operation, o.operation, true) && compareDeep(assert_, o.assert_, true);
2752    }
2753
2754    @Override
2755    public boolean equalsShallow(Base other_) {
2756      if (!super.equalsShallow(other_))
2757        return false;
2758      if (!(other_ instanceof TestActionComponent))
2759        return false;
2760      TestActionComponent o = (TestActionComponent) other_;
2761      return true;
2762    }
2763
2764    public boolean isEmpty() {
2765      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation, assert_);
2766    }
2767
2768    public String fhirType() {
2769      return "TestReport.test.action";
2770
2771    }
2772
2773  }
2774
2775  @Block()
2776  public static class TestReportTeardownComponent extends BackboneElement implements IBaseBackboneElement {
2777    /**
2778     * The teardown action will only contain an operation.
2779     */
2780    @Child(name = "action", type = {}, order = 1, min = 1, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
2781    @Description(shortDefinition = "One or more teardown operations performed", formalDefinition = "The teardown action will only contain an operation.")
2782    protected List<TeardownActionComponent> action;
2783
2784    private static final long serialVersionUID = 1168638089L;
2785
2786    /**
2787     * Constructor
2788     */
2789    public TestReportTeardownComponent() {
2790      super();
2791    }
2792
2793    /**
2794     * @return {@link #action} (The teardown action will only contain an operation.)
2795     */
2796    public List<TeardownActionComponent> getAction() {
2797      if (this.action == null)
2798        this.action = new ArrayList<TeardownActionComponent>();
2799      return this.action;
2800    }
2801
2802    /**
2803     * @return Returns a reference to <code>this</code> for easy method chaining
2804     */
2805    public TestReportTeardownComponent setAction(List<TeardownActionComponent> theAction) {
2806      this.action = theAction;
2807      return this;
2808    }
2809
2810    public boolean hasAction() {
2811      if (this.action == null)
2812        return false;
2813      for (TeardownActionComponent item : this.action)
2814        if (!item.isEmpty())
2815          return true;
2816      return false;
2817    }
2818
2819    public TeardownActionComponent addAction() { // 3
2820      TeardownActionComponent t = new TeardownActionComponent();
2821      if (this.action == null)
2822        this.action = new ArrayList<TeardownActionComponent>();
2823      this.action.add(t);
2824      return t;
2825    }
2826
2827    public TestReportTeardownComponent addAction(TeardownActionComponent t) { // 3
2828      if (t == null)
2829        return this;
2830      if (this.action == null)
2831        this.action = new ArrayList<TeardownActionComponent>();
2832      this.action.add(t);
2833      return this;
2834    }
2835
2836    /**
2837     * @return The first repetition of repeating field {@link #action}, creating it
2838     *         if it does not already exist
2839     */
2840    public TeardownActionComponent getActionFirstRep() {
2841      if (getAction().isEmpty()) {
2842        addAction();
2843      }
2844      return getAction().get(0);
2845    }
2846
2847    protected void listChildren(List<Property> children) {
2848      super.listChildren(children);
2849      children.add(new Property("action", "", "The teardown action will only contain an operation.", 0,
2850          java.lang.Integer.MAX_VALUE, action));
2851    }
2852
2853    @Override
2854    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2855      switch (_hash) {
2856      case -1422950858:
2857        /* action */ return new Property("action", "", "The teardown action will only contain an operation.", 0,
2858            java.lang.Integer.MAX_VALUE, action);
2859      default:
2860        return super.getNamedProperty(_hash, _name, _checkValid);
2861      }
2862
2863    }
2864
2865    @Override
2866    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2867      switch (hash) {
2868      case -1422950858:
2869        /* action */ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // TeardownActionComponent
2870      default:
2871        return super.getProperty(hash, name, checkValid);
2872      }
2873
2874    }
2875
2876    @Override
2877    public Base setProperty(int hash, String name, Base value) throws FHIRException {
2878      switch (hash) {
2879      case -1422950858: // action
2880        this.getAction().add((TeardownActionComponent) value); // TeardownActionComponent
2881        return value;
2882      default:
2883        return super.setProperty(hash, name, value);
2884      }
2885
2886    }
2887
2888    @Override
2889    public Base setProperty(String name, Base value) throws FHIRException {
2890      if (name.equals("action")) {
2891        this.getAction().add((TeardownActionComponent) value);
2892      } else
2893        return super.setProperty(name, value);
2894      return value;
2895    }
2896
2897    @Override
2898    public Base makeProperty(int hash, String name) throws FHIRException {
2899      switch (hash) {
2900      case -1422950858:
2901        return addAction();
2902      default:
2903        return super.makeProperty(hash, name);
2904      }
2905
2906    }
2907
2908    @Override
2909    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2910      switch (hash) {
2911      case -1422950858:
2912        /* action */ return new String[] {};
2913      default:
2914        return super.getTypesForProperty(hash, name);
2915      }
2916
2917    }
2918
2919    @Override
2920    public Base addChild(String name) throws FHIRException {
2921      if (name.equals("action")) {
2922        return addAction();
2923      } else
2924        return super.addChild(name);
2925    }
2926
2927    public TestReportTeardownComponent copy() {
2928      TestReportTeardownComponent dst = new TestReportTeardownComponent();
2929      copyValues(dst);
2930      return dst;
2931    }
2932
2933    public void copyValues(TestReportTeardownComponent dst) {
2934      super.copyValues(dst);
2935      if (action != null) {
2936        dst.action = new ArrayList<TeardownActionComponent>();
2937        for (TeardownActionComponent i : action)
2938          dst.action.add(i.copy());
2939      }
2940      ;
2941    }
2942
2943    @Override
2944    public boolean equalsDeep(Base other_) {
2945      if (!super.equalsDeep(other_))
2946        return false;
2947      if (!(other_ instanceof TestReportTeardownComponent))
2948        return false;
2949      TestReportTeardownComponent o = (TestReportTeardownComponent) other_;
2950      return compareDeep(action, o.action, true);
2951    }
2952
2953    @Override
2954    public boolean equalsShallow(Base other_) {
2955      if (!super.equalsShallow(other_))
2956        return false;
2957      if (!(other_ instanceof TestReportTeardownComponent))
2958        return false;
2959      TestReportTeardownComponent o = (TestReportTeardownComponent) other_;
2960      return true;
2961    }
2962
2963    public boolean isEmpty() {
2964      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action);
2965    }
2966
2967    public String fhirType() {
2968      return "TestReport.teardown";
2969
2970    }
2971
2972  }
2973
2974  @Block()
2975  public static class TeardownActionComponent extends BackboneElement implements IBaseBackboneElement {
2976    /**
2977     * An operation would involve a REST request to a server.
2978     */
2979    @Child(name = "operation", type = {
2980        SetupActionOperationComponent.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
2981    @Description(shortDefinition = "The teardown operation performed", formalDefinition = "An operation would involve a REST request to a server.")
2982    protected SetupActionOperationComponent operation;
2983
2984    private static final long serialVersionUID = -1099598054L;
2985
2986    /**
2987     * Constructor
2988     */
2989    public TeardownActionComponent() {
2990      super();
2991    }
2992
2993    /**
2994     * Constructor
2995     */
2996    public TeardownActionComponent(SetupActionOperationComponent operation) {
2997      super();
2998      this.operation = operation;
2999    }
3000
3001    /**
3002     * @return {@link #operation} (An operation would involve a REST request to a
3003     *         server.)
3004     */
3005    public SetupActionOperationComponent getOperation() {
3006      if (this.operation == null)
3007        if (Configuration.errorOnAutoCreate())
3008          throw new Error("Attempt to auto-create TeardownActionComponent.operation");
3009        else if (Configuration.doAutoCreate())
3010          this.operation = new SetupActionOperationComponent(); // cc
3011      return this.operation;
3012    }
3013
3014    public boolean hasOperation() {
3015      return this.operation != null && !this.operation.isEmpty();
3016    }
3017
3018    /**
3019     * @param value {@link #operation} (An operation would involve a REST request to
3020     *              a server.)
3021     */
3022    public TeardownActionComponent setOperation(SetupActionOperationComponent value) {
3023      this.operation = value;
3024      return this;
3025    }
3026
3027    protected void listChildren(List<Property> children) {
3028      super.listChildren(children);
3029      children.add(new Property("operation", "@TestReport.setup.action.operation",
3030          "An operation would involve a REST request to a server.", 0, 1, operation));
3031    }
3032
3033    @Override
3034    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3035      switch (_hash) {
3036      case 1662702951:
3037        /* operation */ return new Property("operation", "@TestReport.setup.action.operation",
3038            "An operation would involve a REST request to a server.", 0, 1, operation);
3039      default:
3040        return super.getNamedProperty(_hash, _name, _checkValid);
3041      }
3042
3043    }
3044
3045    @Override
3046    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3047      switch (hash) {
3048      case 1662702951:
3049        /* operation */ return this.operation == null ? new Base[0] : new Base[] { this.operation }; // SetupActionOperationComponent
3050      default:
3051        return super.getProperty(hash, name, checkValid);
3052      }
3053
3054    }
3055
3056    @Override
3057    public Base setProperty(int hash, String name, Base value) throws FHIRException {
3058      switch (hash) {
3059      case 1662702951: // operation
3060        this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
3061        return value;
3062      default:
3063        return super.setProperty(hash, name, value);
3064      }
3065
3066    }
3067
3068    @Override
3069    public Base setProperty(String name, Base value) throws FHIRException {
3070      if (name.equals("operation")) {
3071        this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
3072      } else
3073        return super.setProperty(name, value);
3074      return value;
3075    }
3076
3077    @Override
3078    public Base makeProperty(int hash, String name) throws FHIRException {
3079      switch (hash) {
3080      case 1662702951:
3081        return getOperation();
3082      default:
3083        return super.makeProperty(hash, name);
3084      }
3085
3086    }
3087
3088    @Override
3089    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3090      switch (hash) {
3091      case 1662702951:
3092        /* operation */ return new String[] { "@TestReport.setup.action.operation" };
3093      default:
3094        return super.getTypesForProperty(hash, name);
3095      }
3096
3097    }
3098
3099    @Override
3100    public Base addChild(String name) throws FHIRException {
3101      if (name.equals("operation")) {
3102        this.operation = new SetupActionOperationComponent();
3103        return this.operation;
3104      } else
3105        return super.addChild(name);
3106    }
3107
3108    public TeardownActionComponent copy() {
3109      TeardownActionComponent dst = new TeardownActionComponent();
3110      copyValues(dst);
3111      return dst;
3112    }
3113
3114    public void copyValues(TeardownActionComponent dst) {
3115      super.copyValues(dst);
3116      dst.operation = operation == null ? null : operation.copy();
3117    }
3118
3119    @Override
3120    public boolean equalsDeep(Base other_) {
3121      if (!super.equalsDeep(other_))
3122        return false;
3123      if (!(other_ instanceof TeardownActionComponent))
3124        return false;
3125      TeardownActionComponent o = (TeardownActionComponent) other_;
3126      return compareDeep(operation, o.operation, true);
3127    }
3128
3129    @Override
3130    public boolean equalsShallow(Base other_) {
3131      if (!super.equalsShallow(other_))
3132        return false;
3133      if (!(other_ instanceof TeardownActionComponent))
3134        return false;
3135      TeardownActionComponent o = (TeardownActionComponent) other_;
3136      return true;
3137    }
3138
3139    public boolean isEmpty() {
3140      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation);
3141    }
3142
3143    public String fhirType() {
3144      return "TestReport.teardown.action";
3145
3146    }
3147
3148  }
3149
3150  /**
3151   * Identifier for the TestScript assigned for external purposes outside the
3152   * context of FHIR.
3153   */
3154  @Child(name = "identifier", type = {
3155      Identifier.class }, order = 0, min = 0, max = 1, modifier = false, summary = true)
3156  @Description(shortDefinition = "External identifier", formalDefinition = "Identifier for the TestScript assigned for external purposes outside the context of FHIR.")
3157  protected Identifier identifier;
3158
3159  /**
3160   * A free text natural language name identifying the executed TestScript.
3161   */
3162  @Child(name = "name", type = { StringType.class }, order = 1, min = 0, max = 1, modifier = false, summary = true)
3163  @Description(shortDefinition = "Informal name of the executed TestScript", formalDefinition = "A free text natural language name identifying the executed TestScript.")
3164  protected StringType name;
3165
3166  /**
3167   * The current state of this test report.
3168   */
3169  @Child(name = "status", type = { CodeType.class }, order = 2, min = 1, max = 1, modifier = true, summary = true)
3170  @Description(shortDefinition = "completed | in-progress | waiting | stopped | entered-in-error", formalDefinition = "The current state of this test report.")
3171  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/report-status-codes")
3172  protected Enumeration<TestReportStatus> status;
3173
3174  /**
3175   * Ideally this is an absolute URL that is used to identify the version-specific
3176   * TestScript that was executed, matching the `TestScript.url`.
3177   */
3178  @Child(name = "testScript", type = {
3179      TestScript.class }, order = 3, min = 1, max = 1, modifier = false, summary = true)
3180  @Description(shortDefinition = "Reference to the  version-specific TestScript that was executed to produce this TestReport", formalDefinition = "Ideally this is an absolute URL that is used to identify the version-specific TestScript that was executed, matching the `TestScript.url`.")
3181  protected Reference testScript;
3182
3183  /**
3184   * The actual object that is the target of the reference (Ideally this is an
3185   * absolute URL that is used to identify the version-specific TestScript that
3186   * was executed, matching the `TestScript.url`.)
3187   */
3188  protected TestScript testScriptTarget;
3189
3190  /**
3191   * The overall result from the execution of the TestScript.
3192   */
3193  @Child(name = "result", type = { CodeType.class }, order = 4, min = 1, max = 1, modifier = false, summary = true)
3194  @Description(shortDefinition = "pass | fail | pending", formalDefinition = "The overall result from the execution of the TestScript.")
3195  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/report-result-codes")
3196  protected Enumeration<TestReportResult> result;
3197
3198  /**
3199   * The final score (percentage of tests passed) resulting from the execution of
3200   * the TestScript.
3201   */
3202  @Child(name = "score", type = { DecimalType.class }, order = 5, min = 0, max = 1, modifier = false, summary = true)
3203  @Description(shortDefinition = "The final score (percentage of tests passed) resulting from the execution of the TestScript", formalDefinition = "The final score (percentage of tests passed) resulting from the execution of the TestScript.")
3204  protected DecimalType score;
3205
3206  /**
3207   * Name of the tester producing this report (Organization or individual).
3208   */
3209  @Child(name = "tester", type = { StringType.class }, order = 6, min = 0, max = 1, modifier = false, summary = true)
3210  @Description(shortDefinition = "Name of the tester producing this report (Organization or individual)", formalDefinition = "Name of the tester producing this report (Organization or individual).")
3211  protected StringType tester;
3212
3213  /**
3214   * When the TestScript was executed and this TestReport was generated.
3215   */
3216  @Child(name = "issued", type = { DateTimeType.class }, order = 7, min = 0, max = 1, modifier = false, summary = true)
3217  @Description(shortDefinition = "When the TestScript was executed and this TestReport was generated", formalDefinition = "When the TestScript was executed and this TestReport was generated.")
3218  protected DateTimeType issued;
3219
3220  /**
3221   * A participant in the test execution, either the execution engine, a client,
3222   * or a server.
3223   */
3224  @Child(name = "participant", type = {}, order = 8, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
3225  @Description(shortDefinition = "A participant in the test execution, either the execution engine, a client, or a server", formalDefinition = "A participant in the test execution, either the execution engine, a client, or a server.")
3226  protected List<TestReportParticipantComponent> participant;
3227
3228  /**
3229   * The results of the series of required setup operations before the tests were
3230   * executed.
3231   */
3232  @Child(name = "setup", type = {}, order = 9, min = 0, max = 1, modifier = false, summary = false)
3233  @Description(shortDefinition = "The results of the series of required setup operations before the tests were executed", formalDefinition = "The results of the series of required setup operations before the tests were executed.")
3234  protected TestReportSetupComponent setup;
3235
3236  /**
3237   * A test executed from the test script.
3238   */
3239  @Child(name = "test", type = {}, order = 10, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
3240  @Description(shortDefinition = "A test executed from the test script", formalDefinition = "A test executed from the test script.")
3241  protected List<TestReportTestComponent> test;
3242
3243  /**
3244   * The results of the series of operations required to clean up after all the
3245   * tests were executed (successfully or otherwise).
3246   */
3247  @Child(name = "teardown", type = {}, order = 11, min = 0, max = 1, modifier = false, summary = false)
3248  @Description(shortDefinition = "The results of running the series of required clean up steps", formalDefinition = "The results of the series of operations required to clean up after all the tests were executed (successfully or otherwise).")
3249  protected TestReportTeardownComponent teardown;
3250
3251  private static final long serialVersionUID = 79474516L;
3252
3253  /**
3254   * Constructor
3255   */
3256  public TestReport() {
3257    super();
3258  }
3259
3260  /**
3261   * Constructor
3262   */
3263  public TestReport(Enumeration<TestReportStatus> status, Reference testScript, Enumeration<TestReportResult> result) {
3264    super();
3265    this.status = status;
3266    this.testScript = testScript;
3267    this.result = result;
3268  }
3269
3270  /**
3271   * @return {@link #identifier} (Identifier for the TestScript assigned for
3272   *         external purposes outside the context of FHIR.)
3273   */
3274  public Identifier getIdentifier() {
3275    if (this.identifier == null)
3276      if (Configuration.errorOnAutoCreate())
3277        throw new Error("Attempt to auto-create TestReport.identifier");
3278      else if (Configuration.doAutoCreate())
3279        this.identifier = new Identifier(); // cc
3280    return this.identifier;
3281  }
3282
3283  public boolean hasIdentifier() {
3284    return this.identifier != null && !this.identifier.isEmpty();
3285  }
3286
3287  /**
3288   * @param value {@link #identifier} (Identifier for the TestScript assigned for
3289   *              external purposes outside the context of FHIR.)
3290   */
3291  public TestReport setIdentifier(Identifier value) {
3292    this.identifier = value;
3293    return this;
3294  }
3295
3296  /**
3297   * @return {@link #name} (A free text natural language name identifying the
3298   *         executed TestScript.). This is the underlying object with id, value
3299   *         and extensions. The accessor "getName" gives direct access to the
3300   *         value
3301   */
3302  public StringType getNameElement() {
3303    if (this.name == null)
3304      if (Configuration.errorOnAutoCreate())
3305        throw new Error("Attempt to auto-create TestReport.name");
3306      else if (Configuration.doAutoCreate())
3307        this.name = new StringType(); // bb
3308    return this.name;
3309  }
3310
3311  public boolean hasNameElement() {
3312    return this.name != null && !this.name.isEmpty();
3313  }
3314
3315  public boolean hasName() {
3316    return this.name != null && !this.name.isEmpty();
3317  }
3318
3319  /**
3320   * @param value {@link #name} (A free text natural language name identifying the
3321   *              executed TestScript.). This is the underlying object with id,
3322   *              value and extensions. The accessor "getName" gives direct access
3323   *              to the value
3324   */
3325  public TestReport setNameElement(StringType value) {
3326    this.name = value;
3327    return this;
3328  }
3329
3330  /**
3331   * @return A free text natural language name identifying the executed
3332   *         TestScript.
3333   */
3334  public String getName() {
3335    return this.name == null ? null : this.name.getValue();
3336  }
3337
3338  /**
3339   * @param value A free text natural language name identifying the executed
3340   *              TestScript.
3341   */
3342  public TestReport setName(String value) {
3343    if (Utilities.noString(value))
3344      this.name = null;
3345    else {
3346      if (this.name == null)
3347        this.name = new StringType();
3348      this.name.setValue(value);
3349    }
3350    return this;
3351  }
3352
3353  /**
3354   * @return {@link #status} (The current state of this test report.). This is the
3355   *         underlying object with id, value and extensions. The accessor
3356   *         "getStatus" gives direct access to the value
3357   */
3358  public Enumeration<TestReportStatus> getStatusElement() {
3359    if (this.status == null)
3360      if (Configuration.errorOnAutoCreate())
3361        throw new Error("Attempt to auto-create TestReport.status");
3362      else if (Configuration.doAutoCreate())
3363        this.status = new Enumeration<TestReportStatus>(new TestReportStatusEnumFactory()); // bb
3364    return this.status;
3365  }
3366
3367  public boolean hasStatusElement() {
3368    return this.status != null && !this.status.isEmpty();
3369  }
3370
3371  public boolean hasStatus() {
3372    return this.status != null && !this.status.isEmpty();
3373  }
3374
3375  /**
3376   * @param value {@link #status} (The current state of this test report.). This
3377   *              is the underlying object with id, value and extensions. The
3378   *              accessor "getStatus" gives direct access to the value
3379   */
3380  public TestReport setStatusElement(Enumeration<TestReportStatus> value) {
3381    this.status = value;
3382    return this;
3383  }
3384
3385  /**
3386   * @return The current state of this test report.
3387   */
3388  public TestReportStatus getStatus() {
3389    return this.status == null ? null : this.status.getValue();
3390  }
3391
3392  /**
3393   * @param value The current state of this test report.
3394   */
3395  public TestReport setStatus(TestReportStatus value) {
3396    if (this.status == null)
3397      this.status = new Enumeration<TestReportStatus>(new TestReportStatusEnumFactory());
3398    this.status.setValue(value);
3399    return this;
3400  }
3401
3402  /**
3403   * @return {@link #testScript} (Ideally this is an absolute URL that is used to
3404   *         identify the version-specific TestScript that was executed, matching
3405   *         the `TestScript.url`.)
3406   */
3407  public Reference getTestScript() {
3408    if (this.testScript == null)
3409      if (Configuration.errorOnAutoCreate())
3410        throw new Error("Attempt to auto-create TestReport.testScript");
3411      else if (Configuration.doAutoCreate())
3412        this.testScript = new Reference(); // cc
3413    return this.testScript;
3414  }
3415
3416  public boolean hasTestScript() {
3417    return this.testScript != null && !this.testScript.isEmpty();
3418  }
3419
3420  /**
3421   * @param value {@link #testScript} (Ideally this is an absolute URL that is
3422   *              used to identify the version-specific TestScript that was
3423   *              executed, matching the `TestScript.url`.)
3424   */
3425  public TestReport setTestScript(Reference value) {
3426    this.testScript = value;
3427    return this;
3428  }
3429
3430  /**
3431   * @return {@link #testScript} The actual object that is the target of the
3432   *         reference. The reference library doesn't populate this, but you can
3433   *         use it to hold the resource if you resolve it. (Ideally this is an
3434   *         absolute URL that is used to identify the version-specific TestScript
3435   *         that was executed, matching the `TestScript.url`.)
3436   */
3437  public TestScript getTestScriptTarget() {
3438    if (this.testScriptTarget == null)
3439      if (Configuration.errorOnAutoCreate())
3440        throw new Error("Attempt to auto-create TestReport.testScript");
3441      else if (Configuration.doAutoCreate())
3442        this.testScriptTarget = new TestScript(); // aa
3443    return this.testScriptTarget;
3444  }
3445
3446  /**
3447   * @param value {@link #testScript} The actual object that is the target of the
3448   *              reference. The reference library doesn't use these, but you can
3449   *              use it to hold the resource if you resolve it. (Ideally this is
3450   *              an absolute URL that is used to identify the version-specific
3451   *              TestScript that was executed, matching the `TestScript.url`.)
3452   */
3453  public TestReport setTestScriptTarget(TestScript value) {
3454    this.testScriptTarget = value;
3455    return this;
3456  }
3457
3458  /**
3459   * @return {@link #result} (The overall result from the execution of the
3460   *         TestScript.). This is the underlying object with id, value and
3461   *         extensions. The accessor "getResult" gives direct access to the value
3462   */
3463  public Enumeration<TestReportResult> getResultElement() {
3464    if (this.result == null)
3465      if (Configuration.errorOnAutoCreate())
3466        throw new Error("Attempt to auto-create TestReport.result");
3467      else if (Configuration.doAutoCreate())
3468        this.result = new Enumeration<TestReportResult>(new TestReportResultEnumFactory()); // bb
3469    return this.result;
3470  }
3471
3472  public boolean hasResultElement() {
3473    return this.result != null && !this.result.isEmpty();
3474  }
3475
3476  public boolean hasResult() {
3477    return this.result != null && !this.result.isEmpty();
3478  }
3479
3480  /**
3481   * @param value {@link #result} (The overall result from the execution of the
3482   *              TestScript.). This is the underlying object with id, value and
3483   *              extensions. The accessor "getResult" gives direct access to the
3484   *              value
3485   */
3486  public TestReport setResultElement(Enumeration<TestReportResult> value) {
3487    this.result = value;
3488    return this;
3489  }
3490
3491  /**
3492   * @return The overall result from the execution of the TestScript.
3493   */
3494  public TestReportResult getResult() {
3495    return this.result == null ? null : this.result.getValue();
3496  }
3497
3498  /**
3499   * @param value The overall result from the execution of the TestScript.
3500   */
3501  public TestReport setResult(TestReportResult value) {
3502    if (this.result == null)
3503      this.result = new Enumeration<TestReportResult>(new TestReportResultEnumFactory());
3504    this.result.setValue(value);
3505    return this;
3506  }
3507
3508  /**
3509   * @return {@link #score} (The final score (percentage of tests passed)
3510   *         resulting from the execution of the TestScript.). This is the
3511   *         underlying object with id, value and extensions. The accessor
3512   *         "getScore" gives direct access to the value
3513   */
3514  public DecimalType getScoreElement() {
3515    if (this.score == null)
3516      if (Configuration.errorOnAutoCreate())
3517        throw new Error("Attempt to auto-create TestReport.score");
3518      else if (Configuration.doAutoCreate())
3519        this.score = new DecimalType(); // bb
3520    return this.score;
3521  }
3522
3523  public boolean hasScoreElement() {
3524    return this.score != null && !this.score.isEmpty();
3525  }
3526
3527  public boolean hasScore() {
3528    return this.score != null && !this.score.isEmpty();
3529  }
3530
3531  /**
3532   * @param value {@link #score} (The final score (percentage of tests passed)
3533   *              resulting from the execution of the TestScript.). This is the
3534   *              underlying object with id, value and extensions. The accessor
3535   *              "getScore" gives direct access to the value
3536   */
3537  public TestReport setScoreElement(DecimalType value) {
3538    this.score = value;
3539    return this;
3540  }
3541
3542  /**
3543   * @return The final score (percentage of tests passed) resulting from the
3544   *         execution of the TestScript.
3545   */
3546  public BigDecimal getScore() {
3547    return this.score == null ? null : this.score.getValue();
3548  }
3549
3550  /**
3551   * @param value The final score (percentage of tests passed) resulting from the
3552   *              execution of the TestScript.
3553   */
3554  public TestReport setScore(BigDecimal value) {
3555    if (value == null)
3556      this.score = null;
3557    else {
3558      if (this.score == null)
3559        this.score = new DecimalType();
3560      this.score.setValue(value);
3561    }
3562    return this;
3563  }
3564
3565  /**
3566   * @param value The final score (percentage of tests passed) resulting from the
3567   *              execution of the TestScript.
3568   */
3569  public TestReport setScore(long value) {
3570    this.score = new DecimalType();
3571    this.score.setValue(value);
3572    return this;
3573  }
3574
3575  /**
3576   * @param value The final score (percentage of tests passed) resulting from the
3577   *              execution of the TestScript.
3578   */
3579  public TestReport setScore(double value) {
3580    this.score = new DecimalType();
3581    this.score.setValue(value);
3582    return this;
3583  }
3584
3585  /**
3586   * @return {@link #tester} (Name of the tester producing this report
3587   *         (Organization or individual).). This is the underlying object with
3588   *         id, value and extensions. The accessor "getTester" gives direct
3589   *         access to the value
3590   */
3591  public StringType getTesterElement() {
3592    if (this.tester == null)
3593      if (Configuration.errorOnAutoCreate())
3594        throw new Error("Attempt to auto-create TestReport.tester");
3595      else if (Configuration.doAutoCreate())
3596        this.tester = new StringType(); // bb
3597    return this.tester;
3598  }
3599
3600  public boolean hasTesterElement() {
3601    return this.tester != null && !this.tester.isEmpty();
3602  }
3603
3604  public boolean hasTester() {
3605    return this.tester != null && !this.tester.isEmpty();
3606  }
3607
3608  /**
3609   * @param value {@link #tester} (Name of the tester producing this report
3610   *              (Organization or individual).). This is the underlying object
3611   *              with id, value and extensions. The accessor "getTester" gives
3612   *              direct access to the value
3613   */
3614  public TestReport setTesterElement(StringType value) {
3615    this.tester = value;
3616    return this;
3617  }
3618
3619  /**
3620   * @return Name of the tester producing this report (Organization or
3621   *         individual).
3622   */
3623  public String getTester() {
3624    return this.tester == null ? null : this.tester.getValue();
3625  }
3626
3627  /**
3628   * @param value Name of the tester producing this report (Organization or
3629   *              individual).
3630   */
3631  public TestReport setTester(String value) {
3632    if (Utilities.noString(value))
3633      this.tester = null;
3634    else {
3635      if (this.tester == null)
3636        this.tester = new StringType();
3637      this.tester.setValue(value);
3638    }
3639    return this;
3640  }
3641
3642  /**
3643   * @return {@link #issued} (When the TestScript was executed and this TestReport
3644   *         was generated.). This is the underlying object with id, value and
3645   *         extensions. The accessor "getIssued" gives direct access to the value
3646   */
3647  public DateTimeType getIssuedElement() {
3648    if (this.issued == null)
3649      if (Configuration.errorOnAutoCreate())
3650        throw new Error("Attempt to auto-create TestReport.issued");
3651      else if (Configuration.doAutoCreate())
3652        this.issued = new DateTimeType(); // bb
3653    return this.issued;
3654  }
3655
3656  public boolean hasIssuedElement() {
3657    return this.issued != null && !this.issued.isEmpty();
3658  }
3659
3660  public boolean hasIssued() {
3661    return this.issued != null && !this.issued.isEmpty();
3662  }
3663
3664  /**
3665   * @param value {@link #issued} (When the TestScript was executed and this
3666   *              TestReport was generated.). This is the underlying object with
3667   *              id, value and extensions. The accessor "getIssued" gives direct
3668   *              access to the value
3669   */
3670  public TestReport setIssuedElement(DateTimeType value) {
3671    this.issued = value;
3672    return this;
3673  }
3674
3675  /**
3676   * @return When the TestScript was executed and this TestReport was generated.
3677   */
3678  public Date getIssued() {
3679    return this.issued == null ? null : this.issued.getValue();
3680  }
3681
3682  /**
3683   * @param value When the TestScript was executed and this TestReport was
3684   *              generated.
3685   */
3686  public TestReport setIssued(Date value) {
3687    if (value == null)
3688      this.issued = null;
3689    else {
3690      if (this.issued == null)
3691        this.issued = new DateTimeType();
3692      this.issued.setValue(value);
3693    }
3694    return this;
3695  }
3696
3697  /**
3698   * @return {@link #participant} (A participant in the test execution, either the
3699   *         execution engine, a client, or a server.)
3700   */
3701  public List<TestReportParticipantComponent> getParticipant() {
3702    if (this.participant == null)
3703      this.participant = new ArrayList<TestReportParticipantComponent>();
3704    return this.participant;
3705  }
3706
3707  /**
3708   * @return Returns a reference to <code>this</code> for easy method chaining
3709   */
3710  public TestReport setParticipant(List<TestReportParticipantComponent> theParticipant) {
3711    this.participant = theParticipant;
3712    return this;
3713  }
3714
3715  public boolean hasParticipant() {
3716    if (this.participant == null)
3717      return false;
3718    for (TestReportParticipantComponent item : this.participant)
3719      if (!item.isEmpty())
3720        return true;
3721    return false;
3722  }
3723
3724  public TestReportParticipantComponent addParticipant() { // 3
3725    TestReportParticipantComponent t = new TestReportParticipantComponent();
3726    if (this.participant == null)
3727      this.participant = new ArrayList<TestReportParticipantComponent>();
3728    this.participant.add(t);
3729    return t;
3730  }
3731
3732  public TestReport addParticipant(TestReportParticipantComponent t) { // 3
3733    if (t == null)
3734      return this;
3735    if (this.participant == null)
3736      this.participant = new ArrayList<TestReportParticipantComponent>();
3737    this.participant.add(t);
3738    return this;
3739  }
3740
3741  /**
3742   * @return The first repetition of repeating field {@link #participant},
3743   *         creating it if it does not already exist
3744   */
3745  public TestReportParticipantComponent getParticipantFirstRep() {
3746    if (getParticipant().isEmpty()) {
3747      addParticipant();
3748    }
3749    return getParticipant().get(0);
3750  }
3751
3752  /**
3753   * @return {@link #setup} (The results of the series of required setup
3754   *         operations before the tests were executed.)
3755   */
3756  public TestReportSetupComponent getSetup() {
3757    if (this.setup == null)
3758      if (Configuration.errorOnAutoCreate())
3759        throw new Error("Attempt to auto-create TestReport.setup");
3760      else if (Configuration.doAutoCreate())
3761        this.setup = new TestReportSetupComponent(); // cc
3762    return this.setup;
3763  }
3764
3765  public boolean hasSetup() {
3766    return this.setup != null && !this.setup.isEmpty();
3767  }
3768
3769  /**
3770   * @param value {@link #setup} (The results of the series of required setup
3771   *              operations before the tests were executed.)
3772   */
3773  public TestReport setSetup(TestReportSetupComponent value) {
3774    this.setup = value;
3775    return this;
3776  }
3777
3778  /**
3779   * @return {@link #test} (A test executed from the test script.)
3780   */
3781  public List<TestReportTestComponent> getTest() {
3782    if (this.test == null)
3783      this.test = new ArrayList<TestReportTestComponent>();
3784    return this.test;
3785  }
3786
3787  /**
3788   * @return Returns a reference to <code>this</code> for easy method chaining
3789   */
3790  public TestReport setTest(List<TestReportTestComponent> theTest) {
3791    this.test = theTest;
3792    return this;
3793  }
3794
3795  public boolean hasTest() {
3796    if (this.test == null)
3797      return false;
3798    for (TestReportTestComponent item : this.test)
3799      if (!item.isEmpty())
3800        return true;
3801    return false;
3802  }
3803
3804  public TestReportTestComponent addTest() { // 3
3805    TestReportTestComponent t = new TestReportTestComponent();
3806    if (this.test == null)
3807      this.test = new ArrayList<TestReportTestComponent>();
3808    this.test.add(t);
3809    return t;
3810  }
3811
3812  public TestReport addTest(TestReportTestComponent t) { // 3
3813    if (t == null)
3814      return this;
3815    if (this.test == null)
3816      this.test = new ArrayList<TestReportTestComponent>();
3817    this.test.add(t);
3818    return this;
3819  }
3820
3821  /**
3822   * @return The first repetition of repeating field {@link #test}, creating it if
3823   *         it does not already exist
3824   */
3825  public TestReportTestComponent getTestFirstRep() {
3826    if (getTest().isEmpty()) {
3827      addTest();
3828    }
3829    return getTest().get(0);
3830  }
3831
3832  /**
3833   * @return {@link #teardown} (The results of the series of operations required
3834   *         to clean up after all the tests were executed (successfully or
3835   *         otherwise).)
3836   */
3837  public TestReportTeardownComponent getTeardown() {
3838    if (this.teardown == null)
3839      if (Configuration.errorOnAutoCreate())
3840        throw new Error("Attempt to auto-create TestReport.teardown");
3841      else if (Configuration.doAutoCreate())
3842        this.teardown = new TestReportTeardownComponent(); // cc
3843    return this.teardown;
3844  }
3845
3846  public boolean hasTeardown() {
3847    return this.teardown != null && !this.teardown.isEmpty();
3848  }
3849
3850  /**
3851   * @param value {@link #teardown} (The results of the series of operations
3852   *              required to clean up after all the tests were executed
3853   *              (successfully or otherwise).)
3854   */
3855  public TestReport setTeardown(TestReportTeardownComponent value) {
3856    this.teardown = value;
3857    return this;
3858  }
3859
3860  protected void listChildren(List<Property> children) {
3861    super.listChildren(children);
3862    children.add(new Property("identifier", "Identifier",
3863        "Identifier for the TestScript assigned for external purposes outside the context of FHIR.", 0, 1, identifier));
3864    children.add(new Property("name", "string",
3865        "A free text natural language name identifying the executed TestScript.", 0, 1, name));
3866    children.add(new Property("status", "code", "The current state of this test report.", 0, 1, status));
3867    children.add(new Property("testScript", "Reference(TestScript)",
3868        "Ideally this is an absolute URL that is used to identify the version-specific TestScript that was executed, matching the `TestScript.url`.",
3869        0, 1, testScript));
3870    children
3871        .add(new Property("result", "code", "The overall result from the execution of the TestScript.", 0, 1, result));
3872    children.add(new Property("score", "decimal",
3873        "The final score (percentage of tests passed) resulting from the execution of the TestScript.", 0, 1, score));
3874    children.add(new Property("tester", "string",
3875        "Name of the tester producing this report (Organization or individual).", 0, 1, tester));
3876    children.add(new Property("issued", "dateTime",
3877        "When the TestScript was executed and this TestReport was generated.", 0, 1, issued));
3878    children.add(new Property("participant", "",
3879        "A participant in the test execution, either the execution engine, a client, or a server.", 0,
3880        java.lang.Integer.MAX_VALUE, participant));
3881    children.add(new Property("setup", "",
3882        "The results of the series of required setup operations before the tests were executed.", 0, 1, setup));
3883    children
3884        .add(new Property("test", "", "A test executed from the test script.", 0, java.lang.Integer.MAX_VALUE, test));
3885    children.add(new Property("teardown", "",
3886        "The results of the series of operations required to clean up after all the tests were executed (successfully or otherwise).",
3887        0, 1, teardown));
3888  }
3889
3890  @Override
3891  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3892    switch (_hash) {
3893    case -1618432855:
3894      /* identifier */ return new Property("identifier", "Identifier",
3895          "Identifier for the TestScript assigned for external purposes outside the context of FHIR.", 0, 1,
3896          identifier);
3897    case 3373707:
3898      /* name */ return new Property("name", "string",
3899          "A free text natural language name identifying the executed TestScript.", 0, 1, name);
3900    case -892481550:
3901      /* status */ return new Property("status", "code", "The current state of this test report.", 0, 1, status);
3902    case 1712049149:
3903      /* testScript */ return new Property("testScript", "Reference(TestScript)",
3904          "Ideally this is an absolute URL that is used to identify the version-specific TestScript that was executed, matching the `TestScript.url`.",
3905          0, 1, testScript);
3906    case -934426595:
3907      /* result */ return new Property("result", "code", "The overall result from the execution of the TestScript.", 0,
3908          1, result);
3909    case 109264530:
3910      /* score */ return new Property("score", "decimal",
3911          "The final score (percentage of tests passed) resulting from the execution of the TestScript.", 0, 1, score);
3912    case -877169473:
3913      /* tester */ return new Property("tester", "string",
3914          "Name of the tester producing this report (Organization or individual).", 0, 1, tester);
3915    case -1179159893:
3916      /* issued */ return new Property("issued", "dateTime",
3917          "When the TestScript was executed and this TestReport was generated.", 0, 1, issued);
3918    case 767422259:
3919      /* participant */ return new Property("participant", "",
3920          "A participant in the test execution, either the execution engine, a client, or a server.", 0,
3921          java.lang.Integer.MAX_VALUE, participant);
3922    case 109329021:
3923      /* setup */ return new Property("setup", "",
3924          "The results of the series of required setup operations before the tests were executed.", 0, 1, setup);
3925    case 3556498:
3926      /* test */ return new Property("test", "", "A test executed from the test script.", 0,
3927          java.lang.Integer.MAX_VALUE, test);
3928    case -1663474172:
3929      /* teardown */ return new Property("teardown", "",
3930          "The results of the series of operations required to clean up after all the tests were executed (successfully or otherwise).",
3931          0, 1, teardown);
3932    default:
3933      return super.getNamedProperty(_hash, _name, _checkValid);
3934    }
3935
3936  }
3937
3938  @Override
3939  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3940    switch (hash) {
3941    case -1618432855:
3942      /* identifier */ return this.identifier == null ? new Base[0] : new Base[] { this.identifier }; // Identifier
3943    case 3373707:
3944      /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
3945    case -892481550:
3946      /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // Enumeration<TestReportStatus>
3947    case 1712049149:
3948      /* testScript */ return this.testScript == null ? new Base[0] : new Base[] { this.testScript }; // Reference
3949    case -934426595:
3950      /* result */ return this.result == null ? new Base[0] : new Base[] { this.result }; // Enumeration<TestReportResult>
3951    case 109264530:
3952      /* score */ return this.score == null ? new Base[0] : new Base[] { this.score }; // DecimalType
3953    case -877169473:
3954      /* tester */ return this.tester == null ? new Base[0] : new Base[] { this.tester }; // StringType
3955    case -1179159893:
3956      /* issued */ return this.issued == null ? new Base[0] : new Base[] { this.issued }; // DateTimeType
3957    case 767422259:
3958      /* participant */ return this.participant == null ? new Base[0]
3959          : this.participant.toArray(new Base[this.participant.size()]); // TestReportParticipantComponent
3960    case 109329021:
3961      /* setup */ return this.setup == null ? new Base[0] : new Base[] { this.setup }; // TestReportSetupComponent
3962    case 3556498:
3963      /* test */ return this.test == null ? new Base[0] : this.test.toArray(new Base[this.test.size()]); // TestReportTestComponent
3964    case -1663474172:
3965      /* teardown */ return this.teardown == null ? new Base[0] : new Base[] { this.teardown }; // TestReportTeardownComponent
3966    default:
3967      return super.getProperty(hash, name, checkValid);
3968    }
3969
3970  }
3971
3972  @Override
3973  public Base setProperty(int hash, String name, Base value) throws FHIRException {
3974    switch (hash) {
3975    case -1618432855: // identifier
3976      this.identifier = castToIdentifier(value); // Identifier
3977      return value;
3978    case 3373707: // name
3979      this.name = castToString(value); // StringType
3980      return value;
3981    case -892481550: // status
3982      value = new TestReportStatusEnumFactory().fromType(castToCode(value));
3983      this.status = (Enumeration) value; // Enumeration<TestReportStatus>
3984      return value;
3985    case 1712049149: // testScript
3986      this.testScript = castToReference(value); // Reference
3987      return value;
3988    case -934426595: // result
3989      value = new TestReportResultEnumFactory().fromType(castToCode(value));
3990      this.result = (Enumeration) value; // Enumeration<TestReportResult>
3991      return value;
3992    case 109264530: // score
3993      this.score = castToDecimal(value); // DecimalType
3994      return value;
3995    case -877169473: // tester
3996      this.tester = castToString(value); // StringType
3997      return value;
3998    case -1179159893: // issued
3999      this.issued = castToDateTime(value); // DateTimeType
4000      return value;
4001    case 767422259: // participant
4002      this.getParticipant().add((TestReportParticipantComponent) value); // TestReportParticipantComponent
4003      return value;
4004    case 109329021: // setup
4005      this.setup = (TestReportSetupComponent) value; // TestReportSetupComponent
4006      return value;
4007    case 3556498: // test
4008      this.getTest().add((TestReportTestComponent) value); // TestReportTestComponent
4009      return value;
4010    case -1663474172: // teardown
4011      this.teardown = (TestReportTeardownComponent) value; // TestReportTeardownComponent
4012      return value;
4013    default:
4014      return super.setProperty(hash, name, value);
4015    }
4016
4017  }
4018
4019  @Override
4020  public Base setProperty(String name, Base value) throws FHIRException {
4021    if (name.equals("identifier")) {
4022      this.identifier = castToIdentifier(value); // Identifier
4023    } else if (name.equals("name")) {
4024      this.name = castToString(value); // StringType
4025    } else if (name.equals("status")) {
4026      value = new TestReportStatusEnumFactory().fromType(castToCode(value));
4027      this.status = (Enumeration) value; // Enumeration<TestReportStatus>
4028    } else if (name.equals("testScript")) {
4029      this.testScript = castToReference(value); // Reference
4030    } else if (name.equals("result")) {
4031      value = new TestReportResultEnumFactory().fromType(castToCode(value));
4032      this.result = (Enumeration) value; // Enumeration<TestReportResult>
4033    } else if (name.equals("score")) {
4034      this.score = castToDecimal(value); // DecimalType
4035    } else if (name.equals("tester")) {
4036      this.tester = castToString(value); // StringType
4037    } else if (name.equals("issued")) {
4038      this.issued = castToDateTime(value); // DateTimeType
4039    } else if (name.equals("participant")) {
4040      this.getParticipant().add((TestReportParticipantComponent) value);
4041    } else if (name.equals("setup")) {
4042      this.setup = (TestReportSetupComponent) value; // TestReportSetupComponent
4043    } else if (name.equals("test")) {
4044      this.getTest().add((TestReportTestComponent) value);
4045    } else if (name.equals("teardown")) {
4046      this.teardown = (TestReportTeardownComponent) value; // TestReportTeardownComponent
4047    } else
4048      return super.setProperty(name, value);
4049    return value;
4050  }
4051
4052  @Override
4053  public Base makeProperty(int hash, String name) throws FHIRException {
4054    switch (hash) {
4055    case -1618432855:
4056      return getIdentifier();
4057    case 3373707:
4058      return getNameElement();
4059    case -892481550:
4060      return getStatusElement();
4061    case 1712049149:
4062      return getTestScript();
4063    case -934426595:
4064      return getResultElement();
4065    case 109264530:
4066      return getScoreElement();
4067    case -877169473:
4068      return getTesterElement();
4069    case -1179159893:
4070      return getIssuedElement();
4071    case 767422259:
4072      return addParticipant();
4073    case 109329021:
4074      return getSetup();
4075    case 3556498:
4076      return addTest();
4077    case -1663474172:
4078      return getTeardown();
4079    default:
4080      return super.makeProperty(hash, name);
4081    }
4082
4083  }
4084
4085  @Override
4086  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4087    switch (hash) {
4088    case -1618432855:
4089      /* identifier */ return new String[] { "Identifier" };
4090    case 3373707:
4091      /* name */ return new String[] { "string" };
4092    case -892481550:
4093      /* status */ return new String[] { "code" };
4094    case 1712049149:
4095      /* testScript */ return new String[] { "Reference" };
4096    case -934426595:
4097      /* result */ return new String[] { "code" };
4098    case 109264530:
4099      /* score */ return new String[] { "decimal" };
4100    case -877169473:
4101      /* tester */ return new String[] { "string" };
4102    case -1179159893:
4103      /* issued */ return new String[] { "dateTime" };
4104    case 767422259:
4105      /* participant */ return new String[] {};
4106    case 109329021:
4107      /* setup */ return new String[] {};
4108    case 3556498:
4109      /* test */ return new String[] {};
4110    case -1663474172:
4111      /* teardown */ return new String[] {};
4112    default:
4113      return super.getTypesForProperty(hash, name);
4114    }
4115
4116  }
4117
4118  @Override
4119  public Base addChild(String name) throws FHIRException {
4120    if (name.equals("identifier")) {
4121      this.identifier = new Identifier();
4122      return this.identifier;
4123    } else if (name.equals("name")) {
4124      throw new FHIRException("Cannot call addChild on a singleton property TestReport.name");
4125    } else if (name.equals("status")) {
4126      throw new FHIRException("Cannot call addChild on a singleton property TestReport.status");
4127    } else if (name.equals("testScript")) {
4128      this.testScript = new Reference();
4129      return this.testScript;
4130    } else if (name.equals("result")) {
4131      throw new FHIRException("Cannot call addChild on a singleton property TestReport.result");
4132    } else if (name.equals("score")) {
4133      throw new FHIRException("Cannot call addChild on a singleton property TestReport.score");
4134    } else if (name.equals("tester")) {
4135      throw new FHIRException("Cannot call addChild on a singleton property TestReport.tester");
4136    } else if (name.equals("issued")) {
4137      throw new FHIRException("Cannot call addChild on a singleton property TestReport.issued");
4138    } else if (name.equals("participant")) {
4139      return addParticipant();
4140    } else if (name.equals("setup")) {
4141      this.setup = new TestReportSetupComponent();
4142      return this.setup;
4143    } else if (name.equals("test")) {
4144      return addTest();
4145    } else if (name.equals("teardown")) {
4146      this.teardown = new TestReportTeardownComponent();
4147      return this.teardown;
4148    } else
4149      return super.addChild(name);
4150  }
4151
4152  public String fhirType() {
4153    return "TestReport";
4154
4155  }
4156
4157  public TestReport copy() {
4158    TestReport dst = new TestReport();
4159    copyValues(dst);
4160    return dst;
4161  }
4162
4163  public void copyValues(TestReport dst) {
4164    super.copyValues(dst);
4165    dst.identifier = identifier == null ? null : identifier.copy();
4166    dst.name = name == null ? null : name.copy();
4167    dst.status = status == null ? null : status.copy();
4168    dst.testScript = testScript == null ? null : testScript.copy();
4169    dst.result = result == null ? null : result.copy();
4170    dst.score = score == null ? null : score.copy();
4171    dst.tester = tester == null ? null : tester.copy();
4172    dst.issued = issued == null ? null : issued.copy();
4173    if (participant != null) {
4174      dst.participant = new ArrayList<TestReportParticipantComponent>();
4175      for (TestReportParticipantComponent i : participant)
4176        dst.participant.add(i.copy());
4177    }
4178    ;
4179    dst.setup = setup == null ? null : setup.copy();
4180    if (test != null) {
4181      dst.test = new ArrayList<TestReportTestComponent>();
4182      for (TestReportTestComponent i : test)
4183        dst.test.add(i.copy());
4184    }
4185    ;
4186    dst.teardown = teardown == null ? null : teardown.copy();
4187  }
4188
4189  protected TestReport typedCopy() {
4190    return copy();
4191  }
4192
4193  @Override
4194  public boolean equalsDeep(Base other_) {
4195    if (!super.equalsDeep(other_))
4196      return false;
4197    if (!(other_ instanceof TestReport))
4198      return false;
4199    TestReport o = (TestReport) other_;
4200    return compareDeep(identifier, o.identifier, true) && compareDeep(name, o.name, true)
4201        && compareDeep(status, o.status, true) && compareDeep(testScript, o.testScript, true)
4202        && compareDeep(result, o.result, true) && compareDeep(score, o.score, true)
4203        && compareDeep(tester, o.tester, true) && compareDeep(issued, o.issued, true)
4204        && compareDeep(participant, o.participant, true) && compareDeep(setup, o.setup, true)
4205        && compareDeep(test, o.test, true) && compareDeep(teardown, o.teardown, true);
4206  }
4207
4208  @Override
4209  public boolean equalsShallow(Base other_) {
4210    if (!super.equalsShallow(other_))
4211      return false;
4212    if (!(other_ instanceof TestReport))
4213      return false;
4214    TestReport o = (TestReport) other_;
4215    return compareValues(name, o.name, true) && compareValues(status, o.status, true)
4216        && compareValues(result, o.result, true) && compareValues(score, o.score, true)
4217        && compareValues(tester, o.tester, true) && compareValues(issued, o.issued, true);
4218  }
4219
4220  public boolean isEmpty() {
4221    return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, name, status, testScript, result, score,
4222        tester, issued, participant, setup, test, teardown);
4223  }
4224
4225  @Override
4226  public ResourceType getResourceType() {
4227    return ResourceType.TestReport;
4228  }
4229
4230  /**
4231   * Search parameter: <b>result</b>
4232   * <p>
4233   * Description: <b>The result disposition of the test execution</b><br>
4234   * Type: <b>token</b><br>
4235   * Path: <b>TestReport.result</b><br>
4236   * </p>
4237   */
4238  @SearchParamDefinition(name = "result", path = "TestReport.result", description = "The result disposition of the test execution", type = "token")
4239  public static final String SP_RESULT = "result";
4240  /**
4241   * <b>Fluent Client</b> search parameter constant for <b>result</b>
4242   * <p>
4243   * Description: <b>The result disposition of the test execution</b><br>
4244   * Type: <b>token</b><br>
4245   * Path: <b>TestReport.result</b><br>
4246   * </p>
4247   */
4248  public static final ca.uhn.fhir.rest.gclient.TokenClientParam RESULT = new ca.uhn.fhir.rest.gclient.TokenClientParam(
4249      SP_RESULT);
4250
4251  /**
4252   * Search parameter: <b>identifier</b>
4253   * <p>
4254   * Description: <b>An external identifier for the test report</b><br>
4255   * Type: <b>token</b><br>
4256   * Path: <b>TestReport.identifier</b><br>
4257   * </p>
4258   */
4259  @SearchParamDefinition(name = "identifier", path = "TestReport.identifier", description = "An external identifier for the test report", type = "token")
4260  public static final String SP_IDENTIFIER = "identifier";
4261  /**
4262   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4263   * <p>
4264   * Description: <b>An external identifier for the test report</b><br>
4265   * Type: <b>token</b><br>
4266   * Path: <b>TestReport.identifier</b><br>
4267   * </p>
4268   */
4269  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(
4270      SP_IDENTIFIER);
4271
4272  /**
4273   * Search parameter: <b>tester</b>
4274   * <p>
4275   * Description: <b>The name of the testing organization</b><br>
4276   * Type: <b>string</b><br>
4277   * Path: <b>TestReport.tester</b><br>
4278   * </p>
4279   */
4280  @SearchParamDefinition(name = "tester", path = "TestReport.tester", description = "The name of the testing organization", type = "string")
4281  public static final String SP_TESTER = "tester";
4282  /**
4283   * <b>Fluent Client</b> search parameter constant for <b>tester</b>
4284   * <p>
4285   * Description: <b>The name of the testing organization</b><br>
4286   * Type: <b>string</b><br>
4287   * Path: <b>TestReport.tester</b><br>
4288   * </p>
4289   */
4290  public static final ca.uhn.fhir.rest.gclient.StringClientParam TESTER = new ca.uhn.fhir.rest.gclient.StringClientParam(
4291      SP_TESTER);
4292
4293  /**
4294   * Search parameter: <b>testscript</b>
4295   * <p>
4296   * Description: <b>The test script executed to produce this report</b><br>
4297   * Type: <b>reference</b><br>
4298   * Path: <b>TestReport.testScript</b><br>
4299   * </p>
4300   */
4301  @SearchParamDefinition(name = "testscript", path = "TestReport.testScript", description = "The test script executed to produce this report", type = "reference", target = {
4302      TestScript.class })
4303  public static final String SP_TESTSCRIPT = "testscript";
4304  /**
4305   * <b>Fluent Client</b> search parameter constant for <b>testscript</b>
4306   * <p>
4307   * Description: <b>The test script executed to produce this report</b><br>
4308   * Type: <b>reference</b><br>
4309   * Path: <b>TestReport.testScript</b><br>
4310   * </p>
4311   */
4312  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam TESTSCRIPT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
4313      SP_TESTSCRIPT);
4314
4315  /**
4316   * Constant for fluent queries to be used to add include statements. Specifies
4317   * the path value of "<b>TestReport:testscript</b>".
4318   */
4319  public static final ca.uhn.fhir.model.api.Include INCLUDE_TESTSCRIPT = new ca.uhn.fhir.model.api.Include(
4320      "TestReport:testscript").toLocked();
4321
4322  /**
4323   * Search parameter: <b>issued</b>
4324   * <p>
4325   * Description: <b>The test report generation date</b><br>
4326   * Type: <b>date</b><br>
4327   * Path: <b>TestReport.issued</b><br>
4328   * </p>
4329   */
4330  @SearchParamDefinition(name = "issued", path = "TestReport.issued", description = "The test report generation date", type = "date")
4331  public static final String SP_ISSUED = "issued";
4332  /**
4333   * <b>Fluent Client</b> search parameter constant for <b>issued</b>
4334   * <p>
4335   * Description: <b>The test report generation date</b><br>
4336   * Type: <b>date</b><br>
4337   * Path: <b>TestReport.issued</b><br>
4338   * </p>
4339   */
4340  public static final ca.uhn.fhir.rest.gclient.DateClientParam ISSUED = new ca.uhn.fhir.rest.gclient.DateClientParam(
4341      SP_ISSUED);
4342
4343  /**
4344   * Search parameter: <b>participant</b>
4345   * <p>
4346   * Description: <b>The reference to a participant in the test execution</b><br>
4347   * Type: <b>uri</b><br>
4348   * Path: <b>TestReport.participant.uri</b><br>
4349   * </p>
4350   */
4351  @SearchParamDefinition(name = "participant", path = "TestReport.participant.uri", description = "The reference to a participant in the test execution", type = "uri")
4352  public static final String SP_PARTICIPANT = "participant";
4353  /**
4354   * <b>Fluent Client</b> search parameter constant for <b>participant</b>
4355   * <p>
4356   * Description: <b>The reference to a participant in the test execution</b><br>
4357   * Type: <b>uri</b><br>
4358   * Path: <b>TestReport.participant.uri</b><br>
4359   * </p>
4360   */
4361  public static final ca.uhn.fhir.rest.gclient.UriClientParam PARTICIPANT = new ca.uhn.fhir.rest.gclient.UriClientParam(
4362      SP_PARTICIPANT);
4363
4364}