增加抄方
Some checks are pending
Build Docker / build (push) Waiting to run

This commit is contained in:
haomingming 2025-12-25 14:49:26 +08:00
parent 171c32881a
commit fe5d86cd46
6 changed files with 105 additions and 18 deletions

View File

@ -171,17 +171,27 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$this->computeDoctorAvgPesponseTime($order_inquiry['doctor_id']);
// 新增上报监管平台数据,只上报 多点执业的医生 20251021 测试分支
if ($user_doctor['multi_point_status'] == 1){//医生多点执业认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
$reportRegulatoryService = new ReportRegulatoryService();
$res = $reportRegulatoryService->addReportRegulatory($order_inquiry['order_inquiry_id']);
if (!$res) {
// 新增上报失败
Db::rollBack();
Log::getInstance("queue-AutoFinishInquiry")->error("新增上报监管平台数据失败");
return Result::REQUEUE;
}
}else{
Log::getInstance("queue-AutoFinishInquiry")->info("非多点执业的医生不上报监管平台");
// if ($user_doctor['multi_point_status'] == 1){//医生多点执业认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
// $reportRegulatoryService = new ReportRegulatoryService();
// $res = $reportRegulatoryService->addReportRegulatory($order_inquiry['order_inquiry_id']);
// if (!$res) {
// // 新增上报失败
// Db::rollBack();
// Log::getInstance("queue-AutoFinishInquiry")->error("新增上报监管平台数据失败");
// return Result::REQUEUE;
// }
// }else{
// Log::getInstance("queue-AutoFinishInquiry")->info("非多点执业的医生不上报监管平台");
// }
//新增抄方功能,所有要全部保存,上报的时候再判断
$reportRegulatoryService = new ReportRegulatoryService();
$res = $reportRegulatoryService->addReportRegulatory($order_inquiry['order_inquiry_id']);
if (!$res) {
// 新增上报失败
Db::rollBack();
Log::getInstance("queue-AutoFinishInquiry")->error("新增上报监管平台数据失败");
return Result::REQUEUE;
}
Db::commit();

View File

@ -100,6 +100,18 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage
return Result::ACK;
}
// 获取抄方医生数据 (如果存在抄方操作)
if(!empty($order_inquiry['transfer_doctor_id'])){
$params = array();
$params['doctor_id'] = $order_inquiry['transfer_doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance("queue-AutoPharmacistCaVerify")->error("错误:抄方医生数据错误");
return Result::ACK;
}
}
// 获取用户数据
$params = array();
$params['patient_id'] = $order_prescription['patient_id'];

View File

@ -319,6 +319,23 @@ class ReportRegulatoryCommand extends HyperfCommand
return false;
}
//判断该问诊是否为抄方
if(!empty($order_inquiry['transfer_doctor_id'])){
$this->line("信息:该问诊为抄方类型,不执行");
return false;
}else{
$params = array();
$params['doctor_id'] = $order_inquiry['doctor_id'];
$user_doctor_info = UserDoctorInfo::getOne($params);
if (empty($user_doctor_info)) {
$this->line("错误:医生详情数据错误,不执行");
return false;
}
if ($user_doctor_info['multi_point_status'] != 1) {
$this->line("错误:医生为非多点执业,不执行");
return false;
}
}
return true;
}

View File

@ -13,11 +13,12 @@ use Hyperf\DbConnection\Db;
use Hyperf\Snowflake\Concern\Snowflake;
/**
* @property int $order_inquiry_id 主键id
* @property int $order_inquiry_id 主键id
* @property int $order_id 订单id
* @property int $user_id 用户id-患者
* @property int $patient_id 患者id
* @property int $doctor_id 医生id未分配时为null
* @property int $transfer_doctor_id 接受抄方的医生id
* @property int $family_id 家庭成员id就诊用户
* @property int $inquiry_type 订单类型1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测)
* @property int $inquiry_mode 接诊方式1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包)
@ -65,7 +66,7 @@ class OrderInquiry extends Model
/**
* The attributes that are mass assignable.
*/
protected array $fillable = ['order_inquiry_id', 'order_id', 'user_id', 'patient_id', 'doctor_id', 'family_id', 'inquiry_type', 'inquiry_mode', 'inquiry_status', 'is_delete', 'inquiry_refund_status', 'inquiry_pay_channel', 'inquiry_pay_status', 'inquiry_no', 'escrow_trade_no', 'amount_total', 'coupon_amount_total', 'payment_amount_total', 'pay_time', 'reception_time', 'complete_time', 'finish_time', 'statistics_status', 'statistics_time', 'is_withdrawal', 'withdrawal_time', 'cancel_time', 'cancel_reason', 'cancel_remarks', 'times_number', 'duration', 'patient_name', 'patient_name_mask', 'patient_sex', 'patient_age', 'created_at', 'updated_at'];
protected array $fillable = ['order_inquiry_id', 'order_id', 'user_id', 'patient_id', 'doctor_id', 'transfer_doctor_id', 'family_id', 'inquiry_type', 'inquiry_mode', 'inquiry_status', 'is_delete', 'inquiry_refund_status', 'inquiry_pay_channel', 'inquiry_pay_status', 'inquiry_no', 'escrow_trade_no', 'amount_total', 'coupon_amount_total', 'payment_amount_total', 'pay_time', 'reception_time', 'complete_time', 'finish_time', 'statistics_status', 'statistics_time', 'is_withdrawal', 'withdrawal_time', 'cancel_time', 'cancel_reason', 'cancel_remarks', 'times_number', 'duration', 'patient_name', 'patient_name_mask', 'patient_sex', 'patient_age', 'created_at', 'updated_at'];
protected string $primaryKey = "order_inquiry_id";

View File

@ -50,6 +50,7 @@ use Hyperf\Utils\Arr;
* @property int $is_enterprise_deep_cooperation 是否企业深度合作医生0: 1:是)
* @property int $is_sys_diagno_cooperation 是否先思达合作医生0: 1:是)
* @property int $is_welfare_cooperation 是否公益问诊合作医生可把公益问诊设为0元
* @property int $is_transfer_prescription 是否接受抄方0: 1:是)
* @property string $qr_code 分享二维码
* @property string $be_good_at 擅长
* @property string $brief_introduction 医生简介
@ -73,7 +74,7 @@ class UserDoctor extends Model
/**
* The attributes that are mass assignable.
*/
protected array $fillable = ['doctor_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'idcard_status', 'iden_auth_status', 'iden_auth_time', 'iden_auth_fail_reason', 'multi_point_status', 'multi_point_time', 'multi_point_fail_reason', 'introduction_status', 'introduction_time', 'is_bind_bank', 'is_recommend', 'avatar', 'doctor_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'hospital_id', 'served_patients_num', 'praise_rate', 'avg_response_time', 'number_of_fans', 'is_img_expert_reception', 'is_img_welfare_reception', 'is_img_quick_reception', 'is_platform_deep_cooperation', 'is_enterprise_deep_cooperation', 'is_sys_diagno_cooperation', 'is_welfare_cooperation', 'qr_code', 'be_good_at', 'brief_introduction', 'created_at', 'updated_at'];
protected array $fillable = ['doctor_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'idcard_status', 'iden_auth_status', 'iden_auth_time', 'iden_auth_fail_reason', 'multi_point_status', 'multi_point_time', 'multi_point_fail_reason', 'introduction_status', 'introduction_time', 'is_bind_bank', 'is_recommend', 'avatar', 'doctor_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'hospital_id', 'served_patients_num', 'praise_rate', 'avg_response_time', 'number_of_fans', 'is_img_expert_reception', 'is_img_welfare_reception', 'is_img_quick_reception', 'is_platform_deep_cooperation', 'is_enterprise_deep_cooperation', 'is_sys_diagno_cooperation', 'is_welfare_cooperation', 'is_transfer_prescription', 'qr_code', 'be_good_at', 'brief_introduction', 'created_at', 'updated_at'];
protected string $primaryKey = "doctor_id";

View File

@ -1336,13 +1336,47 @@ class UserDoctorService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR, $res);
}
if ($user_doctor['multi_point_status'] != 1) {
return fail(HttpEnumCode::HTTP_ERROR, "请先完成多点执业认证");
$is_transfer_prescription = false; // 是否抄方医生 false不是抄方医生 true抄方医生
$transfer_doctor = null; // 抄方医生
Db::beginTransaction();
try {
if ($user_doctor['multi_point_status'] != 1) {
//查找可接受抄方的医生
$params = array();
$params['is_transfer_prescription'] = 1;
$params['multi_point_status'] = 1;
$transfer_prescription_list = UserDoctor::getList($params);
if (!empty($transfer_prescription_list)) {
$transfer_doctor = $transfer_prescription_list[0];//取第一个抄方医生
$is_transfer_prescription = true;
//修改抄方医生id
$data = array();
$data['transfer_doctor_id'] = $transfer_doctor['doctor_id'];
$params = array();
$params['order_inquiry_id'] = $order_inquiry_id;
$res = OrderInquiry::edit($params,$data);
if (!$res) {
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, "开具处方失败");
}
}
return fail(HttpEnumCode::HTTP_ERROR, "请先完成多点执业认证");
}
} catch (\Exception $e) {
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, "开具处方失败");
}
// 获取医生问诊配置-问诊购药
$params = array();
$params['doctor_id'] = $user_doctor['doctor_id'];
if ($is_transfer_prescription){
$params['doctor_id'] = $transfer_doctor['doctor_id'];
}
$params['inquiry_type'] = 4;
$params['inquiry_mode'] = 1;
$doctor_inquiry_config = DoctorInquiryConfig::getOne($params);
@ -1398,7 +1432,7 @@ class UserDoctorService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR, "请填写病情主诉");
}
Db::beginTransaction();
$generator = $this->container->get(IdGeneratorInterface::class);
try {
@ -1416,12 +1450,18 @@ class UserDoctorService extends BaseService
$data = array();
$data['order_inquiry_id'] = $order_inquiry_id;
$data['doctor_id'] = $user_info['client_user_id'];
if ($is_transfer_prescription){
$data['doctor_id'] = $transfer_doctor['doctor_id'];
}
$data['patient_id'] = $order_inquiry['patient_id'];
$data['family_id'] = $order_inquiry['family_id'];
$data['prescription_status'] = 1;
$data['doctor_created_time'] = date('Y-m-d H:i:s',time());
$data['prescription_code'] = $generator->generate(); // 处方编号
$data['doctor_name'] = $user_doctor['user_name']; // 医生名称
if ($is_transfer_prescription){
$data['doctor_name'] = $transfer_doctor['user_name'];
}
$data['patient_name'] = $order_inquiry['patient_name'];
$data['patient_sex'] = $order_inquiry['patient_sex'];
$data['patient_age'] = $order_inquiry['patient_age'];
@ -1542,8 +1582,14 @@ class UserDoctorService extends BaseService
// 开具处方
$OrderPrescriptionService = new OrderPrescriptionService();
$user_id = "";
if ($is_transfer_prescription){
$user_id = $transfer_doctor['user_id'];
}else{
$user_id = $user_info['user_id'];
}
dump($user_info['user_id']);
$prescription_open_result = $OrderPrescriptionService->openPrescription($order_prescription->order_prescription_id,2,$user_info['user_id']);
$prescription_open_result = $OrderPrescriptionService->openPrescription($order_prescription->order_prescription_id,2,$user_id);
if (empty($prescription_open_result['prescription_img_oss_path']) || empty($prescription_open_result['file_id'])){
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR, "处方开具失败");