001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
033import java.util.ArrayList;
034import java.util.List;
035
036import org.hl7.fhir.exceptions.FHIRException;
037import org.hl7.fhir.utilities.Utilities;
038
039import ca.uhn.fhir.model.api.annotation.Child;
040import ca.uhn.fhir.model.api.annotation.Description;
041import ca.uhn.fhir.model.api.annotation.ResourceDef;
042import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
043
044/**
045 * The technical details of an endpoint that can be used for electronic
046 * services, such as for web services providing XDS.b or a REST endpoint for
047 * another FHIR server. This may include any security context information.
048 */
049@ResourceDef(name = "Endpoint", profile = "http://hl7.org/fhir/StructureDefinition/Endpoint")
050public class Endpoint extends DomainResource {
051
052  public enum EndpointStatus {
053    /**
054     * This endpoint is expected to be active and can be used.
055     */
056    ACTIVE,
057    /**
058     * This endpoint is temporarily unavailable.
059     */
060    SUSPENDED,
061    /**
062     * This endpoint has exceeded connectivity thresholds and is considered in an
063     * error state and should no longer be attempted to connect to until corrective
064     * action is taken.
065     */
066    ERROR,
067    /**
068     * This endpoint is no longer to be used.
069     */
070    OFF,
071    /**
072     * This instance should not have been part of this patient's medical record.
073     */
074    ENTEREDINERROR,
075    /**
076     * This endpoint is not intended for production usage.
077     */
078    TEST,
079    /**
080     * added to help the parsers with the generic types
081     */
082    NULL;
083
084    public static EndpointStatus fromCode(String codeString) throws FHIRException {
085      if (codeString == null || "".equals(codeString))
086        return null;
087      if ("active".equals(codeString))
088        return ACTIVE;
089      if ("suspended".equals(codeString))
090        return SUSPENDED;
091      if ("error".equals(codeString))
092        return ERROR;
093      if ("off".equals(codeString))
094        return OFF;
095      if ("entered-in-error".equals(codeString))
096        return ENTEREDINERROR;
097      if ("test".equals(codeString))
098        return TEST;
099      if (Configuration.isAcceptInvalidEnums())
100        return null;
101      else
102        throw new FHIRException("Unknown EndpointStatus code '" + codeString + "'");
103    }
104
105    public String toCode() {
106      switch (this) {
107      case ACTIVE:
108        return "active";
109      case SUSPENDED:
110        return "suspended";
111      case ERROR:
112        return "error";
113      case OFF:
114        return "off";
115      case ENTEREDINERROR:
116        return "entered-in-error";
117      case TEST:
118        return "test";
119      case NULL:
120        return null;
121      default:
122        return "?";
123      }
124    }
125
126    public String getSystem() {
127      switch (this) {
128      case ACTIVE:
129        return "http://hl7.org/fhir/endpoint-status";
130      case SUSPENDED:
131        return "http://hl7.org/fhir/endpoint-status";
132      case ERROR:
133        return "http://hl7.org/fhir/endpoint-status";
134      case OFF:
135        return "http://hl7.org/fhir/endpoint-status";
136      case ENTEREDINERROR:
137        return "http://hl7.org/fhir/endpoint-status";
138      case TEST:
139        return "http://hl7.org/fhir/endpoint-status";
140      case NULL:
141        return null;
142      default:
143        return "?";
144      }
145    }
146
147    public String getDefinition() {
148      switch (this) {
149      case ACTIVE:
150        return "This endpoint is expected to be active and can be used.";
151      case SUSPENDED:
152        return "This endpoint is temporarily unavailable.";
153      case ERROR:
154        return "This endpoint has exceeded connectivity thresholds and is considered in an error state and should no longer be attempted to connect to until corrective action is taken.";
155      case OFF:
156        return "This endpoint is no longer to be used.";
157      case ENTEREDINERROR:
158        return "This instance should not have been part of this patient's medical record.";
159      case TEST:
160        return "This endpoint is not intended for production usage.";
161      case NULL:
162        return null;
163      default:
164        return "?";
165      }
166    }
167
168    public String getDisplay() {
169      switch (this) {
170      case ACTIVE:
171        return "Active";
172      case SUSPENDED:
173        return "Suspended";
174      case ERROR:
175        return "Error";
176      case OFF:
177        return "Off";
178      case ENTEREDINERROR:
179        return "Entered in error";
180      case TEST:
181        return "Test";
182      case NULL:
183        return null;
184      default:
185        return "?";
186      }
187    }
188  }
189
190  public static class EndpointStatusEnumFactory implements EnumFactory<EndpointStatus> {
191    public EndpointStatus fromCode(String codeString) throws IllegalArgumentException {
192      if (codeString == null || "".equals(codeString))
193        if (codeString == null || "".equals(codeString))
194          return null;
195      if ("active".equals(codeString))
196        return EndpointStatus.ACTIVE;
197      if ("suspended".equals(codeString))
198        return EndpointStatus.SUSPENDED;
199      if ("error".equals(codeString))
200        return EndpointStatus.ERROR;
201      if ("off".equals(codeString))
202        return EndpointStatus.OFF;
203      if ("entered-in-error".equals(codeString))
204        return EndpointStatus.ENTEREDINERROR;
205      if ("test".equals(codeString))
206        return EndpointStatus.TEST;
207      throw new IllegalArgumentException("Unknown EndpointStatus code '" + codeString + "'");
208    }
209
210    public Enumeration<EndpointStatus> fromType(PrimitiveType<?> code) throws FHIRException {
211      if (code == null)
212        return null;
213      if (code.isEmpty())
214        return new Enumeration<EndpointStatus>(this, EndpointStatus.NULL, code);
215      String codeString = code.asStringValue();
216      if (codeString == null || "".equals(codeString))
217        return new Enumeration<EndpointStatus>(this, EndpointStatus.NULL, code);
218      if ("active".equals(codeString))
219        return new Enumeration<EndpointStatus>(this, EndpointStatus.ACTIVE, code);
220      if ("suspended".equals(codeString))
221        return new Enumeration<EndpointStatus>(this, EndpointStatus.SUSPENDED, code);
222      if ("error".equals(codeString))
223        return new Enumeration<EndpointStatus>(this, EndpointStatus.ERROR, code);
224      if ("off".equals(codeString))
225        return new Enumeration<EndpointStatus>(this, EndpointStatus.OFF, code);
226      if ("entered-in-error".equals(codeString))
227        return new Enumeration<EndpointStatus>(this, EndpointStatus.ENTEREDINERROR, code);
228      if ("test".equals(codeString))
229        return new Enumeration<EndpointStatus>(this, EndpointStatus.TEST, code);
230      throw new FHIRException("Unknown EndpointStatus code '" + codeString + "'");
231    }
232
233    public String toCode(EndpointStatus code) {
234      if (code == EndpointStatus.ACTIVE)
235        return "active";
236      if (code == EndpointStatus.SUSPENDED)
237        return "suspended";
238      if (code == EndpointStatus.ERROR)
239        return "error";
240      if (code == EndpointStatus.OFF)
241        return "off";
242      if (code == EndpointStatus.ENTEREDINERROR)
243        return "entered-in-error";
244      if (code == EndpointStatus.TEST)
245        return "test";
246      return "?";
247    }
248
249    public String toSystem(EndpointStatus code) {
250      return code.getSystem();
251    }
252  }
253
254  /**
255   * Identifier for the organization that is used to identify the endpoint across
256   * multiple disparate systems.
257   */
258  @Child(name = "identifier", type = {
259      Identifier.class }, order = 0, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
260  @Description(shortDefinition = "Identifies this endpoint across multiple systems", formalDefinition = "Identifier for the organization that is used to identify the endpoint across multiple disparate systems.")
261  protected List<Identifier> identifier;
262
263  /**
264   * active | suspended | error | off | test.
265   */
266  @Child(name = "status", type = { CodeType.class }, order = 1, min = 1, max = 1, modifier = true, summary = true)
267  @Description(shortDefinition = "active | suspended | error | off | entered-in-error | test", formalDefinition = "active | suspended | error | off | test.")
268  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/endpoint-status")
269  protected Enumeration<EndpointStatus> status;
270
271  /**
272   * A coded value that represents the technical details of the usage of this
273   * endpoint, such as what WSDLs should be used in what way. (e.g.
274   * XDS.b/DICOM/cds-hook).
275   */
276  @Child(name = "connectionType", type = {
277      Coding.class }, order = 2, min = 1, max = 1, modifier = false, summary = true)
278  @Description(shortDefinition = "Protocol/Profile/Standard to be used with this endpoint connection", formalDefinition = "A coded value that represents the technical details of the usage of this endpoint, such as what WSDLs should be used in what way. (e.g. XDS.b/DICOM/cds-hook).")
279  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/endpoint-connection-type")
280  protected Coding connectionType;
281
282  /**
283   * A friendly name that this endpoint can be referred to with.
284   */
285  @Child(name = "name", type = { StringType.class }, order = 3, min = 0, max = 1, modifier = false, summary = true)
286  @Description(shortDefinition = "A name that this endpoint can be identified by", formalDefinition = "A friendly name that this endpoint can be referred to with.")
287  protected StringType name;
288
289  /**
290   * The organization that manages this endpoint (even if technically another
291   * organization is hosting this in the cloud, it is the organization associated
292   * with the data).
293   */
294  @Child(name = "managingOrganization", type = {
295      Organization.class }, order = 4, min = 0, max = 1, modifier = false, summary = true)
296  @Description(shortDefinition = "Organization that manages this endpoint (might not be the organization that exposes the endpoint)", formalDefinition = "The organization that manages this endpoint (even if technically another organization is hosting this in the cloud, it is the organization associated with the data).")
297  protected Reference managingOrganization;
298
299  /**
300   * The actual object that is the target of the reference (The organization that
301   * manages this endpoint (even if technically another organization is hosting
302   * this in the cloud, it is the organization associated with the data).)
303   */
304  protected Organization managingOrganizationTarget;
305
306  /**
307   * Contact details for a human to contact about the subscription. The primary
308   * use of this for system administrator troubleshooting.
309   */
310  @Child(name = "contact", type = {
311      ContactPoint.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
312  @Description(shortDefinition = "Contact details for source (e.g. troubleshooting)", formalDefinition = "Contact details for a human to contact about the subscription. The primary use of this for system administrator troubleshooting.")
313  protected List<ContactPoint> contact;
314
315  /**
316   * The interval during which the endpoint is expected to be operational.
317   */
318  @Child(name = "period", type = { Period.class }, order = 6, min = 0, max = 1, modifier = false, summary = true)
319  @Description(shortDefinition = "Interval the endpoint is expected to be operational", formalDefinition = "The interval during which the endpoint is expected to be operational.")
320  protected Period period;
321
322  /**
323   * The payload type describes the acceptable content that can be communicated on
324   * the endpoint.
325   */
326  @Child(name = "payloadType", type = {
327      CodeableConcept.class }, order = 7, min = 1, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
328  @Description(shortDefinition = "The type of content that may be used at this endpoint (e.g. XDS Discharge summaries)", formalDefinition = "The payload type describes the acceptable content that can be communicated on the endpoint.")
329  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/endpoint-payload-type")
330  protected List<CodeableConcept> payloadType;
331
332  /**
333   * The mime type to send the payload in - e.g. application/fhir+xml,
334   * application/fhir+json. If the mime type is not specified, then the sender
335   * could send any content (including no content depending on the
336   * connectionType).
337   */
338  @Child(name = "payloadMimeType", type = {
339      CodeType.class }, order = 8, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
340  @Description(shortDefinition = "Mimetype to send. If not specified, the content could be anything (including no payload, if the connectionType defined this)", formalDefinition = "The mime type to send the payload in - e.g. application/fhir+xml, application/fhir+json. If the mime type is not specified, then the sender could send any content (including no content depending on the connectionType).")
341  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/mimetypes")
342  protected List<CodeType> payloadMimeType;
343
344  /**
345   * The uri that describes the actual end-point to connect to.
346   */
347  @Child(name = "address", type = { UrlType.class }, order = 9, min = 1, max = 1, modifier = false, summary = true)
348  @Description(shortDefinition = "The technical base address for connecting to this endpoint", formalDefinition = "The uri that describes the actual end-point to connect to.")
349  protected UrlType address;
350
351  /**
352   * Additional headers / information to send as part of the notification.
353   */
354  @Child(name = "header", type = {
355      StringType.class }, order = 10, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
356  @Description(shortDefinition = "Usage depends on the channel type", formalDefinition = "Additional headers / information to send as part of the notification.")
357  protected List<StringType> header;
358
359  private static final long serialVersionUID = 755181080L;
360
361  /**
362   * Constructor
363   */
364  public Endpoint() {
365    super();
366  }
367
368  /**
369   * Constructor
370   */
371  public Endpoint(Enumeration<EndpointStatus> status, Coding connectionType, UrlType address) {
372    super();
373    this.status = status;
374    this.connectionType = connectionType;
375    this.address = address;
376  }
377
378  /**
379   * @return {@link #identifier} (Identifier for the organization that is used to
380   *         identify the endpoint across multiple disparate systems.)
381   */
382  public List<Identifier> getIdentifier() {
383    if (this.identifier == null)
384      this.identifier = new ArrayList<Identifier>();
385    return this.identifier;
386  }
387
388  /**
389   * @return Returns a reference to <code>this</code> for easy method chaining
390   */
391  public Endpoint setIdentifier(List<Identifier> theIdentifier) {
392    this.identifier = theIdentifier;
393    return this;
394  }
395
396  public boolean hasIdentifier() {
397    if (this.identifier == null)
398      return false;
399    for (Identifier item : this.identifier)
400      if (!item.isEmpty())
401        return true;
402    return false;
403  }
404
405  public Identifier addIdentifier() { // 3
406    Identifier t = new Identifier();
407    if (this.identifier == null)
408      this.identifier = new ArrayList<Identifier>();
409    this.identifier.add(t);
410    return t;
411  }
412
413  public Endpoint addIdentifier(Identifier t) { // 3
414    if (t == null)
415      return this;
416    if (this.identifier == null)
417      this.identifier = new ArrayList<Identifier>();
418    this.identifier.add(t);
419    return this;
420  }
421
422  /**
423   * @return The first repetition of repeating field {@link #identifier}, creating
424   *         it if it does not already exist
425   */
426  public Identifier getIdentifierFirstRep() {
427    if (getIdentifier().isEmpty()) {
428      addIdentifier();
429    }
430    return getIdentifier().get(0);
431  }
432
433  /**
434   * @return {@link #status} (active | suspended | error | off | test.). This is
435   *         the underlying object with id, value and extensions. The accessor
436   *         "getStatus" gives direct access to the value
437   */
438  public Enumeration<EndpointStatus> getStatusElement() {
439    if (this.status == null)
440      if (Configuration.errorOnAutoCreate())
441        throw new Error("Attempt to auto-create Endpoint.status");
442      else if (Configuration.doAutoCreate())
443        this.status = new Enumeration<EndpointStatus>(new EndpointStatusEnumFactory()); // bb
444    return this.status;
445  }
446
447  public boolean hasStatusElement() {
448    return this.status != null && !this.status.isEmpty();
449  }
450
451  public boolean hasStatus() {
452    return this.status != null && !this.status.isEmpty();
453  }
454
455  /**
456   * @param value {@link #status} (active | suspended | error | off | test.). This
457   *              is the underlying object with id, value and extensions. The
458   *              accessor "getStatus" gives direct access to the value
459   */
460  public Endpoint setStatusElement(Enumeration<EndpointStatus> value) {
461    this.status = value;
462    return this;
463  }
464
465  /**
466   * @return active | suspended | error | off | test.
467   */
468  public EndpointStatus getStatus() {
469    return this.status == null ? null : this.status.getValue();
470  }
471
472  /**
473   * @param value active | suspended | error | off | test.
474   */
475  public Endpoint setStatus(EndpointStatus value) {
476    if (this.status == null)
477      this.status = new Enumeration<EndpointStatus>(new EndpointStatusEnumFactory());
478    this.status.setValue(value);
479    return this;
480  }
481
482  /**
483   * @return {@link #connectionType} (A coded value that represents the technical
484   *         details of the usage of this endpoint, such as what WSDLs should be
485   *         used in what way. (e.g. XDS.b/DICOM/cds-hook).)
486   */
487  public Coding getConnectionType() {
488    if (this.connectionType == null)
489      if (Configuration.errorOnAutoCreate())
490        throw new Error("Attempt to auto-create Endpoint.connectionType");
491      else if (Configuration.doAutoCreate())
492        this.connectionType = new Coding(); // cc
493    return this.connectionType;
494  }
495
496  public boolean hasConnectionType() {
497    return this.connectionType != null && !this.connectionType.isEmpty();
498  }
499
500  /**
501   * @param value {@link #connectionType} (A coded value that represents the
502   *              technical details of the usage of this endpoint, such as what
503   *              WSDLs should be used in what way. (e.g. XDS.b/DICOM/cds-hook).)
504   */
505  public Endpoint setConnectionType(Coding value) {
506    this.connectionType = value;
507    return this;
508  }
509
510  /**
511   * @return {@link #name} (A friendly name that this endpoint can be referred to
512   *         with.). This is the underlying object with id, value and extensions.
513   *         The accessor "getName" gives direct access to the value
514   */
515  public StringType getNameElement() {
516    if (this.name == null)
517      if (Configuration.errorOnAutoCreate())
518        throw new Error("Attempt to auto-create Endpoint.name");
519      else if (Configuration.doAutoCreate())
520        this.name = new StringType(); // bb
521    return this.name;
522  }
523
524  public boolean hasNameElement() {
525    return this.name != null && !this.name.isEmpty();
526  }
527
528  public boolean hasName() {
529    return this.name != null && !this.name.isEmpty();
530  }
531
532  /**
533   * @param value {@link #name} (A friendly name that this endpoint can be
534   *              referred to with.). This is the underlying object with id, value
535   *              and extensions. The accessor "getName" gives direct access to
536   *              the value
537   */
538  public Endpoint setNameElement(StringType value) {
539    this.name = value;
540    return this;
541  }
542
543  /**
544   * @return A friendly name that this endpoint can be referred to with.
545   */
546  public String getName() {
547    return this.name == null ? null : this.name.getValue();
548  }
549
550  /**
551   * @param value A friendly name that this endpoint can be referred to with.
552   */
553  public Endpoint setName(String value) {
554    if (Utilities.noString(value))
555      this.name = null;
556    else {
557      if (this.name == null)
558        this.name = new StringType();
559      this.name.setValue(value);
560    }
561    return this;
562  }
563
564  /**
565   * @return {@link #managingOrganization} (The organization that manages this
566   *         endpoint (even if technically another organization is hosting this in
567   *         the cloud, it is the organization associated with the data).)
568   */
569  public Reference getManagingOrganization() {
570    if (this.managingOrganization == null)
571      if (Configuration.errorOnAutoCreate())
572        throw new Error("Attempt to auto-create Endpoint.managingOrganization");
573      else if (Configuration.doAutoCreate())
574        this.managingOrganization = new Reference(); // cc
575    return this.managingOrganization;
576  }
577
578  public boolean hasManagingOrganization() {
579    return this.managingOrganization != null && !this.managingOrganization.isEmpty();
580  }
581
582  /**
583   * @param value {@link #managingOrganization} (The organization that manages
584   *              this endpoint (even if technically another organization is
585   *              hosting this in the cloud, it is the organization associated
586   *              with the data).)
587   */
588  public Endpoint setManagingOrganization(Reference value) {
589    this.managingOrganization = value;
590    return this;
591  }
592
593  /**
594   * @return {@link #managingOrganization} The actual object that is the target of
595   *         the reference. The reference library doesn't populate this, but you
596   *         can use it to hold the resource if you resolve it. (The organization
597   *         that manages this endpoint (even if technically another organization
598   *         is hosting this in the cloud, it is the organization associated with
599   *         the data).)
600   */
601  public Organization getManagingOrganizationTarget() {
602    if (this.managingOrganizationTarget == null)
603      if (Configuration.errorOnAutoCreate())
604        throw new Error("Attempt to auto-create Endpoint.managingOrganization");
605      else if (Configuration.doAutoCreate())
606        this.managingOrganizationTarget = new Organization(); // aa
607    return this.managingOrganizationTarget;
608  }
609
610  /**
611   * @param value {@link #managingOrganization} The actual object that is the
612   *              target of the reference. The reference library doesn't use
613   *              these, but you can use it to hold the resource if you resolve
614   *              it. (The organization that manages this endpoint (even if
615   *              technically another organization is hosting this in the cloud,
616   *              it is the organization associated with the data).)
617   */
618  public Endpoint setManagingOrganizationTarget(Organization value) {
619    this.managingOrganizationTarget = value;
620    return this;
621  }
622
623  /**
624   * @return {@link #contact} (Contact details for a human to contact about the
625   *         subscription. The primary use of this for system administrator
626   *         troubleshooting.)
627   */
628  public List<ContactPoint> getContact() {
629    if (this.contact == null)
630      this.contact = new ArrayList<ContactPoint>();
631    return this.contact;
632  }
633
634  /**
635   * @return Returns a reference to <code>this</code> for easy method chaining
636   */
637  public Endpoint setContact(List<ContactPoint> theContact) {
638    this.contact = theContact;
639    return this;
640  }
641
642  public boolean hasContact() {
643    if (this.contact == null)
644      return false;
645    for (ContactPoint item : this.contact)
646      if (!item.isEmpty())
647        return true;
648    return false;
649  }
650
651  public ContactPoint addContact() { // 3
652    ContactPoint t = new ContactPoint();
653    if (this.contact == null)
654      this.contact = new ArrayList<ContactPoint>();
655    this.contact.add(t);
656    return t;
657  }
658
659  public Endpoint addContact(ContactPoint t) { // 3
660    if (t == null)
661      return this;
662    if (this.contact == null)
663      this.contact = new ArrayList<ContactPoint>();
664    this.contact.add(t);
665    return this;
666  }
667
668  /**
669   * @return The first repetition of repeating field {@link #contact}, creating it
670   *         if it does not already exist
671   */
672  public ContactPoint getContactFirstRep() {
673    if (getContact().isEmpty()) {
674      addContact();
675    }
676    return getContact().get(0);
677  }
678
679  /**
680   * @return {@link #period} (The interval during which the endpoint is expected
681   *         to be operational.)
682   */
683  public Period getPeriod() {
684    if (this.period == null)
685      if (Configuration.errorOnAutoCreate())
686        throw new Error("Attempt to auto-create Endpoint.period");
687      else if (Configuration.doAutoCreate())
688        this.period = new Period(); // cc
689    return this.period;
690  }
691
692  public boolean hasPeriod() {
693    return this.period != null && !this.period.isEmpty();
694  }
695
696  /**
697   * @param value {@link #period} (The interval during which the endpoint is
698   *              expected to be operational.)
699   */
700  public Endpoint setPeriod(Period value) {
701    this.period = value;
702    return this;
703  }
704
705  /**
706   * @return {@link #payloadType} (The payload type describes the acceptable
707   *         content that can be communicated on the endpoint.)
708   */
709  public List<CodeableConcept> getPayloadType() {
710    if (this.payloadType == null)
711      this.payloadType = new ArrayList<CodeableConcept>();
712    return this.payloadType;
713  }
714
715  /**
716   * @return Returns a reference to <code>this</code> for easy method chaining
717   */
718  public Endpoint setPayloadType(List<CodeableConcept> thePayloadType) {
719    this.payloadType = thePayloadType;
720    return this;
721  }
722
723  public boolean hasPayloadType() {
724    if (this.payloadType == null)
725      return false;
726    for (CodeableConcept item : this.payloadType)
727      if (!item.isEmpty())
728        return true;
729    return false;
730  }
731
732  public CodeableConcept addPayloadType() { // 3
733    CodeableConcept t = new CodeableConcept();
734    if (this.payloadType == null)
735      this.payloadType = new ArrayList<CodeableConcept>();
736    this.payloadType.add(t);
737    return t;
738  }
739
740  public Endpoint addPayloadType(CodeableConcept t) { // 3
741    if (t == null)
742      return this;
743    if (this.payloadType == null)
744      this.payloadType = new ArrayList<CodeableConcept>();
745    this.payloadType.add(t);
746    return this;
747  }
748
749  /**
750   * @return The first repetition of repeating field {@link #payloadType},
751   *         creating it if it does not already exist
752   */
753  public CodeableConcept getPayloadTypeFirstRep() {
754    if (getPayloadType().isEmpty()) {
755      addPayloadType();
756    }
757    return getPayloadType().get(0);
758  }
759
760  /**
761   * @return {@link #payloadMimeType} (The mime type to send the payload in - e.g.
762   *         application/fhir+xml, application/fhir+json. If the mime type is not
763   *         specified, then the sender could send any content (including no
764   *         content depending on the connectionType).)
765   */
766  public List<CodeType> getPayloadMimeType() {
767    if (this.payloadMimeType == null)
768      this.payloadMimeType = new ArrayList<CodeType>();
769    return this.payloadMimeType;
770  }
771
772  /**
773   * @return Returns a reference to <code>this</code> for easy method chaining
774   */
775  public Endpoint setPayloadMimeType(List<CodeType> thePayloadMimeType) {
776    this.payloadMimeType = thePayloadMimeType;
777    return this;
778  }
779
780  public boolean hasPayloadMimeType() {
781    if (this.payloadMimeType == null)
782      return false;
783    for (CodeType item : this.payloadMimeType)
784      if (!item.isEmpty())
785        return true;
786    return false;
787  }
788
789  /**
790   * @return {@link #payloadMimeType} (The mime type to send the payload in - e.g.
791   *         application/fhir+xml, application/fhir+json. If the mime type is not
792   *         specified, then the sender could send any content (including no
793   *         content depending on the connectionType).)
794   */
795  public CodeType addPayloadMimeTypeElement() {// 2
796    CodeType t = new CodeType();
797    if (this.payloadMimeType == null)
798      this.payloadMimeType = new ArrayList<CodeType>();
799    this.payloadMimeType.add(t);
800    return t;
801  }
802
803  /**
804   * @param value {@link #payloadMimeType} (The mime type to send the payload in -
805   *              e.g. application/fhir+xml, application/fhir+json. If the mime
806   *              type is not specified, then the sender could send any content
807   *              (including no content depending on the connectionType).)
808   */
809  public Endpoint addPayloadMimeType(String value) { // 1
810    CodeType t = new CodeType();
811    t.setValue(value);
812    if (this.payloadMimeType == null)
813      this.payloadMimeType = new ArrayList<CodeType>();
814    this.payloadMimeType.add(t);
815    return this;
816  }
817
818  /**
819   * @param value {@link #payloadMimeType} (The mime type to send the payload in -
820   *              e.g. application/fhir+xml, application/fhir+json. If the mime
821   *              type is not specified, then the sender could send any content
822   *              (including no content depending on the connectionType).)
823   */
824  public boolean hasPayloadMimeType(String value) {
825    if (this.payloadMimeType == null)
826      return false;
827    for (CodeType v : this.payloadMimeType)
828      if (v.getValue().equals(value)) // code
829        return true;
830    return false;
831  }
832
833  /**
834   * @return {@link #address} (The uri that describes the actual end-point to
835   *         connect to.). This is the underlying object with id, value and
836   *         extensions. The accessor "getAddress" gives direct access to the
837   *         value
838   */
839  public UrlType getAddressElement() {
840    if (this.address == null)
841      if (Configuration.errorOnAutoCreate())
842        throw new Error("Attempt to auto-create Endpoint.address");
843      else if (Configuration.doAutoCreate())
844        this.address = new UrlType(); // bb
845    return this.address;
846  }
847
848  public boolean hasAddressElement() {
849    return this.address != null && !this.address.isEmpty();
850  }
851
852  public boolean hasAddress() {
853    return this.address != null && !this.address.isEmpty();
854  }
855
856  /**
857   * @param value {@link #address} (The uri that describes the actual end-point to
858   *              connect to.). This is the underlying object with id, value and
859   *              extensions. The accessor "getAddress" gives direct access to the
860   *              value
861   */
862  public Endpoint setAddressElement(UrlType value) {
863    this.address = value;
864    return this;
865  }
866
867  /**
868   * @return The uri that describes the actual end-point to connect to.
869   */
870  public String getAddress() {
871    return this.address == null ? null : this.address.getValue();
872  }
873
874  /**
875   * @param value The uri that describes the actual end-point to connect to.
876   */
877  public Endpoint setAddress(String value) {
878    if (this.address == null)
879      this.address = new UrlType();
880    this.address.setValue(value);
881    return this;
882  }
883
884  /**
885   * @return {@link #header} (Additional headers / information to send as part of
886   *         the notification.)
887   */
888  public List<StringType> getHeader() {
889    if (this.header == null)
890      this.header = new ArrayList<StringType>();
891    return this.header;
892  }
893
894  /**
895   * @return Returns a reference to <code>this</code> for easy method chaining
896   */
897  public Endpoint setHeader(List<StringType> theHeader) {
898    this.header = theHeader;
899    return this;
900  }
901
902  public boolean hasHeader() {
903    if (this.header == null)
904      return false;
905    for (StringType item : this.header)
906      if (!item.isEmpty())
907        return true;
908    return false;
909  }
910
911  /**
912   * @return {@link #header} (Additional headers / information to send as part of
913   *         the notification.)
914   */
915  public StringType addHeaderElement() {// 2
916    StringType t = new StringType();
917    if (this.header == null)
918      this.header = new ArrayList<StringType>();
919    this.header.add(t);
920    return t;
921  }
922
923  /**
924   * @param value {@link #header} (Additional headers / information to send as
925   *              part of the notification.)
926   */
927  public Endpoint addHeader(String value) { // 1
928    StringType t = new StringType();
929    t.setValue(value);
930    if (this.header == null)
931      this.header = new ArrayList<StringType>();
932    this.header.add(t);
933    return this;
934  }
935
936  /**
937   * @param value {@link #header} (Additional headers / information to send as
938   *              part of the notification.)
939   */
940  public boolean hasHeader(String value) {
941    if (this.header == null)
942      return false;
943    for (StringType v : this.header)
944      if (v.getValue().equals(value)) // string
945        return true;
946    return false;
947  }
948
949  protected void listChildren(List<Property> children) {
950    super.listChildren(children);
951    children.add(new Property("identifier", "Identifier",
952        "Identifier for the organization that is used to identify the endpoint across multiple disparate systems.", 0,
953        java.lang.Integer.MAX_VALUE, identifier));
954    children.add(new Property("status", "code", "active | suspended | error | off | test.", 0, 1, status));
955    children.add(new Property("connectionType", "Coding",
956        "A coded value that represents the technical details of the usage of this endpoint, such as what WSDLs should be used in what way. (e.g. XDS.b/DICOM/cds-hook).",
957        0, 1, connectionType));
958    children
959        .add(new Property("name", "string", "A friendly name that this endpoint can be referred to with.", 0, 1, name));
960    children.add(new Property("managingOrganization", "Reference(Organization)",
961        "The organization that manages this endpoint (even if technically another organization is hosting this in the cloud, it is the organization associated with the data).",
962        0, 1, managingOrganization));
963    children.add(new Property("contact", "ContactPoint",
964        "Contact details for a human to contact about the subscription. The primary use of this for system administrator troubleshooting.",
965        0, java.lang.Integer.MAX_VALUE, contact));
966    children.add(new Property("period", "Period",
967        "The interval during which the endpoint is expected to be operational.", 0, 1, period));
968    children.add(new Property("payloadType", "CodeableConcept",
969        "The payload type describes the acceptable content that can be communicated on the endpoint.", 0,
970        java.lang.Integer.MAX_VALUE, payloadType));
971    children.add(new Property("payloadMimeType", "code",
972        "The mime type to send the payload in - e.g. application/fhir+xml, application/fhir+json. If the mime type is not specified, then the sender could send any content (including no content depending on the connectionType).",
973        0, java.lang.Integer.MAX_VALUE, payloadMimeType));
974    children.add(
975        new Property("address", "url", "The uri that describes the actual end-point to connect to.", 0, 1, address));
976    children
977        .add(new Property("header", "string", "Additional headers / information to send as part of the notification.",
978            0, java.lang.Integer.MAX_VALUE, header));
979  }
980
981  @Override
982  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
983    switch (_hash) {
984    case -1618432855:
985      /* identifier */ return new Property("identifier", "Identifier",
986          "Identifier for the organization that is used to identify the endpoint across multiple disparate systems.", 0,
987          java.lang.Integer.MAX_VALUE, identifier);
988    case -892481550:
989      /* status */ return new Property("status", "code", "active | suspended | error | off | test.", 0, 1, status);
990    case 1270211384:
991      /* connectionType */ return new Property("connectionType", "Coding",
992          "A coded value that represents the technical details of the usage of this endpoint, such as what WSDLs should be used in what way. (e.g. XDS.b/DICOM/cds-hook).",
993          0, 1, connectionType);
994    case 3373707:
995      /* name */ return new Property("name", "string", "A friendly name that this endpoint can be referred to with.", 0,
996          1, name);
997    case -2058947787:
998      /* managingOrganization */ return new Property("managingOrganization", "Reference(Organization)",
999          "The organization that manages this endpoint (even if technically another organization is hosting this in the cloud, it is the organization associated with the data).",
1000          0, 1, managingOrganization);
1001    case 951526432:
1002      /* contact */ return new Property("contact", "ContactPoint",
1003          "Contact details for a human to contact about the subscription. The primary use of this for system administrator troubleshooting.",
1004          0, java.lang.Integer.MAX_VALUE, contact);
1005    case -991726143:
1006      /* period */ return new Property("period", "Period",
1007          "The interval during which the endpoint is expected to be operational.", 0, 1, period);
1008    case 909929960:
1009      /* payloadType */ return new Property("payloadType", "CodeableConcept",
1010          "The payload type describes the acceptable content that can be communicated on the endpoint.", 0,
1011          java.lang.Integer.MAX_VALUE, payloadType);
1012    case -1702836932:
1013      /* payloadMimeType */ return new Property("payloadMimeType", "code",
1014          "The mime type to send the payload in - e.g. application/fhir+xml, application/fhir+json. If the mime type is not specified, then the sender could send any content (including no content depending on the connectionType).",
1015          0, java.lang.Integer.MAX_VALUE, payloadMimeType);
1016    case -1147692044:
1017      /* address */ return new Property("address", "url", "The uri that describes the actual end-point to connect to.",
1018          0, 1, address);
1019    case -1221270899:
1020      /* header */ return new Property("header", "string",
1021          "Additional headers / information to send as part of the notification.", 0, java.lang.Integer.MAX_VALUE,
1022          header);
1023    default:
1024      return super.getNamedProperty(_hash, _name, _checkValid);
1025    }
1026
1027  }
1028
1029  @Override
1030  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1031    switch (hash) {
1032    case -1618432855:
1033      /* identifier */ return this.identifier == null ? new Base[0]
1034          : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1035    case -892481550:
1036      /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // Enumeration<EndpointStatus>
1037    case 1270211384:
1038      /* connectionType */ return this.connectionType == null ? new Base[0] : new Base[] { this.connectionType }; // Coding
1039    case 3373707:
1040      /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
1041    case -2058947787:
1042      /* managingOrganization */ return this.managingOrganization == null ? new Base[0]
1043          : new Base[] { this.managingOrganization }; // Reference
1044    case 951526432:
1045      /* contact */ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactPoint
1046    case -991726143:
1047      /* period */ return this.period == null ? new Base[0] : new Base[] { this.period }; // Period
1048    case 909929960:
1049      /* payloadType */ return this.payloadType == null ? new Base[0]
1050          : this.payloadType.toArray(new Base[this.payloadType.size()]); // CodeableConcept
1051    case -1702836932:
1052      /* payloadMimeType */ return this.payloadMimeType == null ? new Base[0]
1053          : this.payloadMimeType.toArray(new Base[this.payloadMimeType.size()]); // CodeType
1054    case -1147692044:
1055      /* address */ return this.address == null ? new Base[0] : new Base[] { this.address }; // UrlType
1056    case -1221270899:
1057      /* header */ return this.header == null ? new Base[0] : this.header.toArray(new Base[this.header.size()]); // StringType
1058    default:
1059      return super.getProperty(hash, name, checkValid);
1060    }
1061
1062  }
1063
1064  @Override
1065  public Base setProperty(int hash, String name, Base value) throws FHIRException {
1066    switch (hash) {
1067    case -1618432855: // identifier
1068      this.getIdentifier().add(castToIdentifier(value)); // Identifier
1069      return value;
1070    case -892481550: // status
1071      value = new EndpointStatusEnumFactory().fromType(castToCode(value));
1072      this.status = (Enumeration) value; // Enumeration<EndpointStatus>
1073      return value;
1074    case 1270211384: // connectionType
1075      this.connectionType = castToCoding(value); // Coding
1076      return value;
1077    case 3373707: // name
1078      this.name = castToString(value); // StringType
1079      return value;
1080    case -2058947787: // managingOrganization
1081      this.managingOrganization = castToReference(value); // Reference
1082      return value;
1083    case 951526432: // contact
1084      this.getContact().add(castToContactPoint(value)); // ContactPoint
1085      return value;
1086    case -991726143: // period
1087      this.period = castToPeriod(value); // Period
1088      return value;
1089    case 909929960: // payloadType
1090      this.getPayloadType().add(castToCodeableConcept(value)); // CodeableConcept
1091      return value;
1092    case -1702836932: // payloadMimeType
1093      this.getPayloadMimeType().add(castToCode(value)); // CodeType
1094      return value;
1095    case -1147692044: // address
1096      this.address = castToUrl(value); // UrlType
1097      return value;
1098    case -1221270899: // header
1099      this.getHeader().add(castToString(value)); // StringType
1100      return value;
1101    default:
1102      return super.setProperty(hash, name, value);
1103    }
1104
1105  }
1106
1107  @Override
1108  public Base setProperty(String name, Base value) throws FHIRException {
1109    if (name.equals("identifier")) {
1110      this.getIdentifier().add(castToIdentifier(value));
1111    } else if (name.equals("status")) {
1112      value = new EndpointStatusEnumFactory().fromType(castToCode(value));
1113      this.status = (Enumeration) value; // Enumeration<EndpointStatus>
1114    } else if (name.equals("connectionType")) {
1115      this.connectionType = castToCoding(value); // Coding
1116    } else if (name.equals("name")) {
1117      this.name = castToString(value); // StringType
1118    } else if (name.equals("managingOrganization")) {
1119      this.managingOrganization = castToReference(value); // Reference
1120    } else if (name.equals("contact")) {
1121      this.getContact().add(castToContactPoint(value));
1122    } else if (name.equals("period")) {
1123      this.period = castToPeriod(value); // Period
1124    } else if (name.equals("payloadType")) {
1125      this.getPayloadType().add(castToCodeableConcept(value));
1126    } else if (name.equals("payloadMimeType")) {
1127      this.getPayloadMimeType().add(castToCode(value));
1128    } else if (name.equals("address")) {
1129      this.address = castToUrl(value); // UrlType
1130    } else if (name.equals("header")) {
1131      this.getHeader().add(castToString(value));
1132    } else
1133      return super.setProperty(name, value);
1134    return value;
1135  }
1136
1137  @Override
1138  public Base makeProperty(int hash, String name) throws FHIRException {
1139    switch (hash) {
1140    case -1618432855:
1141      return addIdentifier();
1142    case -892481550:
1143      return getStatusElement();
1144    case 1270211384:
1145      return getConnectionType();
1146    case 3373707:
1147      return getNameElement();
1148    case -2058947787:
1149      return getManagingOrganization();
1150    case 951526432:
1151      return addContact();
1152    case -991726143:
1153      return getPeriod();
1154    case 909929960:
1155      return addPayloadType();
1156    case -1702836932:
1157      return addPayloadMimeTypeElement();
1158    case -1147692044:
1159      return getAddressElement();
1160    case -1221270899:
1161      return addHeaderElement();
1162    default:
1163      return super.makeProperty(hash, name);
1164    }
1165
1166  }
1167
1168  @Override
1169  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1170    switch (hash) {
1171    case -1618432855:
1172      /* identifier */ return new String[] { "Identifier" };
1173    case -892481550:
1174      /* status */ return new String[] { "code" };
1175    case 1270211384:
1176      /* connectionType */ return new String[] { "Coding" };
1177    case 3373707:
1178      /* name */ return new String[] { "string" };
1179    case -2058947787:
1180      /* managingOrganization */ return new String[] { "Reference" };
1181    case 951526432:
1182      /* contact */ return new String[] { "ContactPoint" };
1183    case -991726143:
1184      /* period */ return new String[] { "Period" };
1185    case 909929960:
1186      /* payloadType */ return new String[] { "CodeableConcept" };
1187    case -1702836932:
1188      /* payloadMimeType */ return new String[] { "code" };
1189    case -1147692044:
1190      /* address */ return new String[] { "url" };
1191    case -1221270899:
1192      /* header */ return new String[] { "string" };
1193    default:
1194      return super.getTypesForProperty(hash, name);
1195    }
1196
1197  }
1198
1199  @Override
1200  public Base addChild(String name) throws FHIRException {
1201    if (name.equals("identifier")) {
1202      return addIdentifier();
1203    } else if (name.equals("status")) {
1204      throw new FHIRException("Cannot call addChild on a singleton property Endpoint.status");
1205    } else if (name.equals("connectionType")) {
1206      this.connectionType = new Coding();
1207      return this.connectionType;
1208    } else if (name.equals("name")) {
1209      throw new FHIRException("Cannot call addChild on a singleton property Endpoint.name");
1210    } else if (name.equals("managingOrganization")) {
1211      this.managingOrganization = new Reference();
1212      return this.managingOrganization;
1213    } else if (name.equals("contact")) {
1214      return addContact();
1215    } else if (name.equals("period")) {
1216      this.period = new Period();
1217      return this.period;
1218    } else if (name.equals("payloadType")) {
1219      return addPayloadType();
1220    } else if (name.equals("payloadMimeType")) {
1221      throw new FHIRException("Cannot call addChild on a singleton property Endpoint.payloadMimeType");
1222    } else if (name.equals("address")) {
1223      throw new FHIRException("Cannot call addChild on a singleton property Endpoint.address");
1224    } else if (name.equals("header")) {
1225      throw new FHIRException("Cannot call addChild on a singleton property Endpoint.header");
1226    } else
1227      return super.addChild(name);
1228  }
1229
1230  public String fhirType() {
1231    return "Endpoint";
1232
1233  }
1234
1235  public Endpoint copy() {
1236    Endpoint dst = new Endpoint();
1237    copyValues(dst);
1238    return dst;
1239  }
1240
1241  public void copyValues(Endpoint dst) {
1242    super.copyValues(dst);
1243    if (identifier != null) {
1244      dst.identifier = new ArrayList<Identifier>();
1245      for (Identifier i : identifier)
1246        dst.identifier.add(i.copy());
1247    }
1248    ;
1249    dst.status = status == null ? null : status.copy();
1250    dst.connectionType = connectionType == null ? null : connectionType.copy();
1251    dst.name = name == null ? null : name.copy();
1252    dst.managingOrganization = managingOrganization == null ? null : managingOrganization.copy();
1253    if (contact != null) {
1254      dst.contact = new ArrayList<ContactPoint>();
1255      for (ContactPoint i : contact)
1256        dst.contact.add(i.copy());
1257    }
1258    ;
1259    dst.period = period == null ? null : period.copy();
1260    if (payloadType != null) {
1261      dst.payloadType = new ArrayList<CodeableConcept>();
1262      for (CodeableConcept i : payloadType)
1263        dst.payloadType.add(i.copy());
1264    }
1265    ;
1266    if (payloadMimeType != null) {
1267      dst.payloadMimeType = new ArrayList<CodeType>();
1268      for (CodeType i : payloadMimeType)
1269        dst.payloadMimeType.add(i.copy());
1270    }
1271    ;
1272    dst.address = address == null ? null : address.copy();
1273    if (header != null) {
1274      dst.header = new ArrayList<StringType>();
1275      for (StringType i : header)
1276        dst.header.add(i.copy());
1277    }
1278    ;
1279  }
1280
1281  protected Endpoint typedCopy() {
1282    return copy();
1283  }
1284
1285  @Override
1286  public boolean equalsDeep(Base other_) {
1287    if (!super.equalsDeep(other_))
1288      return false;
1289    if (!(other_ instanceof Endpoint))
1290      return false;
1291    Endpoint o = (Endpoint) other_;
1292    return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true)
1293        && compareDeep(connectionType, o.connectionType, true) && compareDeep(name, o.name, true)
1294        && compareDeep(managingOrganization, o.managingOrganization, true) && compareDeep(contact, o.contact, true)
1295        && compareDeep(period, o.period, true) && compareDeep(payloadType, o.payloadType, true)
1296        && compareDeep(payloadMimeType, o.payloadMimeType, true) && compareDeep(address, o.address, true)
1297        && compareDeep(header, o.header, true);
1298  }
1299
1300  @Override
1301  public boolean equalsShallow(Base other_) {
1302    if (!super.equalsShallow(other_))
1303      return false;
1304    if (!(other_ instanceof Endpoint))
1305      return false;
1306    Endpoint o = (Endpoint) other_;
1307    return compareValues(status, o.status, true) && compareValues(name, o.name, true)
1308        && compareValues(payloadMimeType, o.payloadMimeType, true) && compareValues(address, o.address, true)
1309        && compareValues(header, o.header, true);
1310  }
1311
1312  public boolean isEmpty() {
1313    return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, connectionType, name,
1314        managingOrganization, contact, period, payloadType, payloadMimeType, address, header);
1315  }
1316
1317  @Override
1318  public ResourceType getResourceType() {
1319    return ResourceType.Endpoint;
1320  }
1321
1322  /**
1323   * Search parameter: <b>payload-type</b>
1324   * <p>
1325   * Description: <b>The type of content that may be used at this endpoint (e.g.
1326   * XDS Discharge summaries)</b><br>
1327   * Type: <b>token</b><br>
1328   * Path: <b>Endpoint.payloadType</b><br>
1329   * </p>
1330   */
1331  @SearchParamDefinition(name = "payload-type", path = "Endpoint.payloadType", description = "The type of content that may be used at this endpoint (e.g. XDS Discharge summaries)", type = "token")
1332  public static final String SP_PAYLOAD_TYPE = "payload-type";
1333  /**
1334   * <b>Fluent Client</b> search parameter constant for <b>payload-type</b>
1335   * <p>
1336   * Description: <b>The type of content that may be used at this endpoint (e.g.
1337   * XDS Discharge summaries)</b><br>
1338   * Type: <b>token</b><br>
1339   * Path: <b>Endpoint.payloadType</b><br>
1340   * </p>
1341   */
1342  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PAYLOAD_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1343      SP_PAYLOAD_TYPE);
1344
1345  /**
1346   * Search parameter: <b>identifier</b>
1347   * <p>
1348   * Description: <b>Identifies this endpoint across multiple systems</b><br>
1349   * Type: <b>token</b><br>
1350   * Path: <b>Endpoint.identifier</b><br>
1351   * </p>
1352   */
1353  @SearchParamDefinition(name = "identifier", path = "Endpoint.identifier", description = "Identifies this endpoint across multiple systems", type = "token")
1354  public static final String SP_IDENTIFIER = "identifier";
1355  /**
1356   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1357   * <p>
1358   * Description: <b>Identifies this endpoint across multiple systems</b><br>
1359   * Type: <b>token</b><br>
1360   * Path: <b>Endpoint.identifier</b><br>
1361   * </p>
1362   */
1363  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1364      SP_IDENTIFIER);
1365
1366  /**
1367   * Search parameter: <b>organization</b>
1368   * <p>
1369   * Description: <b>The organization that is managing the endpoint</b><br>
1370   * Type: <b>reference</b><br>
1371   * Path: <b>Endpoint.managingOrganization</b><br>
1372   * </p>
1373   */
1374  @SearchParamDefinition(name = "organization", path = "Endpoint.managingOrganization", description = "The organization that is managing the endpoint", type = "reference", target = {
1375      Organization.class })
1376  public static final String SP_ORGANIZATION = "organization";
1377  /**
1378   * <b>Fluent Client</b> search parameter constant for <b>organization</b>
1379   * <p>
1380   * Description: <b>The organization that is managing the endpoint</b><br>
1381   * Type: <b>reference</b><br>
1382   * Path: <b>Endpoint.managingOrganization</b><br>
1383   * </p>
1384   */
1385  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1386      SP_ORGANIZATION);
1387
1388  /**
1389   * Constant for fluent queries to be used to add include statements. Specifies
1390   * the path value of "<b>Endpoint:organization</b>".
1391   */
1392  public static final ca.uhn.fhir.model.api.Include INCLUDE_ORGANIZATION = new ca.uhn.fhir.model.api.Include(
1393      "Endpoint:organization").toLocked();
1394
1395  /**
1396   * Search parameter: <b>connection-type</b>
1397   * <p>
1398   * Description: <b>Protocol/Profile/Standard to be used with this endpoint
1399   * connection</b><br>
1400   * Type: <b>token</b><br>
1401   * Path: <b>Endpoint.connectionType</b><br>
1402   * </p>
1403   */
1404  @SearchParamDefinition(name = "connection-type", path = "Endpoint.connectionType", description = "Protocol/Profile/Standard to be used with this endpoint connection", type = "token")
1405  public static final String SP_CONNECTION_TYPE = "connection-type";
1406  /**
1407   * <b>Fluent Client</b> search parameter constant for <b>connection-type</b>
1408   * <p>
1409   * Description: <b>Protocol/Profile/Standard to be used with this endpoint
1410   * connection</b><br>
1411   * Type: <b>token</b><br>
1412   * Path: <b>Endpoint.connectionType</b><br>
1413   * </p>
1414   */
1415  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONNECTION_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1416      SP_CONNECTION_TYPE);
1417
1418  /**
1419   * Search parameter: <b>name</b>
1420   * <p>
1421   * Description: <b>A name that this endpoint can be identified by</b><br>
1422   * Type: <b>string</b><br>
1423   * Path: <b>Endpoint.name</b><br>
1424   * </p>
1425   */
1426  @SearchParamDefinition(name = "name", path = "Endpoint.name", description = "A name that this endpoint can be identified by", type = "string")
1427  public static final String SP_NAME = "name";
1428  /**
1429   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1430   * <p>
1431   * Description: <b>A name that this endpoint can be identified by</b><br>
1432   * Type: <b>string</b><br>
1433   * Path: <b>Endpoint.name</b><br>
1434   * </p>
1435   */
1436  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(
1437      SP_NAME);
1438
1439  /**
1440   * Search parameter: <b>status</b>
1441   * <p>
1442   * Description: <b>The current status of the Endpoint (usually expected to be
1443   * active)</b><br>
1444   * Type: <b>token</b><br>
1445   * Path: <b>Endpoint.status</b><br>
1446   * </p>
1447   */
1448  @SearchParamDefinition(name = "status", path = "Endpoint.status", description = "The current status of the Endpoint (usually expected to be active)", type = "token")
1449  public static final String SP_STATUS = "status";
1450  /**
1451   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1452   * <p>
1453   * Description: <b>The current status of the Endpoint (usually expected to be
1454   * active)</b><br>
1455   * Type: <b>token</b><br>
1456   * Path: <b>Endpoint.status</b><br>
1457   * </p>
1458   */
1459  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1460      SP_STATUS);
1461
1462}