You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
4.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\admin\controller;
use app\admin\model\Department;
use app\admin\model\Drugs;
use app\admin\model\User;
use app\admin\model\User_Role;
use app\lib\enum\ExceptionType;
use app\lib\exception\HtmlException;
use app\lib\exception\JsonException;
use app\lib\exception\Success;
use app\lib\validate\IdMustBePositiveInt;
use app\viewModel\PatientMedicalView;
use think\Request;
use think\Session;
class PatientMedical extends BaseController
{
public function index(){
$map = [];
if (Request::instance()->isPost()) {
$input = Request::instance()->param();
}
else {
$input = Request::instance()->get();
}
if (!empty($input['code'])){
$map['code'] = $input['code'];
}
$patient = \app\admin\model\PatientInfo::where($map)->column('id');
$patientId['id'] = ['in',$patient];
$medicals = \app\admin\model\PatientMedical::viewQuery(PatientMedicalView::CLASS,"patientDrugsDepartmentList")
->where(['patient_id'=>$patientId['id']])
->paginate(10,false,[
"query" => [
'code' => $map['code'],
]
]);
// $medicalInfos = [];
// foreach($medicals as $key => $medical){
// $medicalInfos[$medical['patientName']][] = $medical;
// }
$total = $medicals->total();
$page = $medicals->render();
$this->assign('page',$page);
$this->assign('total',$total);
$this->assign('code',$map['code']);
$this->assign('medicals',$medicals);
return $this->fetch();
}
//添加药单
public function addMedical(){
if(Request::instance()->isPost()){
$input = Request::instance()->param();
//流水号
$patientId = \app\admin\model\PatientInfo::where(['code'=>$input['code']])->column('id');
if(empty($patientId)){
throw new HtmlException('不存在该患者信息');
}
//药品id与单价
foreach ($input['drugs'] as $key=>$temp){
$drugs[$key] = Drugs::where(['name'=>$temp])->column('id');
if(empty($drugs[$key])){
throw new HtmlException('请检查药品名是否正确');
}
$unitPrice[$key] = Drugs::where(['name'=>$temp])->column('price');
}
//药品价格
foreach ($input['quantity'] as $key=>$temp){
$price[$key] = $unitPrice[$key][0]*$temp;
// p($unitPrice[$key][0]);
// p($temp);
}
//职工id
$doctorId = Session::get('id');
// $drugs['id'] = ['in',$drugs];
for($i=1,$sure=1;$i<=$input['drugsNumber'];$i++){
//判断条件患者id、药品id
$patientMedical = \app\admin\model\PatientMedical::where(['patient_id'=>$patientId[0],'drugs_id'=>$drugs[$i][0]])->find();
// p($drugs[$i][0]);
//注意id 当已存在该药品的数据则将data保存在原id无则增加id
$id = count(\app\admin\model\PatientMedical::where(1)->select());
if(!empty($patientMedical)){
//注意价格与数量 在原有的基础上增加
$data = [
'id' => $patientMedical['id'],
'patient_id' => $patientId[0],
'doctor_id' => $doctorId,
'drugs_id' => $drugs[$i][0],
'quantity' => $patientMedical['quantity'] + $input['quantity'][$i],
'price' => $patientMedical['price']+$price[$i],
];
$patientMedical->save($data);
// $sure=$i;
}
else{
$data = new \app\admin\model\PatientMedical([
'id' => $id+1,
'patient_id' => $patientId[0],
'doctor_id' => $doctorId,
'drugs_id' => $drugs[$i][0],
'quantity' => $input['quantity'][$i],
'price' => $price[$i],
]);
$data->save();
}
}
return $this->success('添加成功');
}
return $this->fetch();
}
//删除患者药单
public function delHandle($id){
$res = \app\admin\model\PatientMedical::where(['id' => $id])->delete();
if($res == 0)
{
throw new JsonException('1','删除失败!');
}
throw new Success('删除成功!');
}
}