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