You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
7.0 KiB
PHP
181 lines
7.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API\Third;
|
|
|
|
use App\Http\Controllers\API\His\HisController;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class PacsController extends Controller
|
|
{
|
|
//报到机调用此接口查询预约的记录
|
|
public function GetEntrustInfo(){
|
|
$orderNo = request('orderNo');//医嘱号
|
|
$idCardNumber = request('idCardNumber');//身份证
|
|
$visitSqNo = request('visitSqNo');//门诊挂号流水号/住院流水号
|
|
$dateRange = request('dateRange');//医嘱开单日期
|
|
$requestNo = request('requestNo');//申请单号
|
|
// 判断所有字段是否都为空
|
|
if (empty($orderNo) && empty($idCardNumber) && empty($visitSqNo) && empty($dateRange) && empty($requestNo)) {
|
|
return \Yz::JsonError("缺失查询条件");
|
|
}
|
|
$entrust_list=DB::table('s_list')->select(
|
|
"list_status",
|
|
"is_nullify",
|
|
"reg_num",
|
|
"user_name",
|
|
"user_sex",
|
|
"user_brithday",
|
|
"user_phone",
|
|
"entrust_code",
|
|
"entrust",
|
|
"is_pay",
|
|
"reservation_department",
|
|
"entrust_date",
|
|
"entrust_time",
|
|
"docotr as doctor",
|
|
"patient_type",
|
|
"implement_department",
|
|
"entrust_id",
|
|
"episodeid",
|
|
"RISRAcceptDeptCode",
|
|
"reservation_date",
|
|
"reservation_time",
|
|
"canel_time as cancel_time",
|
|
"warddesc",
|
|
"wardcode",
|
|
"bedname",
|
|
"bedno",
|
|
"app_num",
|
|
"medicalHistory",
|
|
"diagnosisName",
|
|
"idCardNumber",
|
|
"reservation_sources as reservation_sources_id",
|
|
|
|
)->where(['reservation_date'=>date('Y-m-d'),'is_pay'=>1,'is_del'=>0,'is_nullify'=>0]);
|
|
if(isset($dateRange)){
|
|
if(!is_array($dateRange)) return \Yz::JsonError("日期范围必须是数组");
|
|
$entrust_list=$entrust_list->whereBetween('entrust_date',[$dateRange[0],$dateRange[1]]);
|
|
}
|
|
if(isset($orderNo)){
|
|
$entrust_list=$entrust_list->where('entrust_id',$orderNo);
|
|
}
|
|
if(isset($visitSqNo)){
|
|
$entrust_list=$entrust_list->where('episodeid',$visitSqNo);
|
|
}
|
|
if(isset($requestNo)){
|
|
$entrust_list=$entrust_list->where('app_num',$requestNo);
|
|
}
|
|
if(isset($idCardNumber)){
|
|
$entrust_list=$entrust_list->where('idCardNumber',$idCardNumber);
|
|
}
|
|
$entrust_list=$entrust_list->get();
|
|
|
|
|
|
|
|
|
|
$His = new HisController();
|
|
|
|
foreach ($entrust_list as $entrust) {
|
|
$entrust->reservation_sources_name=null;
|
|
if(!empty($entrust->reservation_sources_id)){
|
|
$source=DB::table('s_department_resources')
|
|
->where('id',$entrust->reservation_sources_id)
|
|
->first();
|
|
if(!!$source){
|
|
$parts = explode('-', $source->department_resources_name);
|
|
$entrust->reservation_sources_name = $parts[0];
|
|
}
|
|
}
|
|
$patientHisTypeMap = [
|
|
0 => '03', // I - 住院
|
|
1 => '01', // O - 门诊
|
|
2 => '02', // E - 急诊
|
|
3 => '04', // H - 体检
|
|
];
|
|
$sendHisData = [
|
|
'visitSqNo' => $entrust->episodeid,
|
|
'requestNo' => $entrust->app_num,
|
|
'visitTypeCode' => $patientHisTypeMap[$entrust->patient_type],
|
|
'moOrder' => $entrust->entrust_id,
|
|
];
|
|
$entrust->requestTypeCode='';
|
|
$entrust->requestTypeName='';
|
|
$entrust->orderDeptCode='';
|
|
$res = $His::Get("查询检查申请单", $sendHisData);
|
|
if ($res['code'] == 200) {
|
|
$res_data = $res['data'];
|
|
foreach ($res_data as $data_k => $data_v) {
|
|
$hisInfo=$data_v;
|
|
$entrust->requestTypeCode=$hisInfo['requestTypeCode'];
|
|
$entrust->requestTypeName=$hisInfo['requestTypeName'];
|
|
$entrust->orderDeptCode=$hisInfo['orderDeptCode'];
|
|
}
|
|
}
|
|
}
|
|
return \Yz::JsonReturn(true,'查询完成',$entrust_list);
|
|
|
|
}
|
|
//pacs调用此接口通知已经报道
|
|
public function SignIn(){
|
|
$orderNo = request('orderNo');//医嘱号
|
|
$checkNo = request('checkNo');//报道号(检查号)
|
|
if(!isset($orderNo)) return \Yz::JsonError('医嘱号不能为空');
|
|
if(!isset($checkNo)) return \Yz::JsonError('报道号不能为空');
|
|
$entrust = DB::table('s_list')->where(['entrust_id' => $orderNo,'is_nullify'=>0,'is_del'=>0])->first();
|
|
if(!$entrust) return \Yz::JsonError('未找到对应医嘱');
|
|
if($entrust->list_status <> 1) return \Yz::JsonError('医嘱当前状态无法报道');
|
|
$data = [
|
|
'list_status' => 2,
|
|
'check_num' => $checkNo,
|
|
];
|
|
$u = DB::table('s_list')->where(['entrust_id' => $orderNo])->update($data);
|
|
if($u){
|
|
$i_log = DB::table('s_list_log')->insert([
|
|
'list_id' =>$entrust->id,
|
|
'reg_num' => $entrust->reg_num,
|
|
'old_status' => $entrust->list_status,
|
|
'new_status' => 2,
|
|
'create_user' => '报到机接口',
|
|
'note' => '报到成功',
|
|
'data' => json_encode(['checkNo'=>$checkNo],JSON_UNESCAPED_UNICODE)
|
|
]);
|
|
//通知pacs
|
|
$pacs=new CSharpController();
|
|
$pacs_res=$pacs->SaveApply($entrust->entrust_id);
|
|
$i_log = DB::table('s_list_log')->insert([
|
|
'list_id' =>$entrust->id,
|
|
'reg_num' => $entrust->reg_num,
|
|
'old_status' => $entrust->list_status,
|
|
'new_status' => 2,
|
|
'create_user' => 'Pacs接口',
|
|
'note' => '通知PacS',
|
|
'data' => json_encode($pacs_res,JSON_UNESCAPED_UNICODE)
|
|
]);
|
|
return \Yz::JsonReturn(true,'报道成功',['orderNo'=>$orderNo,'pacs_info'=>$pacs_res]);
|
|
}else{
|
|
return \Yz::JsonError('报道失败');
|
|
}
|
|
|
|
}
|
|
//pacs调用此接口通知取消报道
|
|
public function CancelSignIn(){
|
|
$orderNo = request('orderNo');
|
|
$entrust = DB::table('s_list')->where(['entrust_id' => $orderNo,'is_nullify'=>0,'is_del'=>0])->first();
|
|
if(!$entrust) return \Yz::JsonError('未找到对应医嘱');
|
|
if($entrust->list_status <> 2) return \Yz::JsonError('医嘱当前状态无法取消报道');
|
|
$data = [
|
|
'list_status' => 1,
|
|
'check_num' => '',
|
|
];
|
|
$u = DB::table('s_list')->where(['entrust_id' => $orderNo])->update($data);
|
|
if($u){
|
|
return \Yz::JsonReturn(true,'取消报道成功',['orderNo'=>$orderNo]);
|
|
}else{
|
|
return \Yz::JsonError('取消报道失败');
|
|
}
|
|
}
|
|
|
|
}
|