001package org.hl7.fhir.r5.openehr;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.openehr.Enumerations.*;
039import org.hl7.fhir.exceptions.FHIRException;
040import org.hl7.fhir.r5.model.*;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.Child;
043import ca.uhn.fhir.model.api.annotation.ChildOrder;
044import ca.uhn.fhir.model.api.annotation.DatatypeDef;
045import ca.uhn.fhir.model.api.annotation.Description;
046import ca.uhn.fhir.model.api.annotation.Block;
047
048/**
049 * Audit details for any system in a feeder system chain. Audit details here means the general notion of who/where/when the information item to which the audit is attached was created. None of the attributes is defined as mandatory, however, in different scenarios, various combinations of attributes will usually be mandatory. This can be controlled by specifying feeder audit details in legacy archetypes.
050 */
051@DatatypeDef(name="FEEDER_AUDIT_DETAILS")
052public class FEEDER_AUDIT_DETAILS extends LogicalBase implements ICompositeType {
053
054    /**
055     * Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system.
056     */
057    @Child(name = "system_id", type = {StringType.class}, order=0, min=1, max=1, modifier=false, summary=false)
058    @Description(shortDefinition="Identifier of the system which handled the information item", formalDefinition="Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system." )
059    protected StringType system_id;
060
061    /**
062     * Identifier of the particular site/facility within an organisation which handled the item. For computability, this identifier needs to be e.g. a PKI identifier which can be included in the identifier list of the PARTY_IDENTIFIED object.
063     */
064    @Child(name = "location", type = {PARTY_IDENTIFIED.class}, order=1, min=0, max=1, modifier=false, summary=false)
065    @Description(shortDefinition="Identifier of the particular site/facility within an organisation which handled the item", formalDefinition="Identifier of the particular site/facility within an organisation which handled the item. For computability, this identifier needs to be e.g. a PKI identifier which can be included in the identifier list of the PARTY_IDENTIFIED object." )
066    protected PARTY_IDENTIFIED location;
067
068    /**
069     * Identifiers for subject of the received information item.
070     */
071    @Child(name = "subject", type = {PARTY_PROXY.class}, order=2, min=0, max=1, modifier=false, summary=false)
072    @Description(shortDefinition="Identifiers for subject of the received information item", formalDefinition="Identifiers for subject of the received information item." )
073    protected PARTY_PROXY subject;
074
075    /**
076     * Optional provider(s) who created, committed, forwarded or otherwise handled the item.
077     */
078    @Child(name = "provider", type = {PARTY_IDENTIFIED.class}, order=3, min=0, max=1, modifier=false, summary=false)
079    @Description(shortDefinition="Optional provider(s) who created, committed, forwarded or otherwise handled the item", formalDefinition="Optional provider(s) who created, committed, forwarded or otherwise handled the item." )
080    protected PARTY_IDENTIFIED provider;
081
082    /**
083     * Time of handling the item. For an originating system, this will be time of creation, for an intermediate feeder system, this will be a time of accession or other time of handling, where available.
084     */
085    @Child(name = "time", type = {DV_DATE_TIME.class}, order=4, min=0, max=1, modifier=false, summary=false)
086    @Description(shortDefinition="Time of handling the item", formalDefinition="Time of handling the item. For an originating system, this will be time of creation, for an intermediate feeder system, this will be a time of accession or other time of handling, where available." )
087    protected DV_DATE_TIME time;
088
089    /**
090     * Any identifier used in the system such as `interim` , `final` , or numeric versions if available.
091     */
092    @Child(name = "version_id", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
093    @Description(shortDefinition="Any identifier used in the system such as `interim` , `final` , or numeric versions if available", formalDefinition="Any identifier used in the system such as `interim` , `final` , or numeric versions if available." )
094    protected StringType version_id;
095
096    /**
097     * Optional attribute to carry any custom meta-data. May be archetyped.
098     */
099    @Child(name = "other_details", type = {ITEM_STRUCTURE.class}, order=6, min=0, max=1, modifier=false, summary=false)
100    @Description(shortDefinition="Optional attribute to carry any custom meta-data", formalDefinition="Optional attribute to carry any custom meta-data. May be archetyped." )
101    protected ITEM_STRUCTURE other_details;
102
103    private static final long serialVersionUID = -31539140L;
104
105  /**
106   * Constructor
107   */
108    public FEEDER_AUDIT_DETAILS() {
109      super();
110    }
111
112  /**
113   * Constructor
114   */
115    public FEEDER_AUDIT_DETAILS(String system_id) {
116      super();
117      this.setSystem_id(system_id);
118    }
119
120    /**
121     * @return {@link #system_id} (Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system.). This is the underlying object with id, value and extensions. The accessor "getSystem_id" gives direct access to the value
122     */
123    public StringType getSystem_idElement() { 
124      if (this.system_id == null)
125        if (Configuration.errorOnAutoCreate())
126          throw new Error("Attempt to auto-create FEEDER_AUDIT_DETAILS.system_id");
127        else if (Configuration.doAutoCreate())
128          this.system_id = new StringType(); // bb
129      return this.system_id;
130    }
131
132    public boolean hasSystem_idElement() { 
133      return this.system_id != null && !this.system_id.isEmpty();
134    }
135
136    public boolean hasSystem_id() { 
137      return this.system_id != null && !this.system_id.isEmpty();
138    }
139
140    /**
141     * @param value {@link #system_id} (Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system.). This is the underlying object with id, value and extensions. The accessor "getSystem_id" gives direct access to the value
142     */
143    public FEEDER_AUDIT_DETAILS setSystem_idElement(StringType value) { 
144      this.system_id = value;
145      return this;
146    }
147
148    /**
149     * @return Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system.
150     */
151    public String getSystem_id() { 
152      return this.system_id == null ? null : this.system_id.getValue();
153    }
154
155    /**
156     * @param value Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system.
157     */
158    public FEEDER_AUDIT_DETAILS setSystem_id(String value) { 
159        if (this.system_id == null)
160          this.system_id = new StringType();
161        this.system_id.setValue(value);
162      return this;
163    }
164
165    /**
166     * @return {@link #location} (Identifier of the particular site/facility within an organisation which handled the item. For computability, this identifier needs to be e.g. a PKI identifier which can be included in the identifier list of the PARTY_IDENTIFIED object.)
167     */
168    public PARTY_IDENTIFIED getLocation() { 
169      if (this.location == null)
170        if (Configuration.errorOnAutoCreate())
171          throw new Error("Attempt to auto-create FEEDER_AUDIT_DETAILS.location");
172        else if (Configuration.doAutoCreate())
173          this.location = new PARTY_IDENTIFIED(); // cc
174      return this.location;
175    }
176
177    public boolean hasLocation() { 
178      return this.location != null && !this.location.isEmpty();
179    }
180
181    /**
182     * @param value {@link #location} (Identifier of the particular site/facility within an organisation which handled the item. For computability, this identifier needs to be e.g. a PKI identifier which can be included in the identifier list of the PARTY_IDENTIFIED object.)
183     */
184    public FEEDER_AUDIT_DETAILS setLocation(PARTY_IDENTIFIED value) { 
185      this.location = value;
186      return this;
187    }
188
189    /**
190     * @return {@link #subject} (Identifiers for subject of the received information item.)
191     */
192    public PARTY_PROXY getSubject() { 
193      return this.subject;
194    }
195
196    public boolean hasSubject() { 
197      return this.subject != null && !this.subject.isEmpty();
198    }
199
200    /**
201     * @param value {@link #subject} (Identifiers for subject of the received information item.)
202     */
203    public FEEDER_AUDIT_DETAILS setSubject(PARTY_PROXY value) { 
204      this.subject = value;
205      return this;
206    }
207
208    /**
209     * @return {@link #provider} (Optional provider(s) who created, committed, forwarded or otherwise handled the item.)
210     */
211    public PARTY_IDENTIFIED getProvider() { 
212      if (this.provider == null)
213        if (Configuration.errorOnAutoCreate())
214          throw new Error("Attempt to auto-create FEEDER_AUDIT_DETAILS.provider");
215        else if (Configuration.doAutoCreate())
216          this.provider = new PARTY_IDENTIFIED(); // cc
217      return this.provider;
218    }
219
220    public boolean hasProvider() { 
221      return this.provider != null && !this.provider.isEmpty();
222    }
223
224    /**
225     * @param value {@link #provider} (Optional provider(s) who created, committed, forwarded or otherwise handled the item.)
226     */
227    public FEEDER_AUDIT_DETAILS setProvider(PARTY_IDENTIFIED value) { 
228      this.provider = value;
229      return this;
230    }
231
232    /**
233     * @return {@link #time} (Time of handling the item. For an originating system, this will be time of creation, for an intermediate feeder system, this will be a time of accession or other time of handling, where available.)
234     */
235    public DV_DATE_TIME getTime() { 
236      if (this.time == null)
237        if (Configuration.errorOnAutoCreate())
238          throw new Error("Attempt to auto-create FEEDER_AUDIT_DETAILS.time");
239        else if (Configuration.doAutoCreate())
240          this.time = new DV_DATE_TIME(); // cc
241      return this.time;
242    }
243
244    public boolean hasTime() { 
245      return this.time != null && !this.time.isEmpty();
246    }
247
248    /**
249     * @param value {@link #time} (Time of handling the item. For an originating system, this will be time of creation, for an intermediate feeder system, this will be a time of accession or other time of handling, where available.)
250     */
251    public FEEDER_AUDIT_DETAILS setTime(DV_DATE_TIME value) { 
252      this.time = value;
253      return this;
254    }
255
256    /**
257     * @return {@link #version_id} (Any identifier used in the system such as `interim` , `final` , or numeric versions if available.). This is the underlying object with id, value and extensions. The accessor "getVersion_id" gives direct access to the value
258     */
259    public StringType getVersion_idElement() { 
260      if (this.version_id == null)
261        if (Configuration.errorOnAutoCreate())
262          throw new Error("Attempt to auto-create FEEDER_AUDIT_DETAILS.version_id");
263        else if (Configuration.doAutoCreate())
264          this.version_id = new StringType(); // bb
265      return this.version_id;
266    }
267
268    public boolean hasVersion_idElement() { 
269      return this.version_id != null && !this.version_id.isEmpty();
270    }
271
272    public boolean hasVersion_id() { 
273      return this.version_id != null && !this.version_id.isEmpty();
274    }
275
276    /**
277     * @param value {@link #version_id} (Any identifier used in the system such as `interim` , `final` , or numeric versions if available.). This is the underlying object with id, value and extensions. The accessor "getVersion_id" gives direct access to the value
278     */
279    public FEEDER_AUDIT_DETAILS setVersion_idElement(StringType value) { 
280      this.version_id = value;
281      return this;
282    }
283
284    /**
285     * @return Any identifier used in the system such as `interim` , `final` , or numeric versions if available.
286     */
287    public String getVersion_id() { 
288      return this.version_id == null ? null : this.version_id.getValue();
289    }
290
291    /**
292     * @param value Any identifier used in the system such as `interim` , `final` , or numeric versions if available.
293     */
294    public FEEDER_AUDIT_DETAILS setVersion_id(String value) { 
295      if (Utilities.noString(value))
296        this.version_id = null;
297      else {
298        if (this.version_id == null)
299          this.version_id = new StringType();
300        this.version_id.setValue(value);
301      }
302      return this;
303    }
304
305    /**
306     * @return {@link #other_details} (Optional attribute to carry any custom meta-data. May be archetyped.)
307     */
308    public ITEM_STRUCTURE getOther_details() { 
309      return this.other_details;
310    }
311
312    public boolean hasOther_details() { 
313      return this.other_details != null && !this.other_details.isEmpty();
314    }
315
316    /**
317     * @param value {@link #other_details} (Optional attribute to carry any custom meta-data. May be archetyped.)
318     */
319    public FEEDER_AUDIT_DETAILS setOther_details(ITEM_STRUCTURE value) { 
320      this.other_details = value;
321      return this;
322    }
323
324      protected void listChildren(List<Property> children) {
325        super.listChildren(children);
326        children.add(new Property("system_id", "string", "Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system.", 0, 1, system_id));
327        children.add(new Property("location", "http://openehr.org/fhir/StructureDefinition/PARTY-IDENTIFIED", "Identifier of the particular site/facility within an organisation which handled the item. For computability, this identifier needs to be e.g. a PKI identifier which can be included in the identifier list of the PARTY_IDENTIFIED object.", 0, 1, location));
328        children.add(new Property("subject", "http://openehr.org/fhir/StructureDefinition/PARTY-PROXY", "Identifiers for subject of the received information item.", 0, 1, subject));
329        children.add(new Property("provider", "http://openehr.org/fhir/StructureDefinition/PARTY-IDENTIFIED", "Optional provider(s) who created, committed, forwarded or otherwise handled the item.", 0, 1, provider));
330        children.add(new Property("time", "http://openehr.org/fhir/StructureDefinition/DV-DATE-TIME", "Time of handling the item. For an originating system, this will be time of creation, for an intermediate feeder system, this will be a time of accession or other time of handling, where available.", 0, 1, time));
331        children.add(new Property("version_id", "string", "Any identifier used in the system such as `interim` , `final` , or numeric versions if available.", 0, 1, version_id));
332        children.add(new Property("other_details", "http://openehr.org/fhir/StructureDefinition/ITEM-STRUCTURE", "Optional attribute to carry any custom meta-data. May be archetyped.", 0, 1, other_details));
333      }
334
335      @Override
336      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
337        switch (_hash) {
338        case 1129127211: /*system_id*/  return new Property("system_id", "string", "Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system.", 0, 1, system_id);
339        case 1901043637: /*location*/  return new Property("location", "http://openehr.org/fhir/StructureDefinition/PARTY-IDENTIFIED", "Identifier of the particular site/facility within an organisation which handled the item. For computability, this identifier needs to be e.g. a PKI identifier which can be included in the identifier list of the PARTY_IDENTIFIED object.", 0, 1, location);
340        case -1867885268: /*subject*/  return new Property("subject", "http://openehr.org/fhir/StructureDefinition/PARTY-PROXY", "Identifiers for subject of the received information item.", 0, 1, subject);
341        case -987494927: /*provider*/  return new Property("provider", "http://openehr.org/fhir/StructureDefinition/PARTY-IDENTIFIED", "Optional provider(s) who created, committed, forwarded or otherwise handled the item.", 0, 1, provider);
342        case 3560141: /*time*/  return new Property("time", "http://openehr.org/fhir/StructureDefinition/DV-DATE-TIME", "Time of handling the item. For an originating system, this will be time of creation, for an intermediate feeder system, this will be a time of accession or other time of handling, where available.", 0, 1, time);
343        case -670497310: /*version_id*/  return new Property("version_id", "string", "Any identifier used in the system such as `interim` , `final` , or numeric versions if available.", 0, 1, version_id);
344        case -1257043949: /*other_details*/  return new Property("other_details", "http://openehr.org/fhir/StructureDefinition/ITEM-STRUCTURE", "Optional attribute to carry any custom meta-data. May be archetyped.", 0, 1, other_details);
345        default: return super.getNamedProperty(_hash, _name, _checkValid);
346        }
347
348      }
349
350      @Override
351      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
352        switch (hash) {
353        case 1129127211: /*system_id*/ return this.system_id == null ? new Base[0] : new Base[] {this.system_id}; // StringType
354        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // PARTY_IDENTIFIED
355        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // PARTY_PROXY
356        case -987494927: /*provider*/ return this.provider == null ? new Base[0] : new Base[] {this.provider}; // PARTY_IDENTIFIED
357        case 3560141: /*time*/ return this.time == null ? new Base[0] : new Base[] {this.time}; // DV_DATE_TIME
358        case -670497310: /*version_id*/ return this.version_id == null ? new Base[0] : new Base[] {this.version_id}; // StringType
359        case -1257043949: /*other_details*/ return this.other_details == null ? new Base[0] : new Base[] {this.other_details}; // ITEM_STRUCTURE
360        default: return super.getProperty(hash, name, checkValid);
361        }
362
363      }
364
365      @Override
366      public Base setProperty(int hash, String name, Base value) throws FHIRException {
367        switch (hash) {
368        case 1129127211: // system_id
369          this.system_id = TypeConvertor.castToString(value); // StringType
370          return value;
371        case 1901043637: // location
372          this.location = (PARTY_IDENTIFIED) value; // PARTY_IDENTIFIED
373          return value;
374        case -1867885268: // subject
375          this.subject = (PARTY_PROXY) value; // PARTY_PROXY
376          return value;
377        case -987494927: // provider
378          this.provider = (PARTY_IDENTIFIED) value; // PARTY_IDENTIFIED
379          return value;
380        case 3560141: // time
381          this.time = (DV_DATE_TIME) value; // DV_DATE_TIME
382          return value;
383        case -670497310: // version_id
384          this.version_id = TypeConvertor.castToString(value); // StringType
385          return value;
386        case -1257043949: // other_details
387          this.other_details = (ITEM_STRUCTURE) value; // ITEM_STRUCTURE
388          return value;
389        default: return super.setProperty(hash, name, value);
390        }
391
392      }
393
394      @Override
395      public Base setProperty(String name, Base value) throws FHIRException {
396        if (name.equals("system_id")) {
397          this.system_id = TypeConvertor.castToString(value); // StringType
398        } else if (name.equals("location")) {
399          this.location = (PARTY_IDENTIFIED) value; // PARTY_IDENTIFIED
400        } else if (name.equals("subject")) {
401          this.subject = (PARTY_PROXY) value; // PARTY_PROXY
402        } else if (name.equals("provider")) {
403          this.provider = (PARTY_IDENTIFIED) value; // PARTY_IDENTIFIED
404        } else if (name.equals("time")) {
405          this.time = (DV_DATE_TIME) value; // DV_DATE_TIME
406        } else if (name.equals("version_id")) {
407          this.version_id = TypeConvertor.castToString(value); // StringType
408        } else if (name.equals("other_details")) {
409          this.other_details = (ITEM_STRUCTURE) value; // ITEM_STRUCTURE
410        } else
411          return super.setProperty(name, value);
412        return value;
413      }
414
415      @Override
416      public Base makeProperty(int hash, String name) throws FHIRException {
417        switch (hash) {
418        case 1129127211:  return getSystem_idElement();
419        case 1901043637:  return getLocation();
420        case -1867885268: /*div*/
421          throw new Error("Unable to make an instance of the abstract property 'subject'");
422        case -987494927:  return getProvider();
423        case 3560141:  return getTime();
424        case -670497310:  return getVersion_idElement();
425        case -1257043949: /*div*/
426          throw new Error("Unable to make an instance of the abstract property 'other_details'");
427        default: return super.makeProperty(hash, name);
428        }
429
430      }
431
432      @Override
433      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
434        switch (hash) {
435        case 1129127211: /*system_id*/ return new String[] {"string"};
436        case 1901043637: /*location*/ return new String[] {"http://openehr.org/fhir/StructureDefinition/PARTY-IDENTIFIED"};
437        case -1867885268: /*subject*/ return new String[] {"http://openehr.org/fhir/StructureDefinition/PARTY-PROXY"};
438        case -987494927: /*provider*/ return new String[] {"http://openehr.org/fhir/StructureDefinition/PARTY-IDENTIFIED"};
439        case 3560141: /*time*/ return new String[] {"http://openehr.org/fhir/StructureDefinition/DV-DATE-TIME"};
440        case -670497310: /*version_id*/ return new String[] {"string"};
441        case -1257043949: /*other_details*/ return new String[] {"http://openehr.org/fhir/StructureDefinition/ITEM-STRUCTURE"};
442        default: return super.getTypesForProperty(hash, name);
443        }
444
445      }
446
447      @Override
448      public Base addChild(String name) throws FHIRException {
449        if (name.equals("system_id")) {
450          throw new FHIRException("Cannot call addChild on a singleton property FEEDER_AUDIT_DETAILS.system_id");
451        }
452        else if (name.equals("location")) {
453          this.location = new PARTY_IDENTIFIED();
454          return this.location;
455        }
456        else if (name.equals("subject")) {
457          throw new FHIRException("Cannot call addChild on an abstract type FEEDER_AUDIT_DETAILS.subject");
458        }
459        else if (name.equals("provider")) {
460          this.provider = new PARTY_IDENTIFIED();
461          return this.provider;
462        }
463        else if (name.equals("time")) {
464          this.time = new DV_DATE_TIME();
465          return this.time;
466        }
467        else if (name.equals("version_id")) {
468          throw new FHIRException("Cannot call addChild on a singleton property FEEDER_AUDIT_DETAILS.version_id");
469        }
470        else if (name.equals("other_details")) {
471          throw new FHIRException("Cannot call addChild on an abstract type FEEDER_AUDIT_DETAILS.other_details");
472        }
473        else
474          return super.addChild(name);
475      }
476
477  public String fhirType() {
478    return "FEEDER_AUDIT_DETAILS";
479
480  }
481
482      public FEEDER_AUDIT_DETAILS copy() {
483        FEEDER_AUDIT_DETAILS dst = new FEEDER_AUDIT_DETAILS();
484        copyValues(dst);
485        return dst;
486      }
487
488      public void copyValues(FEEDER_AUDIT_DETAILS dst) {
489        super.copyValues(dst);
490        dst.system_id = system_id == null ? null : system_id.copy();
491        dst.location = location == null ? null : location.copy();
492        dst.subject = subject == null ? null : subject.copy();
493        dst.provider = provider == null ? null : provider.copy();
494        dst.time = time == null ? null : time.copy();
495        dst.version_id = version_id == null ? null : version_id.copy();
496        dst.other_details = other_details == null ? null : other_details.copy();
497      }
498
499      protected FEEDER_AUDIT_DETAILS typedCopy() {
500        return copy();
501      }
502
503      @Override
504      public boolean equalsDeep(Base other_) {
505        if (!super.equalsDeep(other_))
506          return false;
507        if (!(other_ instanceof FEEDER_AUDIT_DETAILS))
508          return false;
509        FEEDER_AUDIT_DETAILS o = (FEEDER_AUDIT_DETAILS) other_;
510        return compareDeep(system_id, o.system_id, true) && compareDeep(location, o.location, true) && compareDeep(subject, o.subject, true)
511           && compareDeep(provider, o.provider, true) && compareDeep(time, o.time, true) && compareDeep(version_id, o.version_id, true)
512           && compareDeep(other_details, o.other_details, true);
513      }
514
515      @Override
516      public boolean equalsShallow(Base other_) {
517        if (!super.equalsShallow(other_))
518          return false;
519        if (!(other_ instanceof FEEDER_AUDIT_DETAILS))
520          return false;
521        FEEDER_AUDIT_DETAILS o = (FEEDER_AUDIT_DETAILS) other_;
522        return compareValues(system_id, o.system_id, true) && compareValues(version_id, o.version_id, true)
523          ;
524      }
525
526      public boolean isEmpty() {
527        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(system_id, location, subject
528          , provider, time, version_id, other_details);
529      }
530
531
532}
533