获取医生每日最大接诊数量、检测是否可以接诊、创建问诊订单

This commit is contained in:
wucongxing8150 2024-04-10 11:46:18 +08:00
parent 6a71abffa9
commit c4a6e7cee3
3 changed files with 246 additions and 233 deletions

View File

@ -165,11 +165,14 @@ class InquiryService extends BaseService
} }
} }
// 检测当前是否符合系统问诊时间 // 问诊购药
$inquiryService = new InquiryService(); if ($request_params['inquiry_type'] == 4){
$is_system_time_pass = $inquiryService->checkSystemInquiryTime($request_params['inquiry_type']); // 检测当前是否符合系统问诊时间
if (!$is_system_time_pass && $request_params['inquiry_type'] == 4) { $inquiryService = new InquiryService();
return fail(HttpEnumCode::HTTP_ERROR, "当前非医生接诊时间"); $is_system_time_pass = $inquiryService->checkSystemInquiryTime($request_params['inquiry_type']);
if (!$is_system_time_pass) {
return fail(HttpEnumCode::HTTP_ERROR, "当前非医生接诊时间");
}
} }
// 定义优惠卷金额默认值 // 定义优惠卷金额默认值

View File

@ -318,8 +318,9 @@ class PatientDoctorService extends BaseService
} }
} }
// 检测公益问诊-当前患者问诊次数24小时内两次公益问诊 // 公益问诊
if ($inquiry_type == 4){ if ($inquiry_type == 3){
// 检测公益问诊-当前患者问诊次数24小时内两次公益问诊
$params = array(); $params = array();
$params['patient_id'] = $user_info['client_user_id']; $params['patient_id'] = $user_info['client_user_id'];
$params['inquiry_type'] = $inquiry_type; $params['inquiry_type'] = $inquiry_type;
@ -335,12 +336,13 @@ class PatientDoctorService extends BaseService
} }
} }
// 检测当前是否符合系统问诊时间 // 问诊购药
$inquiryService = new InquiryService(); if ($inquiry_type == 4){
$is_system_time_pass = $inquiryService->checkSystemInquiryTime($inquiry_type); // 检测当前是否符合系统问诊时间
if (!$is_system_time_pass){ $inquiryService = new InquiryService();
// 非坐班时间 $is_system_time_pass = $inquiryService->checkSystemInquiryTime($inquiry_type);
if ($inquiry_type == 4){ if (!$is_system_time_pass){
// 非坐班时间
// 问诊购药非坐班时间不允许接诊 // 问诊购药非坐班时间不允许接诊
$result['status'] = 3; $result['status'] = 3;
$result['data'] = ""; $result['data'] = "";
@ -349,7 +351,7 @@ class PatientDoctorService extends BaseService
} }
} }
// 检测快速、购药问诊是否可分配医生 // 检测快速、购药问诊是否可分配医生
if ($inquiry_type == 2 || $inquiry_type == 4){ if ($inquiry_type == 2 || $inquiry_type == 4){
$UserDoctorService = new UserDoctorService(); $UserDoctorService = new UserDoctorService();
$doctor_id = $UserDoctorService->getInquiryAssignDoctor($inquiry_type,$user_info['client_user_id'],$is_system_time_pass); $doctor_id = $UserDoctorService->getInquiryAssignDoctor($inquiry_type,$user_info['client_user_id'],$is_system_time_pass);
@ -362,7 +364,7 @@ class PatientDoctorService extends BaseService
return success($result); return success($result);
} }
} }
}catch(\Exception $e){ }catch(\Throwable $e){
// 错误不做处理,此处只是检测 // 错误不做处理,此处只是检测
return success($result); return success($result);
} }

View File

@ -1088,217 +1088,215 @@ class UserDoctorService extends BaseService
* 修改处方 * 修改处方
* 暂时去除修改处方 * 暂时去除修改处方
* @return array * @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/ */
public function putPrescription(): array public function putPrescription(): array
{ {
return fail(HttpEnumCode::HTTP_ERROR, "操作失败"); // return fail(HttpEnumCode::HTTP_ERROR, "操作失败");
//
$user_info = $this->request->getAttribute("userInfo") ?? []; // $user_info = $this->request->getAttribute("userInfo") ?? [];
//
$order_prescription_id = $this->request->input('order_prescription_id'); // $order_prescription_id = $this->request->input('order_prescription_id');
$prescription_icd = $this->request->input('prescription_icd'); // $prescription_icd = $this->request->input('prescription_icd');
$doctor_advice = $this->request->input('doctor_advice'); // $doctor_advice = $this->request->input('doctor_advice');
$prescription_product = $this->request->input('prescription_product'); // $prescription_product = $this->request->input('prescription_product');
//
// 获取医生信息 // // 获取医生信息
$params = array(); // $params = array();
$params['doctor_id'] = $user_info['client_user_id']; // $params['doctor_id'] = $user_info['client_user_id'];
//
$user_doctor = UserDoctor::getOne($params); // $user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) { // if (empty($user_doctor)) {
return fail(HttpEnumCode::HTTP_ERROR, "非法医生"); // return fail(HttpEnumCode::HTTP_ERROR, "非法医生");
} // }
//
$res = $this->checkDoctorAuth($user_doctor); // $res = $this->checkDoctorAuth($user_doctor);
if ($res !== true) { // if ($res !== true) {
return fail(HttpEnumCode::HTTP_ERROR, $res); // return fail(HttpEnumCode::HTTP_ERROR, $res);
} // }
//
// 获取处方数据 // // 获取处方数据
$params = array(); // $params = array();
$params['order_prescription_id'] = $order_prescription_id; // $params['order_prescription_id'] = $order_prescription_id;
$params['doctor_id'] = $user_info['client_user_id']; // $params['doctor_id'] = $user_info['client_user_id'];
$order_prescription = OrderPrescription::getOne($params); // $order_prescription = OrderPrescription::getOne($params);
if (empty($order_prescription)) { // if (empty($order_prescription)) {
return fail(); // return fail();
} // }
//
// 检测处方状态 // // 检测处方状态
if ($order_prescription['prescription_status'] == 4) { // if ($order_prescription['prescription_status'] == 4) {
// 已使用 // // 已使用
return fail(HttpEnumCode::HTTP_ERROR, "处方已使用,无法更改"); // return fail(HttpEnumCode::HTTP_ERROR, "处方已使用,无法更改");
} // }
//
if ($order_prescription['is_delete'] == 1) { // if ($order_prescription['is_delete'] == 1) {
// 已使用 // // 已使用
return fail(HttpEnumCode::HTTP_ERROR, "处方已删除,无法更改"); // return fail(HttpEnumCode::HTTP_ERROR, "处方已删除,无法更改");
} // }
//
if ($order_prescription['prescription_status'] == 1 && $order_prescription['pharmacist_audit_status'] == 0) { // if ($order_prescription['prescription_status'] == 1 && $order_prescription['pharmacist_audit_status'] == 0) {
// 已使用 // // 已使用
return fail(HttpEnumCode::HTTP_ERROR, "处方审核中,不允许修改"); // return fail(HttpEnumCode::HTTP_ERROR, "处方审核中,不允许修改");
} // }
//
// 获取处方订单数据 // // 获取处方订单数据
$params = array(); // $params = array();
$params['order_inquiry_id'] = $order_prescription['order_inquiry_id']; // $params['order_inquiry_id'] = $order_prescription['order_inquiry_id'];
$order_inquiry = OrderInquiry::getOne($params); // $order_inquiry = OrderInquiry::getOne($params);
if (empty($order_inquiry)){ // if (empty($order_inquiry)){
return fail(HttpEnumCode::SERVER_ERROR,"问诊订单数据为空"); // return fail(HttpEnumCode::SERVER_ERROR,"问诊订单数据为空");
} // }
//
if ($order_inquiry['inquiry_status'] == 5){ // if ($order_inquiry['inquiry_status'] == 5){
return fail(HttpEnumCode::HTTP_ERROR,"问诊已完成,无法重开处方"); // return fail(HttpEnumCode::HTTP_ERROR,"问诊已完成,无法重开处方");
} // }
//
if ($order_inquiry['inquiry_status'] == 6){ // if ($order_inquiry['inquiry_status'] == 6){
return fail(HttpEnumCode::HTTP_ERROR,"问诊已结束,无法重开处方"); // return fail(HttpEnumCode::HTTP_ERROR,"问诊已结束,无法重开处方");
} // }
//
if ($order_inquiry['inquiry_status'] == 7){ // if ($order_inquiry['inquiry_status'] == 7){
return fail(HttpEnumCode::HTTP_ERROR,"问诊已取消,无法重开处方"); // return fail(HttpEnumCode::HTTP_ERROR,"问诊已取消,无法重开处方");
} // }
//
if ($order_inquiry['inquiry_status'] != 4){ // if ($order_inquiry['inquiry_status'] != 4){
return fail(HttpEnumCode::HTTP_ERROR,"问诊状态错误,无法重开处方"); // return fail(HttpEnumCode::HTTP_ERROR,"问诊状态错误,无法重开处方");
} // }
//
Db::beginTransaction(); // Db::beginTransaction();
//
try { // try {
// 删除订单-处方关联疾病表 // // 删除订单-处方关联疾病表
$params = array(); // $params = array();
$params['order_prescription_id'] = $order_prescription_id; // $params['order_prescription_id'] = $order_prescription_id;
OrderPrescriptionIcd::deleteOrderPrescriptionIcd($params); // OrderPrescriptionIcd::deleteOrderPrescriptionIcd($params);
//
// 处方疾病数据 // // 处方疾病数据
foreach ($prescription_icd as $item) { // foreach ($prescription_icd as $item) {
// 获取疾病信息 // // 获取疾病信息
$params = array(); // $params = array();
$params['icd_id'] = $item; // $params['icd_id'] = $item;
$disease_class_icd = DiseaseClassIcd::getOne($params); // $disease_class_icd = DiseaseClassIcd::getOne($params);
if (empty($disease_class_icd)) { // if (empty($disease_class_icd)) {
Db::rollBack(); // Db::rollBack();
return fail(); // return fail();
} // }
//
// 新增处方疾病 // // 新增处方疾病
$data = array(); // $data = array();
$data['order_prescription_id'] = $order_prescription_id; // $data['order_prescription_id'] = $order_prescription_id;
$data['icd_id'] = $item; // $data['icd_id'] = $item;
$data['icd_name'] = $disease_class_icd['icd_name']; // $data['icd_name'] = $disease_class_icd['icd_name'];
$data['icd_code'] = $disease_class_icd['icd_code']; // $data['icd_code'] = $disease_class_icd['icd_code'];
$order_prescription_icd = OrderPrescriptionIcd::addOrderPrescriptionIcd($data); // $order_prescription_icd = OrderPrescriptionIcd::addOrderPrescriptionIcd($data);
if (empty($order_prescription_icd)) { // if (empty($order_prescription_icd)) {
Db::rollBack(); // Db::rollBack();
return fail(); // return fail();
} // }
//
unset($disease_class_icd); // unset($disease_class_icd);
} // }
//
// 删除订单-处方药品表 // // 删除订单-处方药品表
$params = array(); // $params = array();
$params['order_prescription_id'] = $order_prescription_id; // $params['order_prescription_id'] = $order_prescription_id;
OrderPrescriptionProduct::deleteOrderPrescriptionProduct($params); // OrderPrescriptionProduct::deleteOrderPrescriptionProduct($params);
//
// 处方商品数据 // // 处方商品数据
$product_name = ""; // $product_name = "";
foreach ($prescription_product as $item) { // foreach ($prescription_product as $item) {
// 获取商品数据 // // 获取商品数据
$params = array(); // $params = array();
$params['product_id'] = $item['product_id']; // $params['product_id'] = $item['product_id'];
$product = Product::getWithAmountOne($params); // $product = Product::getWithAmountOne($params);
if (empty($product)) { // if (empty($product)) {
Db::rollBack(); // Db::rollBack();
return fail(); // return fail();
} // }
//
if (empty($product['ProductPlatformAmount'])) { // if (empty($product['ProductPlatformAmount'])) {
// 无药品库存数据 // // 无药品库存数据
Db::rollBack(); // Db::rollBack();
return fail(); // return fail();
} // }
//
// 检测药品库存数据 // // 检测药品库存数据
if ($item['prescription_product_num'] > $product['ProductPlatformAmount']['stock']) { // if ($item['prescription_product_num'] > $product['ProductPlatformAmount']['stock']) {
// 库存不足 // // 库存不足
Db::rollBack(); // Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, "药品" . $product['product_name'] . "库存不足"); // return fail(HttpEnumCode::HTTP_ERROR, "药品" . $product['product_name'] . "库存不足");
} // }
//
// 新增订单-处方药品表 // // 新增订单-处方药品表
$data = array(); // $data = array();
$data['order_prescription_id'] = $order_prescription_id; // $data['order_prescription_id'] = $order_prescription_id;
$data['product_id'] = $item['product_id']; // $data['product_id'] = $item['product_id'];
$data['prescription_product_num'] = $item['prescription_product_num']; // $data['prescription_product_num'] = $item['prescription_product_num'];
$data['product_name'] = $product['product_name']; // $data['product_name'] = $product['product_name'];
$data['product_spec'] = $product['product_spec']; // $data['product_spec'] = $product['product_spec'];
$data['license_number'] = $product['license_number']; // $data['license_number'] = $product['license_number'];
$data['manufacturer'] = $product['manufacturer']; // $data['manufacturer'] = $product['manufacturer'];
$data['single_unit'] = $item['single_unit'] ?? $product['single_unit']; // $data['single_unit'] = $item['single_unit'] ?? $product['single_unit'];
$data['single_use'] = $item['single_use'] ?? $product['single_use']; // $data['single_use'] = $item['single_use'] ?? $product['single_use'];
$data['packaging_unit'] = $item['packaging_unit'] ?? $product['packaging_unit']; // $data['packaging_unit'] = $item['packaging_unit'] ?? $product['packaging_unit'];
$data['frequency_use'] = $item['frequency_use'] ?? $product['frequency_use']; // $data['frequency_use'] = $item['frequency_use'] ?? $product['frequency_use'];
$data['available_days'] = $item['available_days'] ?? $product['available_days']; // $data['available_days'] = $item['available_days'] ?? $product['available_days'];
$order_prescription_product = OrderPrescriptionProduct::addOrderPrescriptionProduct($data); // $order_prescription_product = OrderPrescriptionProduct::addOrderPrescriptionProduct($data);
if (empty($order_prescription_product)) { // if (empty($order_prescription_product)) {
Db::rollBack(); // Db::rollBack();
return fail(); // return fail();
} // }
//
$product_name = $product_name . ";" . $product['product_name']; // $product_name = $product_name . ";" . $product['product_name'];
unset($product); // unset($product);
} // }
//
$OrderPrescriptionService = new OrderPrescriptionService(); // $OrderPrescriptionService = new OrderPrescriptionService();
$prescription_open_result = $OrderPrescriptionService->openPrescription($order_prescription->order_prescription_id,$user_info['user_id']); // $prescription_open_result = $OrderPrescriptionService->openPrescription($order_prescription->order_prescription_id,$user_info['user_id']);
if (empty($prescription_open_result['prescription_img_url'])){ // if (empty($prescription_open_result['prescription_img_url'])){
Db::rollBack(); // Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR, "处方开具失败"); // return fail(HttpEnumCode::SERVER_ERROR, "处方开具失败");
} // }
//
// 修改处方表 // // 修改处方表
$data = array(); // $data = array();
$data['prescription_img'] = $prescription_open_result['prescription_img_url']; // $data['prescription_img'] = $prescription_open_result['prescription_img_url'];
$data['doctor_created_time'] = date('Y-m-d H:i:s',time()); // $data['doctor_created_time'] = date('Y-m-d H:i:s',time());
$data['prescription_status'] = 1; // 处方状态1:待审核 3:待使用 4:已失效 5:已使用) // $data['prescription_status'] = 1; // 处方状态1:待审核 3:待使用 4:已失效 5:已使用)
$data['pharmacist_audit_status'] = 0; // 药师审核驳回原因 // $data['pharmacist_audit_status'] = 0; // 药师审核驳回原因
$data['pharmacist_fail_reason'] = ""; // 药师审核驳回原因 // $data['pharmacist_fail_reason'] = ""; // 药师审核驳回原因
$data['platform_audit_status'] = 0; // 处方平台审核状态0:审核中 1:审核成功 2:审核驳回) // $data['platform_audit_status'] = 0; // 处方平台审核状态0:审核中 1:审核成功 2:审核驳回)
$data['platform_fail_reason'] = ""; // 处方平台驳回原因 // $data['platform_fail_reason'] = ""; // 处方平台驳回原因
$data['doctor_created_time'] = date('Y-m-d H:i:s',time()); // $data['doctor_created_time'] = date('Y-m-d H:i:s',time());
if ($order_prescription['doctor_advice'] != $doctor_advice) { // if ($order_prescription['doctor_advice'] != $doctor_advice) {
$data['doctor_advice'] = $doctor_advice; // 医嘱 // $data['doctor_advice'] = $doctor_advice; // 医嘱
} // }
//
$params = array(); // $params = array();
$params['order_prescription_id'] = $order_prescription['order_prescription_id']; // $params['order_prescription_id'] = $order_prescription['order_prescription_id'];
OrderPrescription::edit($params,$data); // OrderPrescription::edit($params,$data);
//
// 发送IM消息-处方已开具 // // 发送IM消息-处方已开具
$imService = new ImService(); // $imService = new ImService();
$imService->prescriptionIssued($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id'],$product_name,(string)$order_prescription['order_prescription_id'],6); // $imService->prescriptionIssued($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id'],$product_name,(string)$order_prescription['order_prescription_id'],6);
//
// 加入分配药师队列 // // 加入分配药师队列
$data = array(); // $data = array();
$data['order_prescription_id'] = $order_prescription_id; // $data['order_prescription_id'] = $order_prescription_id;
//
$message = new AssignPharmacistProducer($data); // $message = new AssignPharmacistProducer($data);
$producer = ApplicationContext::getContainer()->get(Producer::class); // $producer = ApplicationContext::getContainer()->get(Producer::class);
$result = $producer->produce($message); // $result = $producer->produce($message);
if (!$result) { // if (!$result) {
Db::rollBack(); // Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR); // return fail(HttpEnumCode::SERVER_ERROR);
} // }
//
Db::commit(); // Db::commit();
} catch (\Exception $e) { // } catch (\Exception $e) {
Db::rollBack(); // Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR, $e->getMessage()); // return fail(HttpEnumCode::SERVER_ERROR, $e->getMessage());
} // }
return success(); return success();
} }
@ -2583,19 +2581,29 @@ class UserDoctorService extends BaseService
$params['inquiry_mode'] = $inquiry_mode; $params['inquiry_mode'] = $inquiry_mode;
$system_inquiry_config = SystemInquiryConfig::getOne($params); $system_inquiry_config = SystemInquiryConfig::getOne($params);
if (!empty($system_inquiry_config)){ if (!empty($system_inquiry_config)){
$max_work_num_day = $system_inquiry_config['max_work_num_day']; return $system_inquiry_config['max_work_num_day'];
}
}else{
$params = array();
$params['doctor_id'] = $doctor_id;
$params['inquiry_type'] = $inquiry_type;
$params['inquiry_mode'] = $inquiry_mode;
$doctor_inquiry_config = DoctorInquiryConfig::getOne($params);
if (!empty($doctor_inquiry_config)){
$max_work_num_day = $doctor_inquiry_config['work_num_day'];
} }
} }
// 健康包
if ($inquiry_type == 1 && $inquiry_mode == 9){
return 9999;
}
// 随访包
if ($inquiry_type == 1 && $inquiry_mode == 8){
return 9999;
}
$params = array();
$params['doctor_id'] = $doctor_id;
$params['inquiry_type'] = $inquiry_type;
$params['inquiry_mode'] = $inquiry_mode;
$doctor_inquiry_config = DoctorInquiryConfig::getOne($params);
if (!empty($doctor_inquiry_config)){
return $doctor_inquiry_config['work_num_day'];
}
return $max_work_num_day; return $max_work_num_day;
} }