@ -30,6 +30,8 @@ class PersonController extends Controller
public function GetPersonReportDetail(){
$sfz =request('sfz');
$type =request('type');
$orig_sfz=$sfz;
$tijian_count=0;//最近体检的总数
//HSM加密
$HSM_sfz =\App\Lib\HSM::HsmEncrypt($sfz);
if($HSM_sfz['status']!=true){
@ -41,11 +43,15 @@ class PersonController extends Controller
$info=$info->where('type',$type);
}
$info=$info ->orderBy('id', 'desc')->first();
if($info){
$sixin_info=false;
if(!!$info){
$tijian_count++;
$info->pdfs=count(json_decode($info->pdfs, true));
$info->biao='examination_records';
$item=DB::table('report_result_item')
->where(['examination_id'=>$info->id])
->select(['item_name','item_result','flag'])->get();
$info->items=$item;
if(strlen($info->id_card_num)>30){
//HSM解密
@ -63,8 +69,89 @@ class PersonController extends Controller
}
$info->tel=$HSM_tel['data'];
}
$sixin_info=$info;
return \Yz::Return(true,'',['info'=>$info]);
}
$pingTaiOrgList=['北京市大兴区西红门镇社区卫生服务中心'];
$pingTaiInfo=false;
$pingTai=DB::table('health_certificate_push')
->select('*','identifierValue as id_card_num','examDate as tijian_time','healthExaminationId as tijian_num')
->where(['identifierValue'=>$orig_sfz])
->whereIn('hospitalName',$pingTaiOrgList)
->orderBy('id', 'desc')
->first();
if(!!$pingTai & & $type==1){
$pingTai->biao='health_certificate_push';
$tijian_count++;
$fieldsMap = [
'hasBacterialDysentery' => '细菌性痢疾',
'hasTyphoid' => '伤寒和副伤寒',
'hasViralHepatitis' => '病毒性肝炎(甲型、戊型)',
'hasActiveTB' => '活动性肺结核',
'hasSkinDiseases' => '化脓性或渗出性皮肤病',
'hasHandFungal' => '手部真菌感染性疾病(如手癣、指甲癣等)',
'hasCholera' => '霍乱',
'hasAmebicDysentery' => '阿米巴性痢疾',
'hasHandEczema' => '手部湿疹',
'hasHandPsoriasis' => '手部的银屑病或者鳞屑',
];
$pingTaiInfo=$pingTai;
$pingTaiInfo->type=1;
$item = [];
foreach ($fieldsMap as $field => $name) {
$value = $pingTaiInfo->$field ?? null;
// 根据字段值判断状态
switch ($value) {
case 1:
$status = '有';
break;
case 2:
$status = '无';
break;
case -1:
$status = '未检查';
break;
case null:
$status = '未填写';
break;
default:
$status = '未填写';
}
$d=[
'field' => $field,
'item_name' => $name,
'value' => $value, // 原始值(可选,用于前端判断或回显)
'item_result' => $status, // 中文状态
'flag'=>null,
];
if($status< >'无'){
$d=[
'field' => $field,
'item_name' => $name,
'value' => $value, // 原始值(可选,用于前端判断或回显)
'item_result' => $status, // 中文状态
'flag'=>'异常',
];
}
$item[] = $d;
}
$pingTaiInfo->items=$item;
$pdf=DB::table('health_certificate_push_pdf')
->where([ 'hospitalCode' => $pingTaiInfo->hospitalCode,'healthExaminationId' => $pingTaiInfo->healthExaminationId])
->orderBy('id', 'desc')
->first();
$pingTaiInfo->pdfs=0;
if(!!$pdf){
$pingTaiInfo->pdfs=1;
}
}
if($sixin_info || $pingTaiInfo){
$list=[$sixin_info,$pingTaiInfo];
return \Yz::Return(true,'',['list'=>$list,'tijian_count'=>$tijian_count]);
}else{
return \Yz::echoError1('未找到相关体检信息');
}
@ -75,10 +162,27 @@ class PersonController extends Controller
{
$recordid =request('recordid');
$pdf_num =request('pdf_num');
$biao =request('biao');
if($biao=='examination_records'){
$query=DB::table('examination_records')->where(['id'=>$recordid])->first();
}
if($biao=='health_certificate_push'){
$query=DB::table('health_certificate_push')->where(['id'=>$recordid])->first();
$pdf=DB::table('health_certificate_push_pdf')
->where([ 'hospitalCode' => $query->hospitalCode,'healthExaminationId' => $query->healthExaminationId])
->orderBy('id', 'desc')
->first();
$query->pdfs=json_encode([$pdf->pdf_url],JSON_UNESCAPED_UNICODE);
}
if(!$query) return \Yz::echoError1('未找到对应体检记录');
$pdfs=json_decode($query->pdfs, true);
$pdfurl=$pdfs[$pdf_num];
// 使用 GuzzleHttp 获取第三方 PDF 地址的内容
$client = new Client();
$response = $client->get($pdfurl);