Stream: python
Topic: posting transaction bundles
Bob Milius (Jul 23 2018 at 16:30):
How do I post a transaction bundle in python?
settings = {
'app_id': 'my_web_app',
'api_base': 'http://fhirtest.b12x.org/r3'
}
smart = client.FHIRClient(settings=settings)
response = bundle.create(smart.server)
will POST to the bundle endpoint, but not to the base url where it needs to go for transactions to be processed.
Bob Milius (Jul 23 2018 at 16:32):
requests.exceptions.HTTPError: 422 Client Error: Unprocessable Entity for url: http://fhirtest.b12x.org/r3/Bundle
Pascal Pfiffner (Jul 23 2018 at 17:27):
Indeed, create always posts to base_url + resource_type, you'll need to do that manually. Look at def create(...) in fhirabstractresource.py (9 lines of code, around line 114) and create a method that does the same, expect using None instead of self.relativeBase() in the post_json call.
Pascal Pfiffner (Jul 23 2018 at 17:27):
*except
Bob Milius (Jul 23 2018 at 17:49):
Thanks! @Pascal Pfiffner
Mike Halagan (Jul 23 2018 at 18:29):
If we created a new method, say "create_bundle", then it would be accessible to all resource models even though it should only be used with a bundle resource. Does checking to see if it's a Bundle transaction make sense instead of creating a new method? Adding the following lines of code to the create method works.
base_url = self.relativeBase()
if(self.resource_type == "Bundle"
and self.type == "transaction"):
base_url = None
Bob Milius (Jul 23 2018 at 18:56):
should also test for self.type == "batch" which should also be processed
Last updated: Apr 12 2022 at 19:14 UTC