Add helpers for batch/transaction requests
Use Bundle resource from #7
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
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