/** * When Operator user saves results request is posted to this method * it saves the results of test for which a patient has applied. */ public function saveresultAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $data = $this->getRequest()->getPost(); patient::saveTestResult($data); echo json_encode(['messages' => 'Results are saved.']); die; }
/** * This method is used to save the new patient or update the information of * an existing patient. a user with the mrn.no is create with the username and * password same as mrn. no. * it also enters the order of patient * @param type $dataPosted * @return array id of patient and order */ public function save($dataPosted) { $userObj = new Application_Model_User(); $arrayCols = $userObj->fetchNew()->toArray(); $patientObj = new Application_Model_Patient(); $arrayColsPat = $patientObj->fetchNew()->toArray(); $dataPosted['updated_at'] = date('Y-m-d H:i:s'); $dataPosted['created_at'] = date('Y-m-d H:i:s'); $user_data = array_intersect_key($dataPosted, $arrayCols); // filter the posted data to model attributes $patient_data = array_intersect_key($dataPosted, $arrayColsPat); unset($patient_data['id']); $user_data['username'] = $dataPosted['m_r_no']; $user_data['password'] = md5($dataPosted['m_r_no']); $user_data['user_type'] = 'patient'; //update user and patient if id passed if (!empty($user_data['id'])) { unset($user_data['created_at']); unset($patient_data['created_at']); $userObj->update($user_data, 'id=' . $user_data['id']); $user_id = $user_data['id']; $patient_data['user_id'] = $user_id; $patientObj->update($patient_data, 'user_id=' . $user_id); } else { //insert new user and patient if id not passed unset($user_data['id']); $user_id = $userObj->insert($user_data); $patient_data['user_id'] = $user_id; $patientObj->insert($patient_data); } $result['id'] = $user_id; $result['order_id'] = ''; // Save patient Tests $patient_orders_obj = new Application_Model_DbTable_PatientOrders(); if (isset($dataPosted['test_id'])) { $testIds = $dataPosted['test_id']; } else { $testIds = []; } if (!empty($dataPosted['order_id']) || count($testIds)) { if (empty($dataPosted['order_id'])) { $dataOrder['user_id'] = $user_id; $dataOrder['created_at'] = date('Y-m-d H:i:s'); $dataOrder['total_tests'] = count($testIds); $order_id = $patient_orders_obj->insert($dataOrder); } else { $order_id = $dataPosted['order_id']; $dataOrder['total_tests'] = count($testIds); $patient_orders_obj->update($dataOrder, 'id = ' . $order_id); } $result['order_id'] = $order_id; // Delete the removed tests $OrderTestsObj = new Application_Model_DbTable_OrderTests(); $oldTests = $OrderTestsObj->fetchAll('order_id = ' . $order_id); $oldTestsArr = []; foreach ($oldTests as $oldTest) { if (!in_array($oldTest['test_id'], $testIds)) { $OrderTestsObj->delete('test_id = ' . $oldTest['test_id'] . ' and order_id = ' . $order_id); } $oldTestsArr[] = $oldTest['test_id']; } // Add new tests foreach ($testIds as $newTest) { if (!in_array($newTest, $oldTestsArr)) { $OrderTestsObj->insert(['test_id' => $newTest, 'order_id' => $order_id]); } } } return $result; }
public function getBirthday() { $this->__load(); return parent::getBirthday(); }
/** * PDF of a test order is downloaded by this method */ public function downloadpdfAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $id = $this->getRequest()->getParam('id', ''); $email = $this->getRequest()->getParam('email', 0); require_once 'mpdf/mpdf.php'; $html .= $this->view->action('viewreport', 'patient', 'patient', array('id' => $id)); $mpdf = new mPDF('+aCJK', 'A4', '', '', 15, 15, 15, 0, 0, 0); $mpdf->mirrorMargins = 0; $mpdf->setAutoBottomMargin = 'stretch'; $mpdf->SetDisplayMode('fullwidth'); $mpdf->WriteHTML($html); $fileName = 'PDF_Form' . time() . '.pdf'; $mpdf->Output('tmp/' . $fileName, $email ? 'F' : 'D'); if ($email) { $patient = patient::getOrderById($id); $mail = new PHPMailer(); $mail->From = '*****@*****.**'; $mail->FromName = 'Lab'; $mail->addAddress($patient[0]['email'], ''); $mail->addAttachment('tmp/' . $fileName); $mail->Subject = 'Your Test Report'; $mail->Body = 'Please find attached report'; if (!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { unlink('tmp/' . $fileName); $flashMessenger = $this->_helper->getHelper('FlashMessenger'); $flashMessenger->addMessage('mail_sent'); $this->_redirect('/patient/orders'); } } }