fhir-py icon indicating copy to clipboard operation
fhir-py copied to clipboard

Add helpers for batch/transaction requests

Open ruscoder opened this issue 6 years ago • 2 comments

Use Bundle resource from #7

ruscoder avatar Apr 16 '19 15:04 ruscoder

We discussed in the team this issue and decided that Bundle isn't an ordinary resource as a Patient and etc. It is an abstract resource that can't be instantiated. So, it means we can use .delete(), is_valid() and the resource can't have an id.

Let's add a new class BundleResource (and appropriate AsyncBundleResource/SyncBundleResource and aidbox versions) and return it in client.resources('Bundle').

This class should provide an interface:

  • .save() - only if type = transaction/batch - should update the inner resource without changing bundle.type
  • .get_resources()/resources TBD
  • .set_resources()/resources TBD
  • .add_resources() TBD
  • get_resources_by_resource_type(resource_type)
  • get_resource_by_reference(reference)

Also, let's return the instance of this class in fetch_raw - it'll solve #17 partially

ruscoder avatar Nov 27 '19 02:11 ruscoder

I think it would be good when the bundle would behave identically to the client so that the code like this would work

bundle = client.resources('Bundle')
for patient in patientlist:
    bundle.resources("Patient").reference('Patient', user)
bundle.fetch_all()

as this is a special behavior it might also be good to have a special constructor like bundle = client.bundle() instead

BSVogler avatar Jun 24 '21 09:06 BSVogler