Openemr fhir smart bulk (#4582)
* Added Device, disable system write permissions.
We definitely don't want to allow system write permissions until we
understand the ramifications better.
Made it so we support implantable device exports here.
* Removed phpseclib notice.
Had a phpseclib notice dumping to the screen if you tried to use EC384
instead of RS384 which screws up the JSON reporting back on the REST api
and leaks implementation details to outsiders we don't want.
* Implemented basic bulk export for Allergy Intolerance
* Fix Patient Bulk FHIR, Implement in Core Resources
Fixed language, and race elements with patient resources not validating correctly
according to US Core.
Added initial implementation for bulk fhir export to all US Core resources.
* Fix bulk export capability statement operations.
Fixed the reporting of the bulk export operations for the FHIR
capability statement.
* Refactored ServiceLocator to prepare provenance.
In order to grab all of the provenance data we need to use our service
locator. For that to happen we need to loop through all the services.
Since we have an export service locator that does this we refactored the
service locator and pulled it out into its own class that allows us to
find FHIR services that implement a particular class or sub-class.
* Enforce access rights on document search operations
* Restrict PatientDocumentReference to patient docs
Had it so the patient doc reference was returning all documents instead
of just restricted to patient only. This fixes a number of problems in
the bulk exporter.
However, system level documents (such as the exporter files themselves)
are not includes in the export now. A future feature enhancement will
have to include these kinds of doc)
* Added some comments for future work.
* Bulk FHIR MedicationRequest,Encounter,Provenance
We implemented support for provenance and MedicationRequest. Still
working on Encounter which needs a bunch of work.
* Added logger helper method to log function context
Got tired of writing class names & method names and wrote out a logger
function to do this.
* Implemented DAR for blood pressure.
We needed to support data absent reason for bpd/bps and so we had to
allow saving of '0' values which we now do and report on that.
* Implement Provenance Bulk FHIR export.
Had to use the service locator for bulk fhir provenance export. Its a
slow query request due to using the capability statement. Fortunately
Bulk FHIR is async but there's a lot of records exported here...
* Fix styles
* Fixing use statement together.
* Fix style. Fix provenance getAll
35 files changed: