增加问诊购药配置检测
Some checks failed
Build Docker / build (push) Has been cancelled

This commit is contained in:
haomingming 2025-12-26 16:14:39 +08:00
parent 64d1d8294e
commit 9890ae3b45
5 changed files with 192 additions and 0 deletions

View File

@ -111,6 +111,22 @@ class UserDoctorController extends AbstractController
return $this->response->json($data);
}
/**
* 获取处方列表(抄方)
* @return ResponseInterface
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function getTransferPrescriptionList(): ResponseInterface
{
$request = $this->container->get(UserDoctorRequest::class);
$request->scene('getPrescriptionList')->validateResolved();
$UserDoctorService = new UserDoctorService();
$data = $UserDoctorService->getTransferPrescriptionList();
return $this->response->json($data);
}
/**
* 获取医生个人中心数据
* @return ResponseInterface

View File

@ -83,6 +83,14 @@ class OrderPrescription extends Model
return $this->hasOne(UserDoctor::class, 'doctor_id','doctor_id');
}
/**
* 关联问诊订单表
*/
public function OrderInquiry(): HasOne
{
return $this->hasOne(OrderInquiry::class, 'order_inquiry_id','order_inquiry_id');
}
/**
* 获取信息-单条
* @param array $params
@ -163,6 +171,49 @@ class OrderPrescription extends Model
return $data;
}
/**
* 获取处方列表-分页 (抄方)
* @param array $params 条件
* @param array $fields 字段
* @param int|null $page 页码
* @param int|null $per_page 每页个数
* @return array
*/
public static function getTransferWithIcdPage(array $params, array $fields = ["*"], int $page = null, ?int $per_page = 10): array
{
$query = self::with([
'OrderPrescriptionIcd',
'OrderInquiry'
]);
// 如果提供了 doctor_id则添加 OrderInquiry 表的 doctor_id 条件
if (isset($params['doctor_id'])) {
$doctorId = $params['doctor_id'];
// 从 $params 中移除 doctor_id避免在 where($params) 中重复使用
unset($params['doctor_id']);
$query->whereHas('OrderInquiry', function ($q) use ($doctorId) {
$q->where('doctor_id', $doctorId);
});
}
// 应用其他条件
if (!empty($params)) {
$query->where($params);
}
$raw = $query->orderBy('created_at','desc')
->paginate($per_page, $fields, "page", $page);
$data = array();
$data['current_page'] = $raw->currentPage();// 当前页码
$data['total'] = $raw->total();//数据总数
$data['data'] = $raw->items();//数据
$data['per_page'] = $raw->perPage();//每页个数
$data['last_page'] = $raw->lastPage();//最后一页
return $data;
}
/**
* 修改
* @param array $params

View File

@ -185,6 +185,23 @@ class IndexService extends BaseService
// 在线问诊价格
$inquiry_price = "";
//检查是否有问诊购药的配置(抄方需要)
if($doctor['idcard_status'] == 1 && $doctor['iden_auth_status'] == 1 && $doctor['is_bind_bank'] == 1){
$params = array();
$params['doctor_id'] = $doctor['doctor_id'];
$params['inquiry_type'] = 4;
$doctor_inquiry_config_gouyao = DoctorInquiryConfigModel::getOne($params);
if(empty($doctor_inquiry_config_gouyao)){
$data = array();
$data['doctor_id'] = $doctor['doctor_id'];
$data['inquiry_type'] = 4;
$data['inquiry_mode'] = 1;
$data['is_enable'] = 1;
$data['last_enable_method'] = 1;
DoctorInquiryConfigModel::addInquiryConfig($data);
}
}
// 获取医生问诊配置
$params = array();
$params['doctor_id'] = $doctor['doctor_id'];

View File

@ -560,6 +560,111 @@ class UserDoctorService extends BaseService
return success($order_prescriptions);
}
/**
* 获取处方列表(抄方)
* @return array
*/
public function getTransferPrescriptionList(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$pharmacist_audit_status = $this->request->input('pharmacist_audit_status');
$page = $this->request->input('page', 1);
$per_page = $this->request->input('per_page', 10);
// 获取医生信息
$params = array();
$params['doctor_id'] = $user_info['client_user_id'];
$fields = [
'doctor_id',
'iden_auth_status',
'idcard_status',
'multi_point_status',
];
$user_doctor = UserDoctor::getOne($params, $fields);
if (empty($user_doctor)) {
return fail(HttpEnumCode::HTTP_ERROR, "非法医生");
}
if ($user_doctor['iden_auth_status'] != 1) {
return fail(HttpEnumCode::HTTP_ERROR, "请先完成身份认证");
}
if ($user_doctor['idcard_status'] != 1) {
return fail(HttpEnumCode::HTTP_ERROR, "请先完成实名认证");
}
// 获取处方数据
$params = array();
$params['doctor_id'] = $user_info['client_user_id'];
$params['pharmacist_audit_status'] = $pharmacist_audit_status;
$params['is_delete'] = 0;
if ($pharmacist_audit_status == 1){
// 审核通过
$params['platform_audit_status'] = 1;
}
$order_prescriptions = OrderPrescription::getTransferWithIcdPage($params,['*'],$page,$per_page);
if (empty($order_prescriptions)) {
return success($order_prescriptions);
}
// 处理数据
$result = array();
foreach ($order_prescriptions['data'] as $order_prescription) {
$data = array();
$data['order_prescription_id'] = $order_prescription['order_prescription_id'];
$data['order_inquiry_id'] = $order_prescription['order_inquiry_id'];
$data['patient_name'] = $order_prescription['patient_name'];
$data['patient_sex'] = $order_prescription['patient_sex'];
$data['patient_age'] = $order_prescription['patient_age'];
$data['created_at'] = date('Y-m-d H:i:s',strtotime($order_prescription['created_at'])); // 开方时间
$data['pharmacist_audit_status'] = $order_prescription['pharmacist_audit_status'];// 药师审核状态0:审核中 1:审核成功 2:审核驳回)
$data['pharmacist_fail_reason'] = $order_prescription['pharmacist_fail_reason'];// 驳回原因
$data['platform_audit_status'] = $order_prescription['platform_audit_status'];// 处方平台审核状态0:审核中 1:审核成功 2:审核驳回)
$data['platform_fail_reason'] = $order_prescription['platform_fail_reason'];// 处方平台驳回原因
// 获取病例信息
$params = array();
$params['order_inquiry_id'] = $order_prescription['order_inquiry_id'];
$params['status'] = 1;
$order_inquiry_case = OrderInquiryCase::getOne($params);
if (empty($order_inquiry_case)) {
return fail(HttpEnumCode::SERVER_ERROR);
}
// 病情描述
$data['disease_desc'] = $order_inquiry_case['disease_desc'];
// 患病时长
if (empty($order_inquiry_case['diagnosis_date'])) {
$data['diagnosis_date'] = "";
} else {
$data['diagnosis_date'] = date('Y-m-d', strtotime($order_inquiry_case['diagnosis_date']));
}
// 疾病信息
$data['order_prescription_icd'] = $order_prescription['OrderPrescriptionIcd'] ?? [];
// 患者id
$data['patient_id'] = $order_inquiry_case['patient_id'];
// 医生id
$data['doctor_id'] = $order_prescription['doctor_id'];
$result[] = $data;
}
unset($order_prescriptions['data']);
$order_prescriptions['data'] = $result;
return success($order_prescriptions);
}
/**
* 获取医生个人中心数据
* @return array

View File

@ -243,6 +243,9 @@ Router::addGroup('/doctor', function () {
// 获取处方列表
Router::get('', [UserDoctorController::class, 'getPrescriptionList']);
// 获取处方列表(抄方)
Router::get('/transfer', [UserDoctorController::class, 'getTransferPrescriptionList']);
// 获取处方详情
Router::get('/info', [UserDoctorController::class, 'getPrescriptionInfo']);