001package org.hl7.fhir.dstu3.model;
002
003import org.hl7.fhir.instance.model.api.*;
004
005public abstract class BaseReference extends Type implements IBaseReference, ICompositeType {
006
007    /**
008     * This is not a part of the "wire format" resource, but can be changed/accessed by parsers
009     */
010    private transient IBaseResource resource;
011
012        public BaseReference(String theReference) {
013        setReference(theReference);
014        }
015
016    public BaseReference(IIdType theReference) {
017        if (theReference != null) {
018                setReference(theReference.getValue());
019        } else {
020                setReference(null);
021        }
022    }
023
024        public BaseReference(IAnyResource theResource) {
025                resource = theResource;
026        }
027
028        public BaseReference() {
029        }
030
031        /**
032     * Retrieves the actual resource referenced by this reference. Note that the resource itself is not
033     * a part of the FHIR "wire format" and is never transmitted or receieved inline, but this property
034     * may be changed/accessed by parsers.
035     */
036    public IBaseResource getResource() {
037        return resource;
038    }
039
040    @Override
041        public IIdType getReferenceElement() {
042                return new IdType(getReference());
043        }
044
045    abstract String getReference();
046
047    /**
048     * Sets the actual resource referenced by this reference. Note that the resource itself is not
049     * a part of the FHIR "wire format" and is never transmitted or receieved inline, but this property
050     * may be changed/accessed by parsers.
051     */
052    public void setResource(IBaseResource theResource) {
053        resource = theResource;
054    }
055
056    @Override
057        public boolean isEmpty() {
058                return resource == null && super.isEmpty();
059        }
060
061}