获取剩余药品数量修改

This commit is contained in:
wucongxing8150 2024-04-24 17:46:30 +08:00
parent 5103fe875f
commit ace286e096
5 changed files with 164 additions and 108 deletions

View File

@ -166,24 +166,13 @@ class AutoCompleteServicePackageDelayDirectConsumer extends ConsumerMessage
return Result::ACK;
}
$params = array();
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_inquiry = OrderServicePackageInquiry::getOne($params);
if (!empty($order_service_package_inquiry)){
// 获取医生数据
$params = array();
$params['doctor_id'] = $order_service_package['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (!empty($user_doctor)) {
// 医生-通知医生患者的服务包服务结束
$MessagePush = new MessagePush($user_doctor['user_id'], $order_service_package_inquiry['inquiry_no']);
$MessagePush = new MessagePush($user_doctor['user_id'], $order_service_package['order_service_no']);
$MessagePush->doctorServicePackageFinish();
}
// 患者-通知患者服务包服务已结束
$MessagePush = new MessagePush($order_service_package['user_id'], $order_service_package_inquiry['inquiry_no']);
$MessagePush = new MessagePush($order_service_package['user_id'], $order_service_package['order_service_no']);
$MessagePush->patientServicePackageFinish();
}
}catch (\Throwable $e){
Log::getInstance("queue-AutoCompleteServicePackage")->error($e->getMessage());
return Result::ACK;

View File

@ -71,6 +71,7 @@ class SendStationMessageConsumer extends ConsumerMessage
$cloud_custom_data['order_inquiry_id'] = "";
$cloud_custom_data['is_system'] = 1;
$cloud_custom_data['inquiry_type'] = $data['inquiry_type'] ?? "";
$cloud_custom_data['inquiry_mode'] = $data['inquiry_mode'] ?? "";
$cloud_custom_data['message_rounds'] = 0;
$cloud_custom_data['patient_family_data'] = [];

View File

@ -19,6 +19,7 @@ use App\Model\OrderPrescription;
use App\Model\OrderProduct;
use App\Model\OrderProductItem;
use App\Model\OrderServicePackage;
use App\Model\OrderServicePackageCase;
use App\Model\OrderServicePackageDetail;
use App\Model\OrderServicePackageInquiry;
use App\Model\OrderServicePackageProduct;
@ -1139,7 +1140,7 @@ class MessagePush extends BaseService
$producer = ApplicationContext::getContainer()->get(Producer::class);
$result = $producer->produce($message);
if (!$result) {
Log::getInstance("MessagePush")->error("错误:加入站内推送队列失败" . json_encode($data, JSON_UNESCAPED_UNICODE));
Log::getInstance("MessagePush")->error(json_encode($data, JSON_UNESCAPED_UNICODE));
}
// 订阅
@ -3053,18 +3054,26 @@ class MessagePush extends BaseService
public function doctorServicePackageFinish(): void
{
try {
$params = array();
$params['order_service_no'] = $this->order['order_no'];
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)) {
Log::getInstance("MessagePush")->error("服务包订单为空");
return;
}
// 获取问诊订单关联病例
$params = array();
$params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
$order_inquiry_case = OrderInquiryCase::getOne($params);
if (empty($order_inquiry_case)) {
Log::getInstance("MessagePush")->error("问诊病例为空");
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_case= OrderServicePackageCase::getOne($params);
if (empty($order_service_package_case)) {
Log::getInstance("MessagePush")->error("服务包病例为空");
return;
}
// 获取医生数据
$params = array();
$params['doctor_id'] = $this->order_inquiry['doctor_id'];
$params['doctor_id'] = $order_service_package['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance("MessagePush")->error("医生数据为空");
@ -3072,17 +3081,24 @@ class MessagePush extends BaseService
}
// 转换问诊订单订单接诊方式-字符串
$inquiry_mode = orderServiceTypeToString($this->order_inquiry['inquiry_mode']);
$order_service_type = orderServiceTypeToString($order_service_package['order_service_type']);
if ($order_service_package['order_service_type'] == 1){
$inquiry_mode = 8;
}else{
$inquiry_mode = 9;
}
// 站内
$data = array();
$data['user_id'] = $this->user['user_id'];
$data['notice_type'] = 1;
$data['inquiry_type'] = $this->order_inquiry['inquiry_type']; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
$data['inquiry_type'] = 1; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
$data['inquiry_mode'] = $inquiry_mode; // 接诊方式1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包)
$data['from_name'] = "肝胆小秘书";
$data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。";
$data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。";
$data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。";
$data['notice_brief_title'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。";
$data['notice_title'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。";
$data['notice_content'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。";
$message = new SendStationMessageProducer($data);
$producer = ApplicationContext::getContainer()->get(Producer::class);
@ -3093,7 +3109,7 @@ class MessagePush extends BaseService
// 订阅
// 问诊内容-病情主诉
$disease_desc = $order_inquiry_case['disease_desc'];
$disease_desc = $order_service_package_case['disease_desc'];
if (!empty($disease_desc)) {
if (strlen($disease_desc) > 15) {
$disease_desc = mb_substr($disease_desc, 0, 15);
@ -3109,7 +3125,7 @@ class MessagePush extends BaseService
$sub_data['wx_template_id'] = "G1RIs0RYqsTQ2CuPQWalIMyb6_deuEEbJfajfhGvNzc"; // 咨询提醒
$sub_data['params']['page'] = "Pages/yishi/wenzhen_v2/wenzhen";
$sub_data['params']['data'] = [
"thing1" => "{$inquiry_mode}服务已完成",// 提醒内容
"thing1" => "{$order_service_type}服务已完成",// 提醒内容
"name2" => $this->order_inquiry['patient_name'],// 患者姓名
"thing4" => $disease_desc,// 病情描述
"thing6" => "您可以提醒患者进行续费",// 提示说明
@ -3181,6 +3197,7 @@ class MessagePush extends BaseService
$data['user_id'] = $this->user['user_id'];
$data['notice_type'] = 3;
$data['notice_system_type'] = 1;
$data['inquiry_mode'] = $this->order_inquiry['inquiry_mode']; // 接诊方式1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包)
$data['from_name'] = "肝胆小秘书";
$data['notice_brief_title'] = "您购买的{$order_type}服务,医生已接受,点击查看详情。";
$data['notice_title'] = "您购买的{$order_type}服务,医生已接受,点击查看详情。";
@ -3195,7 +3212,7 @@ class MessagePush extends BaseService
$link_params['patient_user_id'] = $this->order_inquiry['user_id'];
$data['link_params'] = json_encode($link_params, JSON_UNESCAPED_UNICODE);// 跳转参数
$data['button_type'] = 4; // 问诊详情
$data['button_type'] = 4;
$message = new SendStationMessageProducer($data);
$producer = ApplicationContext::getContainer()->get(Producer::class);
@ -3269,10 +3286,13 @@ class MessagePush extends BaseService
// 转换服务包订单类型为汉字
$order_type = orderServiceTypeToString($this->order_service_package['order_service_type']);
// 获取服务包当月已问诊次数
if ($order_service_package_detail['monthly_frequency'] != 0 && !empty($this->order_service_package['start_time'])) {
$OrderServicePackageService = new OrderServicePackageService();
if ($order_service_package_detail['monthly_frequency'] != 0) {
// 获取服务包当月已问诊次数
$month_inquiry_count = $OrderServicePackageService->getCurrentMonthInquiryCount($this->order_service_package['pay_time'],$this->order_service_package['order_service_type'],$this->order_service_package['user_id'], $this->order_service_package['doctor_id']);
// 获取服务包当月剩余问诊次数
$remaining_inquiry_count = $order_service_package_detail['monthly_frequencys'] - $month_inquiry_count;
if ($remaining_inquiry_count < 0){
$remaining_inquiry_count = 0;
@ -3284,19 +3304,11 @@ class MessagePush extends BaseService
// 获取剩余药品数量
$remaining_quantity = 0;
if ($this->order_service_package['order_service_type'] == 1){
$OrderServicePackageService = new OrderServicePackageService();
$params = array();
$params['order_service_id'] = $this->order_service_package['order_service_id'];
$order_service_package_products = OrderServicePackageProduct::getList($params);
if (!empty($order_service_package_products)){
foreach ($order_service_package_products as $order_service_package_product){
// 获取服务包内某一药品的总数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_product['product_id']);
// 获取服务包内所有药品
$health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']);
foreach ($health_package_products as $health_package_product) {
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$order_service_package_product['product_id'],$total_quantity);
}
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']);
}
}
@ -3305,6 +3317,7 @@ class MessagePush extends BaseService
$data['user_id'] = $this->user['user_id'];
$data['notice_type'] = 3;
$data['notice_system_type'] = 1;
$data['inquiry_mode'] = $this->order_inquiry['inquiry_mode']; // 接诊方式1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包)
$data['from_name'] = "肝胆小秘书";
$data['notice_brief_title'] = "您使用{$order_type}服务中问诊,医生已接诊,点击查看详情。";
$data['notice_title'] = "您使用{$order_type}服务中问诊,医生已接诊,点击查看详情。";
@ -3397,14 +3410,12 @@ class MessagePush extends BaseService
$data['link_type'] = 15;
$link_params = array();
$link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
$link_params['order_no'] = $this->order['order_no'];
$link_params['inquiry_type'] = $this->order_inquiry['inquiry_type'];
$link_params['doctor_user_id'] = $user_doctor['user_id'];
$link_params['patient_user_id'] = $this->order_inquiry['user_id'];
$link_params['patient_user_id'] = $this->order_service_package['user_id'];
$data['link_params'] = json_encode($link_params, JSON_UNESCAPED_UNICODE);// 跳转参数
$data['button_type'] = 4; // 问诊详情
$data['button_type'] = 4;
$message = new SendStationMessageProducer($data);
$producer = ApplicationContext::getContainer()->get(Producer::class);
@ -3426,17 +3437,6 @@ class MessagePush extends BaseService
}
// 订阅
$sub_data = array();
$sub_data['push_user_id'] = $this->user['user_id'];
$sub_data['wx_template_id'] = "9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE";// 问诊提醒
$sub_data['params']['page'] = "patient/pages/orderDetail/orderDetail?order_inquiry_id={$this->order_inquiry['order_inquiry_id']}";
$sub_data['params']['data'] = [
"thing1" => "使用{$order_type}服务中问诊",// 问诊内容
"thing2" => "医生已接诊",// 提醒内容
"name3" => (string)$user_doctor['user_name'],// 问诊医生
"thing4" => "点击查看详情",// 提示说明
];
$sub_data = array();
$sub_data['push_user_id'] = $this->user['user_id'];
$sub_data['wx_template_id'] = "9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE";// 问诊提醒
@ -3467,9 +3467,10 @@ class MessagePush extends BaseService
/**
* 患者-通知患者服务包药品未使用完
* 站内
* @param string|int $remaining_quantity
* @return void
*/
public function patientServicePackageHaveProduct(): void
public function patientServicePackageHaveProduct(string|int $remaining_quantity = 0): void
{
try {
// 获取医生数据
@ -3481,24 +3482,37 @@ class MessagePush extends BaseService
return;
}
if ($remaining_quantity == 0){
$OrderServicePackageService = new OrderServicePackageService();
// 获取剩余药品数量
$remaining_quantity = 0;
$params = array();
$params['order_service_id'] = $this->order_service_package['order_service_id'];
$order_service_package_products = OrderServicePackageProduct::getList($params);
if (!empty($order_service_package_products)){
foreach ($order_service_package_products as $order_service_package_product){
// 获取服务包内某一药品的总数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_product['product_id']);
// 获取服务包订单编号-通过问诊订单id
$order_service_no = $OrderServicePackageService->getOrderServiceNoByOrderInquiryId($this->order_inquiry['inquiry_no']);
// 获取服务包订单
$params = array();
$params['order_service_no'] = $order_service_no;
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)){
Log::getInstance("MessagePush")->error("服务包订单错误");
return;
}
// 获取服务包订单详情
$params = array();
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_detail = OrderServicePackageDetail::getOne($params);
if (empty($order_service_package_detail)){
Log::getInstance("MessagePush")->error("服务包订单详情错误");
return;
}
// 获取服务包内所有药品
$health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']);
foreach ($health_package_products as $health_package_product) {
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$order_service_package_product['product_id'],$total_quantity);
if ($remaining_quantity > 0){
break;
}
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']);
}
}
// 站内

View File

@ -1354,18 +1354,14 @@ class PatientOrderService extends BaseService
case 3: // 检测订单
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, "非法订单类型");
break;
case 4: // 健康包订单
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, "非法订单类型");
break;
case 5: // 随访包订单
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, "非法订单类型");
break;
default:
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, "支付失败");
@ -1497,6 +1493,22 @@ class PatientOrderService extends BaseService
return fail();
}
// 获取服务包订单
$params = array();
$params['order_service_no'] = $order_service_package_inquiry['order_service_no'];
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)){
return fail();
}
// 获取服务包订单详情
$params = array();
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_detail = OrderServicePackageDetail::getOne($params);
if (empty($order_service_package_detail)){
return fail();
}
// 此处不检测未支付的商品订单,在创建订单时会进行数量的扣减
// 处理商品数量
$OrderServicePackageService = new OrderServicePackageService();
@ -1504,7 +1516,7 @@ class PatientOrderService extends BaseService
$amount_total = 0;
foreach ($product_datas as &$product_data){
// 获取服务包内某一药品的总数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($product_data['product_id']);
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_detail['package_id'],$product_data['product_id']);
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id'],$total_quantity);
@ -2040,6 +2052,22 @@ class PatientOrderService extends BaseService
return fail();
}
// 获取服务包订单
$params = array();
$params['order_service_no'] = $order_service_package_inquiry['order_service_no'];
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)){
return fail();
}
// 获取服务包订单详情
$params = array();
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_detail = OrderServicePackageDetail::getOne($params);
if (empty($order_service_package_detail)){
return fail();
}
// 此处不检测未支付的商品订单,在创建订单时会进行数量的扣减
// 处理商品数量、金额
$OrderServicePackageService = new OrderServicePackageService();
@ -2047,7 +2075,7 @@ class PatientOrderService extends BaseService
$amount_total = 0;
foreach ($product_datas as &$product_data){
// 获取服务包内某一药品的总数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($product_data['product_id']);
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_detail['package_id'],$product_data['product_id']);
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id'],$total_quantity);
@ -3100,13 +3128,11 @@ class PatientOrderService extends BaseService
$result['order_service_package']['current_month_start_date'] = $current_month_date['current_month_start_date'];
$result['order_service_package']['current_month_finish_date'] = $current_month_date['current_month_finish_date'];
// 获取服务包当月已问诊/剩余次数
if ($order_service_package_detail['monthly_frequency'] != 0) {
$OrderServicePackageService = new OrderServicePackageService();
// 获取服务包当月已问诊次数
$month_inquiry_count = $OrderServicePackageService->getCurrentMonthInquiryCount($order_service_package['pay_time'],$order_service_package['order_service_type'],$order_service_package['user_id'], $order_service_package['doctor_id']);
// 获取服务包当月剩余问诊次数
if ($order_service_package_detail['monthly_frequency'] != 0) {
// 获取服务包当月剩余问诊次数
$remaining_inquiry_count = $order_service_package_detail['monthly_frequency'] - $month_inquiry_count;
if ($remaining_inquiry_count < 0){
@ -3114,7 +3140,6 @@ class PatientOrderService extends BaseService
}
}else{
$remaining_inquiry_count = "不限";
$month_inquiry_count = "不限";
}
$result['order_service_package_detail']['month_inquiry_count'] = $month_inquiry_count;
@ -3150,14 +3175,12 @@ class PatientOrderService extends BaseService
// 获取服务包内所有药品
$health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']);
if (!empty($health_package_products)) {
foreach ($health_package_products as $health_package_product) {
// 获取服务包内某一药品的剩余数量
$result['order_service_package_detail']['remaining_quantity'] = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']);
}
}
}
}
return success($result);
}

View File

@ -1962,7 +1962,7 @@ class UserDoctorService extends BaseService
$res = $producer->produce($message);
if (!$res) {
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
return fail(HttpEnumCode::SERVER_ERROR, "接诊失败");
}
Db::commit();
@ -1977,7 +1977,8 @@ class UserDoctorService extends BaseService
$params['doctor_id'] = $order_inquiry['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
return success([],HttpEnumCode::HTTP_SUCCESS,"医生数据错误");
Log::getInstance('UserDoctorService-addDoctorInquiry')->error("医生数据错误");
return success();
}
// 获取病例数据
@ -1985,7 +1986,8 @@ class UserDoctorService extends BaseService
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$order_inquiry_case = OrderInquiryCase::getOne($params);
if (empty($order_inquiry_case)){
return success([],HttpEnumCode::HTTP_SUCCESS,"患者病例错误");
Log::getInstance('UserDoctorService-addDoctorInquiry')->error("患者病例错误");
return success();
}
// 发送IM消息-医生接诊
@ -2002,6 +2004,24 @@ class UserDoctorService extends BaseService
// 获取服务包订单编号-通过问诊订单id
$order_service_no = $OrderServicePackageService->getOrderServiceNoByOrderInquiryId($order_inquiry['inquiry_no']);
// 获取服务包订单
$params = array();
$params['order_service_no'] = $order_service_no;
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)){
Log::getInstance('UserDoctorService-addDoctorInquiry')->error("服务包订单错误");
return success();
}
// 获取服务包订单详情
$params = array();
$params['order_service_id'] = $order_service_package['order_service_id'];
$order_service_package_detail = OrderServicePackageDetail::getOne($params);
if (empty($order_service_package_detail)){
Log::getInstance('UserDoctorService-addDoctorInquiry')->error("服务包订单详情错误");
return success();
}
// 检测问诊是否服务包首次问诊
$is_first = $OrderServicePackageService->isFirstInquiryServicePackage($order_service_no);
if ($is_first){
@ -2012,14 +2032,23 @@ class UserDoctorService extends BaseService
// 患者-通知患者医生已接诊服务包相关问诊订单
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->patientAcceptedServicePackageInquiry();
if ($order_service_package['order_service_type'] == 1){
$remaining_quantity = 0;
// 获取服务包内所有药品
$health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']);
foreach ($health_package_products as $health_package_product) {
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']);
}
// 检测患者服务包内是否还存在剩余药品
$res = $OrderServicePackageService->checkOrderServiceRemainingProduct($order_service_no);
if ($res){
if ($remaining_quantity > 0){
// 患者-通知患者服务包药品未使用完
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->patientServicePackageHaveProduct();
$MessagePush->patientServicePackageHaveProduct($remaining_quantity);
}
}
}
}else{
// 发送站内、订阅、短信消息-医生已接诊
@ -2027,7 +2056,8 @@ class UserDoctorService extends BaseService
$MessagePush->patientAcceptedInquiry();
}
}catch(\Exception $e){
return success([],HttpEnumCode::HTTP_SUCCESS,$e->getMessage());
Log::getInstance('UserDoctorService-addDoctorInquiry')->error($e->getMessage());
return success();
}
return success();
@ -2866,7 +2896,6 @@ class UserDoctorService extends BaseService
return $result;
}
/**
* 获取医生是否可处方图标展示状态
* @param string $doctor_id 医生id