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}