4 * PatientRestController
5 * This controller creates, updates, and retrieves transactions
8 * @link http://www.open-emr.org
9 * @author Jonathan Moore <Jdcmoore@aol.com>
10 * @copyright Copyright (c) 2022 Jonathan Moore <Jdcmoore@aol.com>
11 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
14 namespace OpenEMR\RestControllers
;
16 use OpenEMR\RestControllers\RestControllerHelper
;
17 use OpenEMR\Services\PatientTransactionService
;
18 use OpenEMR\Services\TransactionService
;
19 use OpenEMR\Validators\ProcessingResult
;
21 class TransactionRestController
24 * @var PatientTransactionService
26 private $patientTransactionService;
29 * White list of patient search fields
31 private const SUPPORTED_SEARCH_FIELDS
= array(
35 public function __construct()
37 $this->patientTransactionService
= new PatientTransactionService();
41 * Process a HTTP POST request used to create a patient record.
43 * @param $data - array of patient fields.
44 * @return a 201/Created status code and the patient identifier if successful.
46 public function CreateTransaction($pid, $data)
48 $processingResult = new ProcessingResult();
50 $serviceValidation = $this->patientTransactionService
->validate($data);
51 $controllerValidationResult = RestControllerHelper
::validationHandler($serviceValidation);
52 if (is_array($controllerValidationResult)) {
53 $processingResult->setValidationMessages($controllerValidationResult);
57 $serviceResult = $this->patientTransactionService
->insert($pid, $data);
58 $processingResult->addData($serviceResult);
60 return RestControllerHelper
::handleProcessingResult($processingResult, 201, true);
63 public function UpdateTransaction($tid, $data)
65 $processingResult = new ProcessingResult();
67 $data = $this->patientTransactionService
->update($tid, $data);
68 $processingResult->addData($data);
69 return RestControllerHelper
::handleProcessingResult($processingResult, 200, false);
73 * Returns patient resources which match an optional search criteria.
75 public function GetPatientTransactions($pid)
77 $processingResult = $this->patientTransactionService
->getAll($pid);
79 if (!$processingResult->hasErrors() && count($processingResult->getData()) == 0) {
80 return RestControllerHelper
::handleProcessingResult($processingResult, 404);
83 return RestControllerHelper
::handleProcessingResult($processingResult, 200, true);