@@ -58,13 +58,20 @@ def relativePath(self):
5858 # MARK: - Server Connection
5959
6060 @property
61- def server (self ):
61+ def origin_server (self ):
6262 """ Walks the owner hierarchy until it finds an owner with a server.
6363 """
64- if self ._server is None :
65- owningRes = self .owningResource ()
66- self ._server = owningRes .server if owningRes is not None else None
67- return self ._server
64+ server = self ._server
65+ owner = self ._owner
66+ while server is None and owner is not None :
67+ server = getattr (owner , '_server' , None )
68+ owner = owner ._owner
69+ return server
70+
71+ @origin_server .setter
72+ def origin_server (self , server ):
73+ """ Sets the server on an element. """
74+ self ._server = server
6875
6976 @classmethod
7077 def read (cls , rem_id , server ):
@@ -101,7 +108,7 @@ def read_from(cls, path, server):
101108
102109 ret = server .request_json (path )
103110 instance = cls (jsondict = ret )
104- instance ._server = server
111+ instance .origin_server = server
105112 return instance
106113
107114 def create (self , server ):
@@ -111,7 +118,7 @@ def create(self, server):
111118 :param FHIRServer server: The server to create the receiver on
112119 :returns: None or the response JSON on success
113120 """
114- srv = server or self .server
121+ srv = server or self .origin_server
115122 if srv is None :
116123 raise Exception ("Cannot create a resource without a server" )
117124 if self .id :
@@ -130,7 +137,7 @@ def update(self, server=None):
130137 optional, will use the instance's `server` if needed.
131138 :returns: None or the response JSON on success
132139 """
133- srv = server or self .server
140+ srv = server or self .origin_server
134141 if srv is None :
135142 raise Exception ("Cannot update a resource that does not have a server" )
136143 if not self .id :
@@ -148,7 +155,7 @@ def delete(self, server=None):
148155 optional, will use the instance's `server` if needed.
149156 :returns: None or the response JSON on success
150157 """
151- srv = server or self .server
158+ srv = server or self .origin_server
152159 if srv is None :
153160 raise Exception ("Cannot delete a resource that does not have a server" )
154161 if not self .id :
0 commit comments