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}