diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index e84bdc3..65440fd 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -12,6 +12,7 @@ use App\Model\OrderEvaluation; use App\Model\OrderInquiry; use App\Model\OrderInquiryCase; use App\Model\OrderPrescription; +use App\Model\PatientFamily; use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal; use App\Model\PatientPathography; @@ -104,7 +105,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } // 超出执行次数 - if ($result['code'] == 2){ + if ($result['code'] == 2) { Db::rollBack(); return Result::ACK; } @@ -152,7 +153,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 新增上报监管平台数据 $reportRegulatoryService = new ReportRegulatoryService(); $res = $reportRegulatoryService->addReportRegulatory($order_inquiry['order_inquiry_id']); - if (!$res){ + if (!$res) { // 新增上报失败 Db::rollBack(); Log::getInstance("queue-AutoFinishInquiry")->error("新增上报监管平台数据失败"); @@ -171,7 +172,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage try { // 推送问诊结束im消息 $this->pushImInquiryFinish($order_inquiry); - }catch (\Exception $e){ + } catch (\Exception $e) { Log::getInstance("queue-AutoFinishInquiry")->error("发送消息异常错误:" . $e->getMessage()); } @@ -288,7 +289,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data['doctor_id'] = $order_inquiry['doctor_id']; $data['patient_id'] = $order_inquiry['patient_id']; $data['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; - $data['name_mask'] = Mask::maskNameStr($order_inquiry['patient_name'],2); + $data['name_mask'] = Mask::maskNameStr($order_inquiry['patient_name'], 2); $data['reply_quality'] = 100;//回复质量(百分制) $data['service_attitude'] = 100; // 服务态度(百分制) $data['reply_progress'] = 100; // 回复速度(百分制) @@ -308,120 +309,242 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage * @param array|object $order_inquiry * @return void */ - protected function handleOrderInquiryCase(array|object $order_inquiry): void + protected function handleOrderInquiryCase(array|object $order_inquiry): bool { // 获取订单-问诊病例表 $params = array(); $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $order_inquiry_case = OrderInquiryCase::getOne($params); - if (!empty($order_inquiry_case)) { - // 获取患者家庭成员信息表-健康情况 + if (empty($order_inquiry_case)) { + return false; + } + + // 获取患者家庭成员信息表-基本信息 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $params['status'] = 1; + $patient_family = PatientFamily::getOne($params); + if (empty($patient_family)){ + return false; + } + + $data = array(); + + // 身高 + if ($patient_family['height'] == null && $order_inquiry_case['height'] != null){ + $data['height'] = $order_inquiry_case['height']; + } + + // 体重 + if ($patient_family['weight'] == null && $order_inquiry_case['weight'] != null){ + $data['weight'] = $order_inquiry_case['weight']; + } + + // 婚姻状况(0:未婚 1:已婚 2:离异) + if ($patient_family['marital_status'] == null && $order_inquiry_case['marital_status'] != null){ + $data['marital_status'] = $order_inquiry_case['marital_status']; + } + + // 民族 + if ($patient_family['nation_id'] == null && $order_inquiry_case['nation_id'] != null){ + $data['nation_id'] = $order_inquiry_case['nation_id']; + + // 民族名称 + if ($patient_family['nation_name'] == null && $order_inquiry_case['nation_name'] != null){ + $data['nation_name'] = $order_inquiry_case['nation_name']; + } + } + + // 职业 + if ($patient_family['job_id'] == null && $order_inquiry_case['job_id'] != null){ + $data['job_id'] = $order_inquiry_case['job_id']; + + // 职业名称 + if ($patient_family['job_name'] == null && $order_inquiry_case['job_name'] != null){ + $data['job_name'] = $order_inquiry_case['job_name']; + } + } + + if (!empty($data)) { $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $params['patient_id'] = $order_inquiry['patient_id']; - $patient_family_health = PatientFamilyHealth::getOne($params); + $params['family_id'] = $patient_family['family_id']; + PatientFamily::edit($params, $data); + } + + // 获取患者家庭成员信息表-健康情况 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $patient_family_health = PatientFamilyHealth::getOne($params); + if (empty($patient_family_health)) { + // 表数据为空 + $data = array(); + $data['family_id'] = $order_inquiry['family_id']; + $data['patient_id'] = $order_inquiry['patient_id']; + $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 + $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 + $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 + $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; // 确诊医院 + $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; // 正在服药(0:否 1:是) + $data['drugs_name'] = $order_inquiry_case['drugs_name']; // 正在服药名称 + $patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data); if (empty($patient_family_health)) { - // 表数据为空 - $data = array(); - $data['family_id'] = $order_inquiry['family_id']; - $data['patient_id'] = $order_inquiry['patient_id']; - $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 - $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 - $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 - $patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data); - if (empty($patient_family_health)) { - Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-健康情况表失败"); - } - } else { - $data = array(); - if ($order_inquiry_case['disease_class_id'] != $patient_family_health['disease_class_id']) { - $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 - } + Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-健康情况表失败"); + } + } else { + $data = array(); - if ($order_inquiry_case['disease_class_name'] != $patient_family_health['disease_class_name']) { - $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 - } + // 疾病分类id-系统 + if ($patient_family_health['disease_class_id'] == null && $order_inquiry_case['disease_class_id'] != null) { + $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; - if ($order_inquiry_case['diagnosis_date'] != $patient_family_health['diagnosis_date']) { - $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 - } - - if (!empty($data)) { - $params = array(); - $params['family_health_id'] = $patient_family_health['family_health_id']; - PatientFamilyHealth::edit($params, $data); + // 疾病名称-系统 + if ($patient_family_health['disease_class_name'] == null && $order_inquiry_case['disease_class_name'] != null) { + $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; } } - // 获取患者家庭成员信息表-个人情况 - $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $params['patient_id'] = $order_inquiry['patient_id']; - $patient_family_personal = PatientFamilyPersonal::getOne($params); - if (empty($patient_family_personal)) { - $data = array(); - $data['family_id'] = $order_inquiry['family_id']; - $data['patient_id'] = $order_inquiry['patient_id']; - if ($order_inquiry_case['is_allergy_history'] !== null) { - $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; // 是否存在过敏史(0:否 1:是) - } + // 确诊日期 + if ($patient_family_health['diagnosis_date'] == null && $order_inquiry_case['diagnosis_date'] != null) { + $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; + } + // 确诊医院 + if ($patient_family_health['diagnosis_hospital'] == null && $order_inquiry_case['diagnosis_hospital'] != null) { + $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; + } + + // 正在服药 + if ($patient_family_health['is_take_medicine'] == null && $order_inquiry_case['is_take_medicine'] != null) { + $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; + + // 正在服药名称 + if ($patient_family_health['drugs_name'] == null && $order_inquiry_case['drugs_name'] != null) { + $data['drugs_name'] = $order_inquiry_case['drugs_name']; + } + } + + if (!empty($data)) { + $params = array(); + $params['family_health_id'] = $patient_family_health['family_health_id']; + PatientFamilyHealth::edit($params, $data); + } + } + + // 获取患者家庭成员信息表-个人情况 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $patient_family_personal = PatientFamilyPersonal::getOne($params); + if (empty($patient_family_personal)) { + $data = array(); + $data['family_id'] = $order_inquiry['family_id']; + $data['patient_id'] = $order_inquiry['patient_id']; + + // 是否存在过敏史(0:否 1:是) + if ($order_inquiry_case['is_allergy_history'] !== null) { + $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; + + // 过敏史描述 if ($order_inquiry_case['allergy_history'] != null) { - $data['allergy_history'] = $order_inquiry_case['allergy_history']; // 过敏史描述 + $data['allergy_history'] = $order_inquiry_case['allergy_history']; } + } - if ($order_inquiry_case['is_family_history'] !== null) { - $data['is_family_history'] = $order_inquiry_case['is_family_history']; // 是否存在家族病史(0:否 1:是) - } + // 是否存在家族病史(0:否 1:是) + if ($order_inquiry_case['is_family_history'] !== null) { + $data['is_family_history'] = $order_inquiry_case['is_family_history']; + + // 家族病史描述 if ($order_inquiry_case['family_history'] != null) { - $data['family_history'] = $order_inquiry_case['family_history']; // 家族病史描述 + $data['family_history'] = $order_inquiry_case['family_history']; } + } - if ($order_inquiry_case['is_pregnant'] !== null) { - $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) - } + // 是否备孕、妊娠、哺乳期(0:否 1:是) + if ($order_inquiry_case['is_pregnant'] !== null) { + $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; + // 是否备孕、妊娠、哺乳期(0:否 1:是) if ($order_inquiry_case['pregnant'] != null) { - $data['pregnant'] = $order_inquiry_case['pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) + $data['pregnant'] = $order_inquiry_case['pregnant']; } + } - $patient_family_personal = PatientFamilyPersonal::addPatientFamilyPersonal($data); - if (empty($patient_family_personal)) { - Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-个人情况表失败"); - } - } else { - $data = array(); - if ($order_inquiry_case['is_allergy_history'] !== $patient_family_personal['is_allergy_history']) { - $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; // 是否存在过敏史(0:否 1:是) - } + $patient_family_personal = PatientFamilyPersonal::addPatientFamilyPersonal($data); + if (empty($patient_family_personal)) { + Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-个人情况表失败"); + } + } else { + $data = array(); - if ($order_inquiry_case['allergy_history'] != $patient_family_personal['allergy_history']) { - $data['allergy_history'] = $order_inquiry_case['allergy_history']; // 过敏史描述 - } + // 是否存在过敏史(0:否 1:是) + if ($patient_family_personal['is_allergy_history'] == null && $order_inquiry_case['is_allergy_history'] != null){ + $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; - if ($order_inquiry_case['is_family_history'] !== $patient_family_personal['is_family_history']) { - $data['is_family_history'] = $order_inquiry_case['is_family_history']; // 是否存在家族病史(0:否 1:是) + // 过敏史描述 + if ($patient_family_personal['allergy_history'] == null && $order_inquiry_case['allergy_history'] != null){ + $data['allergy_history'] = $order_inquiry_case['allergy_history']; } + } - if ($order_inquiry_case['family_history'] != $patient_family_personal['family_history']) { - $data['family_history'] = $order_inquiry_case['family_history']; // 家族病史描述 - } + // 是否存在家族病史(0:否 1:是) + if ($patient_family_personal['is_family_history'] == null && $order_inquiry_case['is_family_history'] != null){ + $data['is_family_history'] = $order_inquiry_case['is_family_history']; - if ($order_inquiry_case['is_pregnant'] !== $patient_family_personal['is_pregnant']) { - $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) + // 家族病史描述 + if ($patient_family_personal['family_history'] == null && $order_inquiry_case['family_history'] != null){ + $data['family_history'] = $order_inquiry_case['family_history']; } + } - if ($order_inquiry_case['pregnant'] != $patient_family_personal['pregnant']) { - $data['pregnant'] = $order_inquiry_case['pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) - } + // 是否备孕、妊娠、哺乳期(0:否 1:是) + if ($patient_family_personal['is_pregnant'] == null && $order_inquiry_case['is_pregnant'] != null){ + $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; - if (!empty($data)) { - $params = array(); - $params['family_personal_id'] = $patient_family_personal['family_personal_id']; - PatientFamilyPersonal::edit($params, $data); + // 备孕、妊娠、哺乳期描述 + if ($patient_family_personal['pregnant'] == null && $order_inquiry_case['pregnant'] != null){ + $data['pregnant'] = $order_inquiry_case['pregnant']; } } + + // 是否存在手术(0:否 1:是) + if ($patient_family_personal['is_operation'] == null && $order_inquiry_case['is_operation'] != null){ + $data['is_operation'] = $order_inquiry_case['is_operation']; + + // 手术描述 + if ($patient_family_personal['operation'] == null && $order_inquiry_case['operation'] != null){ + $data['operation'] = $order_inquiry_case['operation']; + } + } + + // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) + if ($patient_family_personal['drink_wine_status'] == null && $order_inquiry_case['drink_wine_status'] != null){ + $data['drink_wine_status'] = $order_inquiry_case['drink_wine_status']; + } + + // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) + if ($patient_family_personal['smoke_status'] == null && $order_inquiry_case['smoke_status'] != null){ + $data['smoke_status'] = $order_inquiry_case['smoke_status']; + } + + // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + if ($patient_family_personal['chemical_compound_status'] == null && $order_inquiry_case['chemical_compound_status'] != null){ + $data['chemical_compound_status'] = $order_inquiry_case['chemical_compound_status']; + + // 化合物描述 + if ($patient_family_personal['chemical_compound_describe'] == null && $order_inquiry_case['chemical_compound_describe'] != null){ + $data['chemical_compound_describe'] = $order_inquiry_case['chemical_compound_describe']; + } + } + + if (!empty($data)) { + $params = array(); + $params['family_personal_id'] = $patient_family_personal['family_personal_id']; + PatientFamilyPersonal::edit($params, $data); + } } } @@ -434,7 +557,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage { $params = array(); $params['doctor_id'] = $doctor_id; - UserDoctor::inc($params,'served_patients_num'); + UserDoctor::inc($params, 'served_patients_num'); } /** @@ -448,7 +571,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params = array(); $params['doctor_id'] = $doctor_id; $order_evaluation_count = OrderEvaluation::getCount($params); - if ($order_evaluation_count == 0){ + if ($order_evaluation_count == 0) { return 0; } @@ -463,7 +586,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data = array(); $data['praise_rate'] = $praise_rate; - UserDoctor::editUserDoctor($params,$data); + UserDoctor::editUserDoctor($params, $data); } /** @@ -481,22 +604,22 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params['doctor_id'] = $doctor_id; $params['inquiry_status'] = 6; $order_inquiry = OrderInquiry::getList($params); - if (!empty($order_inquiry)){ + if (!empty($order_inquiry)) { $order_inquiry = $order_inquiry->toArray(); - foreach ($order_inquiry as $item){ - if (empty($item['reception_time'])){ + foreach ($order_inquiry as $item) { + if (empty($item['reception_time'])) { continue; } $response_time = strtotime($item['reception_time']) - strtotime($item['created_at']); - if ($response_time < 0){ + if ($response_time < 0) { // 小于0的数据不统计 continue; } $avg_response_time[] = $response_time; } - if (!empty($avg_response_time)){ + if (!empty($avg_response_time)) { $result = floor((array_sum($avg_response_time) / count($avg_response_time)) / 60 * 100) / 100; $params = array(); @@ -504,7 +627,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data = array(); $data['avg_response_time'] = $result; - UserDoctor::editUserDoctor($params,$data); + UserDoctor::editUserDoctor($params, $data); } } } @@ -520,13 +643,13 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $is_inquiry = false; $params = array(); - $params[] = ['user_id','=',$order_inquiry['user_id']]; - $params[] = ['doctor_id','=',$order_inquiry['doctor_id']]; - $params[] = ['created_at','>',$order_inquiry['created_at']]; + $params[] = ['user_id', '=', $order_inquiry['user_id']]; + $params[] = ['doctor_id', '=', $order_inquiry['doctor_id']]; + $params[] = ['created_at', '>', $order_inquiry['created_at']]; $order_inquirys = OrderInquiry::getList($params); - if (!empty($order_inquirys)){ - foreach ($order_inquirys as $item){ - if ($item['order_inquiry_id'] == $order_inquiry['order_inquiry_id']){ + if (!empty($order_inquirys)) { + foreach ($order_inquirys as $item) { + if ($item['order_inquiry_id'] == $order_inquiry['order_inquiry_id']) { continue; } $is_inquiry = true; @@ -534,15 +657,15 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } } - if (!$is_inquiry){ + if (!$is_inquiry) { // 获取医生数据 $params = array(); $params['doctor_id'] = $order_inquiry['doctor_id']; $user_doctor = UserDoctor::getOne($params); - if (!empty($user_doctor)){ + if (!empty($user_doctor)) { // 发送IM消息-问诊已结束 $imService = new ImService(); - $imService->inquiryFinish($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']); + $imService->inquiryFinish($order_inquiry, $user_doctor['user_id'], $order_inquiry['user_id']); } } } @@ -555,7 +678,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage */ protected function handlePatientPathography(array|object $order_inquiry): bool { - if ($order_inquiry['inquiry_type'] != 1 && $order_inquiry['inquiry_type'] != 2 && $order_inquiry['inquiry_type'] != 3 && $order_inquiry['inquiry_type'] != 4){ + if ($order_inquiry['inquiry_type'] != 1 && $order_inquiry['inquiry_type'] != 2 && $order_inquiry['inquiry_type'] != 3 && $order_inquiry['inquiry_type'] != 4) { // 非问诊订单,不进行处理 return true; } @@ -566,7 +689,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params['patient_id'] = $order_inquiry['patient_id']; $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $patient_pathography = PatientPathography::getOne($params); - if (!empty($patient_pathography)){ + if (!empty($patient_pathography)) { return false; } @@ -574,7 +697,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params = array(); $params['order_inquiry_id'] = $order_inquiry["order_inquiry_id"]; $order_inquiry_case = OrderInquiryCase::getOne($params); - if (empty($order_inquiry_case)){ + if (empty($order_inquiry_case)) { Log::getInstance("queue-AutoFinishInquiry")->error("错误:缺少问诊病例表"); return false; } @@ -584,19 +707,19 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data = array(); foreach ($order_inquiry_case as $key => $value) { // 主键跳过 - if ($key == "inquiry_case_id"){ + if ($key == "inquiry_case_id") { continue; } - if ($key == "created_at"){ + if ($key == "created_at") { continue; } - if ($key == "updated_at"){ + if ($key == "updated_at") { continue; } - if ($value == null){ + if ($value == null) { continue; } @@ -607,13 +730,13 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params = array(); $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $order_prescription = OrderPrescription::getOne($params); - if (!empty($order_prescription)){ + if (!empty($order_prescription)) { $data['order_prescription_id'] = $order_prescription['order_prescription_id']; } // 新增病情记录 $patient_pathography = PatientPathography::addPatientPathography($data); - if (empty($patient_pathography)){ + if (empty($patient_pathography)) { Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写病情记录失败"); return false; } @@ -635,7 +758,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage try { $redis = $this->container->get(Redis::class); - }catch (\Throwable $e) { + } catch (\Throwable $e) { Log::getInstance("queue-AutoFinishInquiry")->error($e->getMessage()); $result['message'] = $e->getMessage(); return $result;