001package org.hl7.fhir.dstu2.model;
002
003
004
005
006/*
007  Copyright (c) 2011+, HL7, Inc.
008  All rights reserved.
009  
010  Redistribution and use in source and binary forms, with or without modification, 
011  are permitted provided that the following conditions are met:
012  
013   * Redistributions of source code must retain the above copyright notice, this 
014     list of conditions and the following disclaimer.
015   * Redistributions in binary form must reproduce the above copyright notice, 
016     this list of conditions and the following disclaimer in the documentation 
017     and/or other materials provided with the distribution.
018   * Neither the name of HL7 nor the names of its contributors may be used to 
019     endorse or promote products derived from this software without specific 
020     prior written permission.
021  
022  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
023  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
024  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
025  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
026  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
027  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
028  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
029  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
030  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
031  POSSIBILITY OF SUCH DAMAGE.
032  
033*/
034
035// Generated on Wed, Jul 13, 2016 05:32+1000 for FHIR v1.0.2
036import java.util.ArrayList;
037import java.util.Date;
038import java.util.List;
039
040import ca.uhn.fhir.model.api.annotation.Block;
041import ca.uhn.fhir.model.api.annotation.Child;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.ResourceDef;
044import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
045import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
046import org.hl7.fhir.exceptions.FHIRException;
047import org.hl7.fhir.utilities.Utilities;
048/**
049 * This resource provides the target, request and response, and action details for an action to be performed by the target on or about existing resources.
050 */
051@ResourceDef(name="ProcessRequest", profile="http://hl7.org/fhir/Profile/ProcessRequest")
052public class ProcessRequest extends DomainResource {
053
054    public enum ActionList {
055        /**
056         * Cancel, reverse or nullify the target resource.
057         */
058        CANCEL, 
059        /**
060         * Check for previously un-read/ not-retrieved resources.
061         */
062        POLL, 
063        /**
064         * Re-process the target resource.
065         */
066        REPROCESS, 
067        /**
068         * Retrieve the processing status of the target resource.
069         */
070        STATUS, 
071        /**
072         * added to help the parsers
073         */
074        NULL;
075        public static ActionList fromCode(String codeString) throws FHIRException {
076            if (codeString == null || "".equals(codeString))
077                return null;
078        if ("cancel".equals(codeString))
079          return CANCEL;
080        if ("poll".equals(codeString))
081          return POLL;
082        if ("reprocess".equals(codeString))
083          return REPROCESS;
084        if ("status".equals(codeString))
085          return STATUS;
086        throw new FHIRException("Unknown ActionList code '"+codeString+"'");
087        }
088        public String toCode() {
089          switch (this) {
090            case CANCEL: return "cancel";
091            case POLL: return "poll";
092            case REPROCESS: return "reprocess";
093            case STATUS: return "status";
094            default: return "?";
095          }
096        }
097        public String getSystem() {
098          switch (this) {
099            case CANCEL: return "http://hl7.org/fhir/actionlist";
100            case POLL: return "http://hl7.org/fhir/actionlist";
101            case REPROCESS: return "http://hl7.org/fhir/actionlist";
102            case STATUS: return "http://hl7.org/fhir/actionlist";
103            default: return "?";
104          }
105        }
106        public String getDefinition() {
107          switch (this) {
108            case CANCEL: return "Cancel, reverse or nullify the target resource.";
109            case POLL: return "Check for previously un-read/ not-retrieved resources.";
110            case REPROCESS: return "Re-process the target resource.";
111            case STATUS: return "Retrieve the processing status of the target resource.";
112            default: return "?";
113          }
114        }
115        public String getDisplay() {
116          switch (this) {
117            case CANCEL: return "Cancel, Reverse or Nullify";
118            case POLL: return "Poll";
119            case REPROCESS: return "Re-Process";
120            case STATUS: return "Status Check";
121            default: return "?";
122          }
123        }
124    }
125
126  public static class ActionListEnumFactory implements EnumFactory<ActionList> {
127    public ActionList fromCode(String codeString) throws IllegalArgumentException {
128      if (codeString == null || "".equals(codeString))
129            if (codeString == null || "".equals(codeString))
130                return null;
131        if ("cancel".equals(codeString))
132          return ActionList.CANCEL;
133        if ("poll".equals(codeString))
134          return ActionList.POLL;
135        if ("reprocess".equals(codeString))
136          return ActionList.REPROCESS;
137        if ("status".equals(codeString))
138          return ActionList.STATUS;
139        throw new IllegalArgumentException("Unknown ActionList code '"+codeString+"'");
140        }
141        public Enumeration<ActionList> fromType(Base code) throws FHIRException {
142          if (code == null || code.isEmpty())
143            return null;
144          String codeString = ((PrimitiveType) code).asStringValue();
145          if (codeString == null || "".equals(codeString))
146            return null;
147        if ("cancel".equals(codeString))
148          return new Enumeration<ActionList>(this, ActionList.CANCEL);
149        if ("poll".equals(codeString))
150          return new Enumeration<ActionList>(this, ActionList.POLL);
151        if ("reprocess".equals(codeString))
152          return new Enumeration<ActionList>(this, ActionList.REPROCESS);
153        if ("status".equals(codeString))
154          return new Enumeration<ActionList>(this, ActionList.STATUS);
155        throw new FHIRException("Unknown ActionList code '"+codeString+"'");
156        }
157    public String toCode(ActionList code) {
158      if (code == ActionList.CANCEL)
159        return "cancel";
160      if (code == ActionList.POLL)
161        return "poll";
162      if (code == ActionList.REPROCESS)
163        return "reprocess";
164      if (code == ActionList.STATUS)
165        return "status";
166      return "?";
167      }
168    }
169
170    @Block()
171    public static class ItemsComponent extends BackboneElement implements IBaseBackboneElement {
172        /**
173         * A service line number.
174         */
175        @Child(name = "sequenceLinkId", type = {IntegerType.class}, order=1, min=1, max=1, modifier=false, summary=true)
176        @Description(shortDefinition="Service instance", formalDefinition="A service line number." )
177        protected IntegerType sequenceLinkId;
178
179        private static final long serialVersionUID = -1598360600L;
180
181    /*
182     * Constructor
183     */
184      public ItemsComponent() {
185        super();
186      }
187
188    /*
189     * Constructor
190     */
191      public ItemsComponent(IntegerType sequenceLinkId) {
192        super();
193        this.sequenceLinkId = sequenceLinkId;
194      }
195
196        /**
197         * @return {@link #sequenceLinkId} (A service line number.). This is the underlying object with id, value and extensions. The accessor "getSequenceLinkId" gives direct access to the value
198         */
199        public IntegerType getSequenceLinkIdElement() { 
200          if (this.sequenceLinkId == null)
201            if (Configuration.errorOnAutoCreate())
202              throw new Error("Attempt to auto-create ItemsComponent.sequenceLinkId");
203            else if (Configuration.doAutoCreate())
204              this.sequenceLinkId = new IntegerType(); // bb
205          return this.sequenceLinkId;
206        }
207
208        public boolean hasSequenceLinkIdElement() { 
209          return this.sequenceLinkId != null && !this.sequenceLinkId.isEmpty();
210        }
211
212        public boolean hasSequenceLinkId() { 
213          return this.sequenceLinkId != null && !this.sequenceLinkId.isEmpty();
214        }
215
216        /**
217         * @param value {@link #sequenceLinkId} (A service line number.). This is the underlying object with id, value and extensions. The accessor "getSequenceLinkId" gives direct access to the value
218         */
219        public ItemsComponent setSequenceLinkIdElement(IntegerType value) { 
220          this.sequenceLinkId = value;
221          return this;
222        }
223
224        /**
225         * @return A service line number.
226         */
227        public int getSequenceLinkId() { 
228          return this.sequenceLinkId == null || this.sequenceLinkId.isEmpty() ? 0 : this.sequenceLinkId.getValue();
229        }
230
231        /**
232         * @param value A service line number.
233         */
234        public ItemsComponent setSequenceLinkId(int value) { 
235            if (this.sequenceLinkId == null)
236              this.sequenceLinkId = new IntegerType();
237            this.sequenceLinkId.setValue(value);
238          return this;
239        }
240
241        protected void listChildren(List<Property> childrenList) {
242          super.listChildren(childrenList);
243          childrenList.add(new Property("sequenceLinkId", "integer", "A service line number.", 0, java.lang.Integer.MAX_VALUE, sequenceLinkId));
244        }
245
246      @Override
247      public void setProperty(String name, Base value) throws FHIRException {
248        if (name.equals("sequenceLinkId"))
249          this.sequenceLinkId = castToInteger(value); // IntegerType
250        else
251          super.setProperty(name, value);
252      }
253
254      @Override
255      public Base addChild(String name) throws FHIRException {
256        if (name.equals("sequenceLinkId")) {
257          throw new FHIRException("Cannot call addChild on a primitive type ProcessRequest.sequenceLinkId");
258        }
259        else
260          return super.addChild(name);
261      }
262
263      public ItemsComponent copy() {
264        ItemsComponent dst = new ItemsComponent();
265        copyValues(dst);
266        dst.sequenceLinkId = sequenceLinkId == null ? null : sequenceLinkId.copy();
267        return dst;
268      }
269
270      @Override
271      public boolean equalsDeep(Base other) {
272        if (!super.equalsDeep(other))
273          return false;
274        if (!(other instanceof ItemsComponent))
275          return false;
276        ItemsComponent o = (ItemsComponent) other;
277        return compareDeep(sequenceLinkId, o.sequenceLinkId, true);
278      }
279
280      @Override
281      public boolean equalsShallow(Base other) {
282        if (!super.equalsShallow(other))
283          return false;
284        if (!(other instanceof ItemsComponent))
285          return false;
286        ItemsComponent o = (ItemsComponent) other;
287        return compareValues(sequenceLinkId, o.sequenceLinkId, true);
288      }
289
290      public boolean isEmpty() {
291        return super.isEmpty() && (sequenceLinkId == null || sequenceLinkId.isEmpty());
292      }
293
294  public String fhirType() {
295    return "ProcessRequest.item";
296
297  }
298
299  }
300
301    /**
302     * The type of processing action being requested, for example Reversal, Readjudication, StatusRequest,PendedRequest.
303     */
304    @Child(name = "action", type = {CodeType.class}, order=0, min=1, max=1, modifier=false, summary=true)
305    @Description(shortDefinition="cancel | poll | reprocess | status", formalDefinition="The type of processing action being requested, for example Reversal, Readjudication, StatusRequest,PendedRequest." )
306    protected Enumeration<ActionList> action;
307
308    /**
309     * The ProcessRequest business identifier.
310     */
311    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
312    @Description(shortDefinition="Business Identifier", formalDefinition="The ProcessRequest business identifier." )
313    protected List<Identifier> identifier;
314
315    /**
316     * The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.
317     */
318    @Child(name = "ruleset", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
319    @Description(shortDefinition="Resource version", formalDefinition="The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources." )
320    protected Coding ruleset;
321
322    /**
323     * The style (standard) and version of the original material which was converted into this resource.
324     */
325    @Child(name = "originalRuleset", type = {Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
326    @Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
327    protected Coding originalRuleset;
328
329    /**
330     * The date when this resource was created.
331     */
332    @Child(name = "created", type = {DateTimeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
333    @Description(shortDefinition="Creation date", formalDefinition="The date when this resource was created." )
334    protected DateTimeType created;
335
336    /**
337     * The organization which is the target of the request.
338     */
339    @Child(name = "target", type = {Organization.class}, order=5, min=0, max=1, modifier=false, summary=true)
340    @Description(shortDefinition="Target of the request", formalDefinition="The organization which is the target of the request." )
341    protected Reference target;
342
343    /**
344     * The actual object that is the target of the reference (The organization which is the target of the request.)
345     */
346    protected Organization targetTarget;
347
348    /**
349     * The practitioner who is responsible for the action specified in thise request.
350     */
351    @Child(name = "provider", type = {Practitioner.class}, order=6, min=0, max=1, modifier=false, summary=true)
352    @Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the action specified in thise request." )
353    protected Reference provider;
354
355    /**
356     * The actual object that is the target of the reference (The practitioner who is responsible for the action specified in thise request.)
357     */
358    protected Practitioner providerTarget;
359
360    /**
361     * The organization which is responsible for the action speccified in thise request.
362     */
363    @Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
364    @Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the action speccified in thise request." )
365    protected Reference organization;
366
367    /**
368     * The actual object that is the target of the reference (The organization which is responsible for the action speccified in thise request.)
369     */
370    protected Organization organizationTarget;
371
372    /**
373     * Reference of resource which is the target or subject of this action.
374     */
375    @Child(name = "request", type = {}, order=8, min=0, max=1, modifier=false, summary=true)
376    @Description(shortDefinition="Request reference", formalDefinition="Reference of resource which is the target or subject of this action." )
377    protected Reference request;
378
379    /**
380     * The actual object that is the target of the reference (Reference of resource which is the target or subject of this action.)
381     */
382    protected Resource requestTarget;
383
384    /**
385     * Reference of a prior response to resource which is the target or subject of this action.
386     */
387    @Child(name = "response", type = {}, order=9, min=0, max=1, modifier=false, summary=true)
388    @Description(shortDefinition="Response reference", formalDefinition="Reference of a prior response to resource which is the target or subject of this action." )
389    protected Reference response;
390
391    /**
392     * The actual object that is the target of the reference (Reference of a prior response to resource which is the target or subject of this action.)
393     */
394    protected Resource responseTarget;
395
396    /**
397     * If true remove all history excluding audit.
398     */
399    @Child(name = "nullify", type = {BooleanType.class}, order=10, min=0, max=1, modifier=false, summary=true)
400    @Description(shortDefinition="Nullify", formalDefinition="If true remove all history excluding audit." )
401    protected BooleanType nullify;
402
403    /**
404     * A reference to supply which authenticates the process.
405     */
406    @Child(name = "reference", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=true)
407    @Description(shortDefinition="Reference number/string", formalDefinition="A reference to supply which authenticates the process." )
408    protected StringType reference;
409
410    /**
411     * List of top level items to be re-adjudicated, if none specified then the entire submission is re-adjudicated.
412     */
413    @Child(name = "item", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
414    @Description(shortDefinition="Items to re-adjudicate", formalDefinition="List of top level items to be re-adjudicated, if none specified then the entire submission is re-adjudicated." )
415    protected List<ItemsComponent> item;
416
417    /**
418     * Names of resource types to include.
419     */
420    @Child(name = "include", type = {StringType.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
421    @Description(shortDefinition="Resource type(s) to include", formalDefinition="Names of resource types to include." )
422    protected List<StringType> include;
423
424    /**
425     * Names of resource types to exclude.
426     */
427    @Child(name = "exclude", type = {StringType.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
428    @Description(shortDefinition="Resource type(s) to exclude", formalDefinition="Names of resource types to exclude." )
429    protected List<StringType> exclude;
430
431    /**
432     * A period of time during which the fulfilling resources would have been created.
433     */
434    @Child(name = "period", type = {Period.class}, order=15, min=0, max=1, modifier=false, summary=true)
435    @Description(shortDefinition="Period", formalDefinition="A period of time during which the fulfilling resources would have been created." )
436    protected Period period;
437
438    private static final long serialVersionUID = -1332331220L;
439
440  /*
441   * Constructor
442   */
443    public ProcessRequest() {
444      super();
445    }
446
447  /*
448   * Constructor
449   */
450    public ProcessRequest(Enumeration<ActionList> action) {
451      super();
452      this.action = action;
453    }
454
455    /**
456     * @return {@link #action} (The type of processing action being requested, for example Reversal, Readjudication, StatusRequest,PendedRequest.). This is the underlying object with id, value and extensions. The accessor "getAction" gives direct access to the value
457     */
458    public Enumeration<ActionList> getActionElement() { 
459      if (this.action == null)
460        if (Configuration.errorOnAutoCreate())
461          throw new Error("Attempt to auto-create ProcessRequest.action");
462        else if (Configuration.doAutoCreate())
463          this.action = new Enumeration<ActionList>(new ActionListEnumFactory()); // bb
464      return this.action;
465    }
466
467    public boolean hasActionElement() { 
468      return this.action != null && !this.action.isEmpty();
469    }
470
471    public boolean hasAction() { 
472      return this.action != null && !this.action.isEmpty();
473    }
474
475    /**
476     * @param value {@link #action} (The type of processing action being requested, for example Reversal, Readjudication, StatusRequest,PendedRequest.). This is the underlying object with id, value and extensions. The accessor "getAction" gives direct access to the value
477     */
478    public ProcessRequest setActionElement(Enumeration<ActionList> value) { 
479      this.action = value;
480      return this;
481    }
482
483    /**
484     * @return The type of processing action being requested, for example Reversal, Readjudication, StatusRequest,PendedRequest.
485     */
486    public ActionList getAction() { 
487      return this.action == null ? null : this.action.getValue();
488    }
489
490    /**
491     * @param value The type of processing action being requested, for example Reversal, Readjudication, StatusRequest,PendedRequest.
492     */
493    public ProcessRequest setAction(ActionList value) { 
494        if (this.action == null)
495          this.action = new Enumeration<ActionList>(new ActionListEnumFactory());
496        this.action.setValue(value);
497      return this;
498    }
499
500    /**
501     * @return {@link #identifier} (The ProcessRequest business identifier.)
502     */
503    public List<Identifier> getIdentifier() { 
504      if (this.identifier == null)
505        this.identifier = new ArrayList<Identifier>();
506      return this.identifier;
507    }
508
509    public boolean hasIdentifier() { 
510      if (this.identifier == null)
511        return false;
512      for (Identifier item : this.identifier)
513        if (!item.isEmpty())
514          return true;
515      return false;
516    }
517
518    /**
519     * @return {@link #identifier} (The ProcessRequest business identifier.)
520     */
521    // syntactic sugar
522    public Identifier addIdentifier() { //3
523      Identifier t = new Identifier();
524      if (this.identifier == null)
525        this.identifier = new ArrayList<Identifier>();
526      this.identifier.add(t);
527      return t;
528    }
529
530    // syntactic sugar
531    public ProcessRequest addIdentifier(Identifier t) { //3
532      if (t == null)
533        return this;
534      if (this.identifier == null)
535        this.identifier = new ArrayList<Identifier>();
536      this.identifier.add(t);
537      return this;
538    }
539
540    /**
541     * @return {@link #ruleset} (The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.)
542     */
543    public Coding getRuleset() { 
544      if (this.ruleset == null)
545        if (Configuration.errorOnAutoCreate())
546          throw new Error("Attempt to auto-create ProcessRequest.ruleset");
547        else if (Configuration.doAutoCreate())
548          this.ruleset = new Coding(); // cc
549      return this.ruleset;
550    }
551
552    public boolean hasRuleset() { 
553      return this.ruleset != null && !this.ruleset.isEmpty();
554    }
555
556    /**
557     * @param value {@link #ruleset} (The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.)
558     */
559    public ProcessRequest setRuleset(Coding value) { 
560      this.ruleset = value;
561      return this;
562    }
563
564    /**
565     * @return {@link #originalRuleset} (The style (standard) and version of the original material which was converted into this resource.)
566     */
567    public Coding getOriginalRuleset() { 
568      if (this.originalRuleset == null)
569        if (Configuration.errorOnAutoCreate())
570          throw new Error("Attempt to auto-create ProcessRequest.originalRuleset");
571        else if (Configuration.doAutoCreate())
572          this.originalRuleset = new Coding(); // cc
573      return this.originalRuleset;
574    }
575
576    public boolean hasOriginalRuleset() { 
577      return this.originalRuleset != null && !this.originalRuleset.isEmpty();
578    }
579
580    /**
581     * @param value {@link #originalRuleset} (The style (standard) and version of the original material which was converted into this resource.)
582     */
583    public ProcessRequest setOriginalRuleset(Coding value) { 
584      this.originalRuleset = value;
585      return this;
586    }
587
588    /**
589     * @return {@link #created} (The date when this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
590     */
591    public DateTimeType getCreatedElement() { 
592      if (this.created == null)
593        if (Configuration.errorOnAutoCreate())
594          throw new Error("Attempt to auto-create ProcessRequest.created");
595        else if (Configuration.doAutoCreate())
596          this.created = new DateTimeType(); // bb
597      return this.created;
598    }
599
600    public boolean hasCreatedElement() { 
601      return this.created != null && !this.created.isEmpty();
602    }
603
604    public boolean hasCreated() { 
605      return this.created != null && !this.created.isEmpty();
606    }
607
608    /**
609     * @param value {@link #created} (The date when this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
610     */
611    public ProcessRequest setCreatedElement(DateTimeType value) { 
612      this.created = value;
613      return this;
614    }
615
616    /**
617     * @return The date when this resource was created.
618     */
619    public Date getCreated() { 
620      return this.created == null ? null : this.created.getValue();
621    }
622
623    /**
624     * @param value The date when this resource was created.
625     */
626    public ProcessRequest setCreated(Date value) { 
627      if (value == null)
628        this.created = null;
629      else {
630        if (this.created == null)
631          this.created = new DateTimeType();
632        this.created.setValue(value);
633      }
634      return this;
635    }
636
637    /**
638     * @return {@link #target} (The organization which is the target of the request.)
639     */
640    public Reference getTarget() { 
641      if (this.target == null)
642        if (Configuration.errorOnAutoCreate())
643          throw new Error("Attempt to auto-create ProcessRequest.target");
644        else if (Configuration.doAutoCreate())
645          this.target = new Reference(); // cc
646      return this.target;
647    }
648
649    public boolean hasTarget() { 
650      return this.target != null && !this.target.isEmpty();
651    }
652
653    /**
654     * @param value {@link #target} (The organization which is the target of the request.)
655     */
656    public ProcessRequest setTarget(Reference value) { 
657      this.target = value;
658      return this;
659    }
660
661    /**
662     * @return {@link #target} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The organization which is the target of the request.)
663     */
664    public Organization getTargetTarget() { 
665      if (this.targetTarget == null)
666        if (Configuration.errorOnAutoCreate())
667          throw new Error("Attempt to auto-create ProcessRequest.target");
668        else if (Configuration.doAutoCreate())
669          this.targetTarget = new Organization(); // aa
670      return this.targetTarget;
671    }
672
673    /**
674     * @param value {@link #target} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The organization which is the target of the request.)
675     */
676    public ProcessRequest setTargetTarget(Organization value) { 
677      this.targetTarget = value;
678      return this;
679    }
680
681    /**
682     * @return {@link #provider} (The practitioner who is responsible for the action specified in thise request.)
683     */
684    public Reference getProvider() { 
685      if (this.provider == null)
686        if (Configuration.errorOnAutoCreate())
687          throw new Error("Attempt to auto-create ProcessRequest.provider");
688        else if (Configuration.doAutoCreate())
689          this.provider = new Reference(); // cc
690      return this.provider;
691    }
692
693    public boolean hasProvider() { 
694      return this.provider != null && !this.provider.isEmpty();
695    }
696
697    /**
698     * @param value {@link #provider} (The practitioner who is responsible for the action specified in thise request.)
699     */
700    public ProcessRequest setProvider(Reference value) { 
701      this.provider = value;
702      return this;
703    }
704
705    /**
706     * @return {@link #provider} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The practitioner who is responsible for the action specified in thise request.)
707     */
708    public Practitioner getProviderTarget() { 
709      if (this.providerTarget == null)
710        if (Configuration.errorOnAutoCreate())
711          throw new Error("Attempt to auto-create ProcessRequest.provider");
712        else if (Configuration.doAutoCreate())
713          this.providerTarget = new Practitioner(); // aa
714      return this.providerTarget;
715    }
716
717    /**
718     * @param value {@link #provider} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The practitioner who is responsible for the action specified in thise request.)
719     */
720    public ProcessRequest setProviderTarget(Practitioner value) { 
721      this.providerTarget = value;
722      return this;
723    }
724
725    /**
726     * @return {@link #organization} (The organization which is responsible for the action speccified in thise request.)
727     */
728    public Reference getOrganization() { 
729      if (this.organization == null)
730        if (Configuration.errorOnAutoCreate())
731          throw new Error("Attempt to auto-create ProcessRequest.organization");
732        else if (Configuration.doAutoCreate())
733          this.organization = new Reference(); // cc
734      return this.organization;
735    }
736
737    public boolean hasOrganization() { 
738      return this.organization != null && !this.organization.isEmpty();
739    }
740
741    /**
742     * @param value {@link #organization} (The organization which is responsible for the action speccified in thise request.)
743     */
744    public ProcessRequest setOrganization(Reference value) { 
745      this.organization = value;
746      return this;
747    }
748
749    /**
750     * @return {@link #organization} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The organization which is responsible for the action speccified in thise request.)
751     */
752    public Organization getOrganizationTarget() { 
753      if (this.organizationTarget == null)
754        if (Configuration.errorOnAutoCreate())
755          throw new Error("Attempt to auto-create ProcessRequest.organization");
756        else if (Configuration.doAutoCreate())
757          this.organizationTarget = new Organization(); // aa
758      return this.organizationTarget;
759    }
760
761    /**
762     * @param value {@link #organization} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The organization which is responsible for the action speccified in thise request.)
763     */
764    public ProcessRequest setOrganizationTarget(Organization value) { 
765      this.organizationTarget = value;
766      return this;
767    }
768
769    /**
770     * @return {@link #request} (Reference of resource which is the target or subject of this action.)
771     */
772    public Reference getRequest() { 
773      if (this.request == null)
774        if (Configuration.errorOnAutoCreate())
775          throw new Error("Attempt to auto-create ProcessRequest.request");
776        else if (Configuration.doAutoCreate())
777          this.request = new Reference(); // cc
778      return this.request;
779    }
780
781    public boolean hasRequest() { 
782      return this.request != null && !this.request.isEmpty();
783    }
784
785    /**
786     * @param value {@link #request} (Reference of resource which is the target or subject of this action.)
787     */
788    public ProcessRequest setRequest(Reference value) { 
789      this.request = value;
790      return this;
791    }
792
793    /**
794     * @return {@link #request} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Reference of resource which is the target or subject of this action.)
795     */
796    public Resource getRequestTarget() { 
797      return this.requestTarget;
798    }
799
800    /**
801     * @param value {@link #request} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Reference of resource which is the target or subject of this action.)
802     */
803    public ProcessRequest setRequestTarget(Resource value) { 
804      this.requestTarget = value;
805      return this;
806    }
807
808    /**
809     * @return {@link #response} (Reference of a prior response to resource which is the target or subject of this action.)
810     */
811    public Reference getResponse() { 
812      if (this.response == null)
813        if (Configuration.errorOnAutoCreate())
814          throw new Error("Attempt to auto-create ProcessRequest.response");
815        else if (Configuration.doAutoCreate())
816          this.response = new Reference(); // cc
817      return this.response;
818    }
819
820    public boolean hasResponse() { 
821      return this.response != null && !this.response.isEmpty();
822    }
823
824    /**
825     * @param value {@link #response} (Reference of a prior response to resource which is the target or subject of this action.)
826     */
827    public ProcessRequest setResponse(Reference value) { 
828      this.response = value;
829      return this;
830    }
831
832    /**
833     * @return {@link #response} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Reference of a prior response to resource which is the target or subject of this action.)
834     */
835    public Resource getResponseTarget() { 
836      return this.responseTarget;
837    }
838
839    /**
840     * @param value {@link #response} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Reference of a prior response to resource which is the target or subject of this action.)
841     */
842    public ProcessRequest setResponseTarget(Resource value) { 
843      this.responseTarget = value;
844      return this;
845    }
846
847    /**
848     * @return {@link #nullify} (If true remove all history excluding audit.). This is the underlying object with id, value and extensions. The accessor "getNullify" gives direct access to the value
849     */
850    public BooleanType getNullifyElement() { 
851      if (this.nullify == null)
852        if (Configuration.errorOnAutoCreate())
853          throw new Error("Attempt to auto-create ProcessRequest.nullify");
854        else if (Configuration.doAutoCreate())
855          this.nullify = new BooleanType(); // bb
856      return this.nullify;
857    }
858
859    public boolean hasNullifyElement() { 
860      return this.nullify != null && !this.nullify.isEmpty();
861    }
862
863    public boolean hasNullify() { 
864      return this.nullify != null && !this.nullify.isEmpty();
865    }
866
867    /**
868     * @param value {@link #nullify} (If true remove all history excluding audit.). This is the underlying object with id, value and extensions. The accessor "getNullify" gives direct access to the value
869     */
870    public ProcessRequest setNullifyElement(BooleanType value) { 
871      this.nullify = value;
872      return this;
873    }
874
875    /**
876     * @return If true remove all history excluding audit.
877     */
878    public boolean getNullify() { 
879      return this.nullify == null || this.nullify.isEmpty() ? false : this.nullify.getValue();
880    }
881
882    /**
883     * @param value If true remove all history excluding audit.
884     */
885    public ProcessRequest setNullify(boolean value) { 
886        if (this.nullify == null)
887          this.nullify = new BooleanType();
888        this.nullify.setValue(value);
889      return this;
890    }
891
892    /**
893     * @return {@link #reference} (A reference to supply which authenticates the process.). This is the underlying object with id, value and extensions. The accessor "getReference" gives direct access to the value
894     */
895    public StringType getReferenceElement() { 
896      if (this.reference == null)
897        if (Configuration.errorOnAutoCreate())
898          throw new Error("Attempt to auto-create ProcessRequest.reference");
899        else if (Configuration.doAutoCreate())
900          this.reference = new StringType(); // bb
901      return this.reference;
902    }
903
904    public boolean hasReferenceElement() { 
905      return this.reference != null && !this.reference.isEmpty();
906    }
907
908    public boolean hasReference() { 
909      return this.reference != null && !this.reference.isEmpty();
910    }
911
912    /**
913     * @param value {@link #reference} (A reference to supply which authenticates the process.). This is the underlying object with id, value and extensions. The accessor "getReference" gives direct access to the value
914     */
915    public ProcessRequest setReferenceElement(StringType value) { 
916      this.reference = value;
917      return this;
918    }
919
920    /**
921     * @return A reference to supply which authenticates the process.
922     */
923    public String getReference() { 
924      return this.reference == null ? null : this.reference.getValue();
925    }
926
927    /**
928     * @param value A reference to supply which authenticates the process.
929     */
930    public ProcessRequest setReference(String value) { 
931      if (Utilities.noString(value))
932        this.reference = null;
933      else {
934        if (this.reference == null)
935          this.reference = new StringType();
936        this.reference.setValue(value);
937      }
938      return this;
939    }
940
941    /**
942     * @return {@link #item} (List of top level items to be re-adjudicated, if none specified then the entire submission is re-adjudicated.)
943     */
944    public List<ItemsComponent> getItem() { 
945      if (this.item == null)
946        this.item = new ArrayList<ItemsComponent>();
947      return this.item;
948    }
949
950    public boolean hasItem() { 
951      if (this.item == null)
952        return false;
953      for (ItemsComponent item : this.item)
954        if (!item.isEmpty())
955          return true;
956      return false;
957    }
958
959    /**
960     * @return {@link #item} (List of top level items to be re-adjudicated, if none specified then the entire submission is re-adjudicated.)
961     */
962    // syntactic sugar
963    public ItemsComponent addItem() { //3
964      ItemsComponent t = new ItemsComponent();
965      if (this.item == null)
966        this.item = new ArrayList<ItemsComponent>();
967      this.item.add(t);
968      return t;
969    }
970
971    // syntactic sugar
972    public ProcessRequest addItem(ItemsComponent t) { //3
973      if (t == null)
974        return this;
975      if (this.item == null)
976        this.item = new ArrayList<ItemsComponent>();
977      this.item.add(t);
978      return this;
979    }
980
981    /**
982     * @return {@link #include} (Names of resource types to include.)
983     */
984    public List<StringType> getInclude() { 
985      if (this.include == null)
986        this.include = new ArrayList<StringType>();
987      return this.include;
988    }
989
990    public boolean hasInclude() { 
991      if (this.include == null)
992        return false;
993      for (StringType item : this.include)
994        if (!item.isEmpty())
995          return true;
996      return false;
997    }
998
999    /**
1000     * @return {@link #include} (Names of resource types to include.)
1001     */
1002    // syntactic sugar
1003    public StringType addIncludeElement() {//2 
1004      StringType t = new StringType();
1005      if (this.include == null)
1006        this.include = new ArrayList<StringType>();
1007      this.include.add(t);
1008      return t;
1009    }
1010
1011    /**
1012     * @param value {@link #include} (Names of resource types to include.)
1013     */
1014    public ProcessRequest addInclude(String value) { //1
1015      StringType t = new StringType();
1016      t.setValue(value);
1017      if (this.include == null)
1018        this.include = new ArrayList<StringType>();
1019      this.include.add(t);
1020      return this;
1021    }
1022
1023    /**
1024     * @param value {@link #include} (Names of resource types to include.)
1025     */
1026    public boolean hasInclude(String value) { 
1027      if (this.include == null)
1028        return false;
1029      for (StringType v : this.include)
1030        if (v.equals(value)) // string
1031          return true;
1032      return false;
1033    }
1034
1035    /**
1036     * @return {@link #exclude} (Names of resource types to exclude.)
1037     */
1038    public List<StringType> getExclude() { 
1039      if (this.exclude == null)
1040        this.exclude = new ArrayList<StringType>();
1041      return this.exclude;
1042    }
1043
1044    public boolean hasExclude() { 
1045      if (this.exclude == null)
1046        return false;
1047      for (StringType item : this.exclude)
1048        if (!item.isEmpty())
1049          return true;
1050      return false;
1051    }
1052
1053    /**
1054     * @return {@link #exclude} (Names of resource types to exclude.)
1055     */
1056    // syntactic sugar
1057    public StringType addExcludeElement() {//2 
1058      StringType t = new StringType();
1059      if (this.exclude == null)
1060        this.exclude = new ArrayList<StringType>();
1061      this.exclude.add(t);
1062      return t;
1063    }
1064
1065    /**
1066     * @param value {@link #exclude} (Names of resource types to exclude.)
1067     */
1068    public ProcessRequest addExclude(String value) { //1
1069      StringType t = new StringType();
1070      t.setValue(value);
1071      if (this.exclude == null)
1072        this.exclude = new ArrayList<StringType>();
1073      this.exclude.add(t);
1074      return this;
1075    }
1076
1077    /**
1078     * @param value {@link #exclude} (Names of resource types to exclude.)
1079     */
1080    public boolean hasExclude(String value) { 
1081      if (this.exclude == null)
1082        return false;
1083      for (StringType v : this.exclude)
1084        if (v.equals(value)) // string
1085          return true;
1086      return false;
1087    }
1088
1089    /**
1090     * @return {@link #period} (A period of time during which the fulfilling resources would have been created.)
1091     */
1092    public Period getPeriod() { 
1093      if (this.period == null)
1094        if (Configuration.errorOnAutoCreate())
1095          throw new Error("Attempt to auto-create ProcessRequest.period");
1096        else if (Configuration.doAutoCreate())
1097          this.period = new Period(); // cc
1098      return this.period;
1099    }
1100
1101    public boolean hasPeriod() { 
1102      return this.period != null && !this.period.isEmpty();
1103    }
1104
1105    /**
1106     * @param value {@link #period} (A period of time during which the fulfilling resources would have been created.)
1107     */
1108    public ProcessRequest setPeriod(Period value) { 
1109      this.period = value;
1110      return this;
1111    }
1112
1113      protected void listChildren(List<Property> childrenList) {
1114        super.listChildren(childrenList);
1115        childrenList.add(new Property("action", "code", "The type of processing action being requested, for example Reversal, Readjudication, StatusRequest,PendedRequest.", 0, java.lang.Integer.MAX_VALUE, action));
1116        childrenList.add(new Property("identifier", "Identifier", "The ProcessRequest business identifier.", 0, java.lang.Integer.MAX_VALUE, identifier));
1117        childrenList.add(new Property("ruleset", "Coding", "The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.", 0, java.lang.Integer.MAX_VALUE, ruleset));
1118        childrenList.add(new Property("originalRuleset", "Coding", "The style (standard) and version of the original material which was converted into this resource.", 0, java.lang.Integer.MAX_VALUE, originalRuleset));
1119        childrenList.add(new Property("created", "dateTime", "The date when this resource was created.", 0, java.lang.Integer.MAX_VALUE, created));
1120        childrenList.add(new Property("target", "Reference(Organization)", "The organization which is the target of the request.", 0, java.lang.Integer.MAX_VALUE, target));
1121        childrenList.add(new Property("provider", "Reference(Practitioner)", "The practitioner who is responsible for the action specified in thise request.", 0, java.lang.Integer.MAX_VALUE, provider));
1122        childrenList.add(new Property("organization", "Reference(Organization)", "The organization which is responsible for the action speccified in thise request.", 0, java.lang.Integer.MAX_VALUE, organization));
1123        childrenList.add(new Property("request", "Reference(Any)", "Reference of resource which is the target or subject of this action.", 0, java.lang.Integer.MAX_VALUE, request));
1124        childrenList.add(new Property("response", "Reference(Any)", "Reference of a prior response to resource which is the target or subject of this action.", 0, java.lang.Integer.MAX_VALUE, response));
1125        childrenList.add(new Property("nullify", "boolean", "If true remove all history excluding audit.", 0, java.lang.Integer.MAX_VALUE, nullify));
1126        childrenList.add(new Property("reference", "string", "A reference to supply which authenticates the process.", 0, java.lang.Integer.MAX_VALUE, reference));
1127        childrenList.add(new Property("item", "", "List of top level items to be re-adjudicated, if none specified then the entire submission is re-adjudicated.", 0, java.lang.Integer.MAX_VALUE, item));
1128        childrenList.add(new Property("include", "string", "Names of resource types to include.", 0, java.lang.Integer.MAX_VALUE, include));
1129        childrenList.add(new Property("exclude", "string", "Names of resource types to exclude.", 0, java.lang.Integer.MAX_VALUE, exclude));
1130        childrenList.add(new Property("period", "Period", "A period of time during which the fulfilling resources would have been created.", 0, java.lang.Integer.MAX_VALUE, period));
1131      }
1132
1133      @Override
1134      public void setProperty(String name, Base value) throws FHIRException {
1135        if (name.equals("action"))
1136          this.action = new ActionListEnumFactory().fromType(value); // Enumeration<ActionList>
1137        else if (name.equals("identifier"))
1138          this.getIdentifier().add(castToIdentifier(value));
1139        else if (name.equals("ruleset"))
1140          this.ruleset = castToCoding(value); // Coding
1141        else if (name.equals("originalRuleset"))
1142          this.originalRuleset = castToCoding(value); // Coding
1143        else if (name.equals("created"))
1144          this.created = castToDateTime(value); // DateTimeType
1145        else if (name.equals("target"))
1146          this.target = castToReference(value); // Reference
1147        else if (name.equals("provider"))
1148          this.provider = castToReference(value); // Reference
1149        else if (name.equals("organization"))
1150          this.organization = castToReference(value); // Reference
1151        else if (name.equals("request"))
1152          this.request = castToReference(value); // Reference
1153        else if (name.equals("response"))
1154          this.response = castToReference(value); // Reference
1155        else if (name.equals("nullify"))
1156          this.nullify = castToBoolean(value); // BooleanType
1157        else if (name.equals("reference"))
1158          this.reference = castToString(value); // StringType
1159        else if (name.equals("item"))
1160          this.getItem().add((ItemsComponent) value);
1161        else if (name.equals("include"))
1162          this.getInclude().add(castToString(value));
1163        else if (name.equals("exclude"))
1164          this.getExclude().add(castToString(value));
1165        else if (name.equals("period"))
1166          this.period = castToPeriod(value); // Period
1167        else
1168          super.setProperty(name, value);
1169      }
1170
1171      @Override
1172      public Base addChild(String name) throws FHIRException {
1173        if (name.equals("action")) {
1174          throw new FHIRException("Cannot call addChild on a primitive type ProcessRequest.action");
1175        }
1176        else if (name.equals("identifier")) {
1177          return addIdentifier();
1178        }
1179        else if (name.equals("ruleset")) {
1180          this.ruleset = new Coding();
1181          return this.ruleset;
1182        }
1183        else if (name.equals("originalRuleset")) {
1184          this.originalRuleset = new Coding();
1185          return this.originalRuleset;
1186        }
1187        else if (name.equals("created")) {
1188          throw new FHIRException("Cannot call addChild on a primitive type ProcessRequest.created");
1189        }
1190        else if (name.equals("target")) {
1191          this.target = new Reference();
1192          return this.target;
1193        }
1194        else if (name.equals("provider")) {
1195          this.provider = new Reference();
1196          return this.provider;
1197        }
1198        else if (name.equals("organization")) {
1199          this.organization = new Reference();
1200          return this.organization;
1201        }
1202        else if (name.equals("request")) {
1203          this.request = new Reference();
1204          return this.request;
1205        }
1206        else if (name.equals("response")) {
1207          this.response = new Reference();
1208          return this.response;
1209        }
1210        else if (name.equals("nullify")) {
1211          throw new FHIRException("Cannot call addChild on a primitive type ProcessRequest.nullify");
1212        }
1213        else if (name.equals("reference")) {
1214          throw new FHIRException("Cannot call addChild on a primitive type ProcessRequest.reference");
1215        }
1216        else if (name.equals("item")) {
1217          return addItem();
1218        }
1219        else if (name.equals("include")) {
1220          throw new FHIRException("Cannot call addChild on a primitive type ProcessRequest.include");
1221        }
1222        else if (name.equals("exclude")) {
1223          throw new FHIRException("Cannot call addChild on a primitive type ProcessRequest.exclude");
1224        }
1225        else if (name.equals("period")) {
1226          this.period = new Period();
1227          return this.period;
1228        }
1229        else
1230          return super.addChild(name);
1231      }
1232
1233  public String fhirType() {
1234    return "ProcessRequest";
1235
1236  }
1237
1238      public ProcessRequest copy() {
1239        ProcessRequest dst = new ProcessRequest();
1240        copyValues(dst);
1241        dst.action = action == null ? null : action.copy();
1242        if (identifier != null) {
1243          dst.identifier = new ArrayList<Identifier>();
1244          for (Identifier i : identifier)
1245            dst.identifier.add(i.copy());
1246        };
1247        dst.ruleset = ruleset == null ? null : ruleset.copy();
1248        dst.originalRuleset = originalRuleset == null ? null : originalRuleset.copy();
1249        dst.created = created == null ? null : created.copy();
1250        dst.target = target == null ? null : target.copy();
1251        dst.provider = provider == null ? null : provider.copy();
1252        dst.organization = organization == null ? null : organization.copy();
1253        dst.request = request == null ? null : request.copy();
1254        dst.response = response == null ? null : response.copy();
1255        dst.nullify = nullify == null ? null : nullify.copy();
1256        dst.reference = reference == null ? null : reference.copy();
1257        if (item != null) {
1258          dst.item = new ArrayList<ItemsComponent>();
1259          for (ItemsComponent i : item)
1260            dst.item.add(i.copy());
1261        };
1262        if (include != null) {
1263          dst.include = new ArrayList<StringType>();
1264          for (StringType i : include)
1265            dst.include.add(i.copy());
1266        };
1267        if (exclude != null) {
1268          dst.exclude = new ArrayList<StringType>();
1269          for (StringType i : exclude)
1270            dst.exclude.add(i.copy());
1271        };
1272        dst.period = period == null ? null : period.copy();
1273        return dst;
1274      }
1275
1276      protected ProcessRequest typedCopy() {
1277        return copy();
1278      }
1279
1280      @Override
1281      public boolean equalsDeep(Base other) {
1282        if (!super.equalsDeep(other))
1283          return false;
1284        if (!(other instanceof ProcessRequest))
1285          return false;
1286        ProcessRequest o = (ProcessRequest) other;
1287        return compareDeep(action, o.action, true) && compareDeep(identifier, o.identifier, true) && compareDeep(ruleset, o.ruleset, true)
1288           && compareDeep(originalRuleset, o.originalRuleset, true) && compareDeep(created, o.created, true)
1289           && compareDeep(target, o.target, true) && compareDeep(provider, o.provider, true) && compareDeep(organization, o.organization, true)
1290           && compareDeep(request, o.request, true) && compareDeep(response, o.response, true) && compareDeep(nullify, o.nullify, true)
1291           && compareDeep(reference, o.reference, true) && compareDeep(item, o.item, true) && compareDeep(include, o.include, true)
1292           && compareDeep(exclude, o.exclude, true) && compareDeep(period, o.period, true);
1293      }
1294
1295      @Override
1296      public boolean equalsShallow(Base other) {
1297        if (!super.equalsShallow(other))
1298          return false;
1299        if (!(other instanceof ProcessRequest))
1300          return false;
1301        ProcessRequest o = (ProcessRequest) other;
1302        return compareValues(action, o.action, true) && compareValues(created, o.created, true) && compareValues(nullify, o.nullify, true)
1303           && compareValues(reference, o.reference, true) && compareValues(include, o.include, true) && compareValues(exclude, o.exclude, true)
1304          ;
1305      }
1306
1307      public boolean isEmpty() {
1308        return super.isEmpty() && (action == null || action.isEmpty()) && (identifier == null || identifier.isEmpty())
1309           && (ruleset == null || ruleset.isEmpty()) && (originalRuleset == null || originalRuleset.isEmpty())
1310           && (created == null || created.isEmpty()) && (target == null || target.isEmpty()) && (provider == null || provider.isEmpty())
1311           && (organization == null || organization.isEmpty()) && (request == null || request.isEmpty())
1312           && (response == null || response.isEmpty()) && (nullify == null || nullify.isEmpty()) && (reference == null || reference.isEmpty())
1313           && (item == null || item.isEmpty()) && (include == null || include.isEmpty()) && (exclude == null || exclude.isEmpty())
1314           && (period == null || period.isEmpty());
1315      }
1316
1317  @Override
1318  public ResourceType getResourceType() {
1319    return ResourceType.ProcessRequest;
1320   }
1321
1322  @SearchParamDefinition(name="identifier", path="ProcessRequest.identifier", description="The business identifier of the ProcessRequest", type="token" )
1323  public static final String SP_IDENTIFIER = "identifier";
1324  @SearchParamDefinition(name="provider", path="ProcessRequest.provider", description="The provider who regenerated this request", type="reference" )
1325  public static final String SP_PROVIDER = "provider";
1326  @SearchParamDefinition(name="organization", path="ProcessRequest.organization", description="The organization who generated this request", type="reference" )
1327  public static final String SP_ORGANIZATION = "organization";
1328  @SearchParamDefinition(name="action", path="ProcessRequest.action", description="The action requested by this resource", type="token" )
1329  public static final String SP_ACTION = "action";
1330
1331}