新增处方详情接口

This commit is contained in:
2023-03-01 13:52:06 +08:00
parent 523242ff4c
commit 80b63cd73d
10 changed files with 389 additions and 23 deletions
+51
View File
@@ -0,0 +1,51 @@
<?php
namespace App\Services;
use App\Model\InquiryCaseProduct;
/**
* 病例
*/
class CaseService extends BaseService
{
/**
* 获取病例商品列表
* @param string|int $inquiry_case_id
* @return array
*/
public function getCaseProductlist(string|int $inquiry_case_id): array
{
if (empty($inquiry_case_id)){
return [];
}
$params = array();
$params['inquiry_case_id'] = $inquiry_case_id;
$inquiry_case_products = InquiryCaseProduct::getWithProductList($params);
if (empty($inquiry_case_products)){
return [];
}
$result = [];
foreach ($inquiry_case_products as $inquiry_case_product){
if (!empty($inquiry_case_product['Product'])){
$data = array();
$data['product_id'] = $inquiry_case_product['product_id'];
$data['case_product_num'] = $inquiry_case_product['case_product_num'];
$data['product_name'] = $inquiry_case_product['Product']['product_name'];
$data['product_price'] = $inquiry_case_product['Product']['product_price'];
$data['product_type'] = $inquiry_case_product['Product']['product_type'];
$data['product_cover_img'] = addAliyunOssWebsite($inquiry_case_product['Product']['product_cover_img']);
$data['product_spec'] = $inquiry_case_product['Product']['product_spec'];
$data['license_number'] = $inquiry_case_product['Product']['license_number'];
$data['manufacturer'] = $inquiry_case_product['Product']['manufacturer'];
$data['packaging_unit'] = $inquiry_case_product['Product']['packaging_unit'];
$result[] = $data;
}
}
return $result;
}
}
+37
View File
@@ -3,6 +3,7 @@
namespace App\Services;
use App\Model\OrderPrescription;
use App\Model\OrderProductItem;
use Hyperf\Contract\LengthAwarePaginatorInterface;
class OrderPrescriptionService extends BaseService
@@ -57,4 +58,40 @@ class OrderPrescriptionService extends BaseService
return OrderPrescription::getPage($params, $fields);
}
/**
* 获取处方订单中开方商品数据
* @param string|int $order_inquiry_id
* @param string|int $order_prescription_id
* @return array
*/
public function getproductList(string|int $order_inquiry_id ,string|int $order_prescription_id): array
{
$params = array();
$params['order_inquiry_id'] = $order_inquiry_id;
$params['order_prescription_id'] = $order_prescription_id;
$order_product_items = OrderProductItem::getWithProductList($params);
if(empty($order_product_items)){
return [];
}
$result = [];
foreach ($order_product_items as $order_product_item){
$data = array();
$data['product_item_id'] = $order_product_item['product_item_id'];
$data['product_id'] = $order_product_item['product_id'];
$data['amount'] = $order_product_item['amount'];
$data['product_cover_img'] = addAliyunOssWebsite($order_product_item['product_cover_img']);
$data['single_unit'] = $order_product_item['Product']['single_unit'];
$data['single_use'] = $order_product_item['Product']['single_use'];
$data['packaging_unit'] = $order_product_item['Product']['packaging_unit'];
$data['frequency_use'] = $order_product_item['Product']['frequency_use'];
$result[] = $data;
}
unset($order_product_items);
return $result;
}
}
+2 -19
View File
@@ -44,25 +44,8 @@ class PatientCaseService extends BaseService
if (!empty($order_inquiry_case['order_inquiry'])){
if ($order_inquiry_case['order_inquiry']['inquiry_type'] == 4){
// 问诊购药存在用药意向
$params = array();
$params['inquiry_case_id'] = $order_inquiry_case['inquiry_case_id'];
$inquiry_case_product = InquiryCaseProduct::getWithProductList($params);
if (!empty($inquiry_case_product)){
foreach ($inquiry_case_product as &$item){
if (!empty($item['Product'])){
$item['product_name'] = $item['Product']['product_name'];
$item['product_price'] = $item['Product']['product_price'];
$item['product_type'] = $item['Product']['product_type'];
$item['product_cover_img'] = addAliyunOssWebsite($item['Product']['product_cover_img']);
$item['product_spec'] = $item['Product']['product_spec'];
$item['license_number'] = $item['Product']['license_number'];
$item['manufacturer'] = $item['Product']['manufacturer'];
$item['packaging_unit'] = $item['Product']['packaging_unit'];
unset($item['Product']);
}
}
}
$CaseService = new CaseService();
$inquiry_case_product = $CaseService->getCaseProductlist($order_inquiry_case['inquiry_case_id']);
}
unset($order_inquiry_case['order_inquiry']);
}
+69 -2
View File
@@ -13,10 +13,12 @@ use App\Model\DoctorBankCard;
use App\Model\DoctorExpertise;
use App\Model\DoctorInquiryConfig;
use App\Model\DoctorWord;
use App\Model\InquiryCaseProduct;
use App\Model\OrderEvaluation;
use App\Model\OrderInquiry;
use App\Model\OrderInquiryCase;
use App\Model\OrderPrescription;
use App\Model\OrderProductItem;
use App\Model\User;
use App\Model\UserDoctor;
use App\Model\UserDoctorInfo;
@@ -791,17 +793,82 @@ class UserDoctorService extends BaseService
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$order_prescription_id = $this->request->route('order_prescription_id');
$order_inquiry_id = $this->request->input('order_inquiry_id');
$order_prescription_id = $this->request->input('order_prescription_id');
// 获取医生信息
$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, "非法医生");
}
$res = $this->checkDoctorAuth($user_doctor);
if ($res !== true) {
return fail(HttpEnumCode::HTTP_ERROR, $res);
}
// 获取患者病例表
$fields = [
'inquiry_case_id',
'name',
'sex',
'age',
'disease_desc',
];
$params = array();
$params['order_inquiry_id'] = $order_inquiry_id;
$params['status'] = 1;
$order_inquiry_case = OrderInquiryCase::getOne($params,$fields);
if (empty($order_inquiry_case)){
return fail(HttpEnumCode::HTTP_ERROR,"患者病例信息错误");
}
// 获取用药意向
$CaseService = new CaseService();
$inquiry_case_product = $CaseService->getCaseProductlist($order_inquiry_case['inquiry_case_id']);
if (!empty($order_prescription_id)){
// 获取处方数据
$params = array();
$params['order_prescription_id'] = $order_prescription_id;
$order_prescription = OrderPrescription::getOne($params);
if (empty($order_prescription)){
return fail();
}
// 订单-商品订单列表
$OrderPrescriptionService = new OrderPrescriptionService();
$order_product_items = $OrderPrescriptionService->getproductList($order_inquiry_id,$order_prescription_id);
}
$result = array();
$result['inquiry_case_product'] = $inquiry_case_product;// 用药意向
$result['order_product_items'] = $order_product_items ?? [];// 开方药品
$result['case'] = $order_inquiry_case;// 病例数据
$result['prescription']['doctor_advice'] = $order_prescription['doctor_advice'] ?? "";// 医嘱
return success($result);
}
/**
* 检测医生身份认证
* @param object|array $user_doctor 医生表数据
* @param bool $is_iden_auth 是否检测身份认证
* @param bool $is_idcard 是否检测实名认证
* @param bool $is_multi_point 是否检测多点执业认证
* @return bool|string string:错误信息 bool:通过
*/
public function checkDoctorAuth(object|array $user_doctor): bool|string
public function checkDoctorAuth(object|array $user_doctor,bool $is_iden_auth = true,bool $is_idcard = true,bool $is_multi_point = true): bool|string
{
if (empty($user_doctor)){
throw new BusinessException();