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.

247 lines
12 KiB
PHP

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\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
class PingTaiPushController extends Controller
{
public function GetList()
{
$searchInfo = request('searchInfo');
$page =request('page');
$pageSize =request('pageSize');
if(!empty($searchInfo['dateRange'])){
$searchInfo['dateRange']=[
$searchInfo['dateRange'][0]." 00:00:00",
$searchInfo['dateRange'][1]." 23:59:59"
];
}
$list = DB::table('health_certificate_push');
if (isset($searchInfo['dateRange']) && count($searchInfo['dateRange'])==2) {
$list = $list->whereBetween('created_at', $searchInfo['dateRange']);
}
if (isset($searchInfo['userinfo']) && !empty($searchInfo['userinfo'])) {
$list = $list->where(function($query) use ($searchInfo) {
$query->where('name', 'like', '%' . $searchInfo['userinfo'] . '%')
->orWhere('tel', '=', $searchInfo['userinfo'])
->orWhere('identifierValue', '=', $searchInfo['userinfo']);
});
}
if (isset($searchInfo['orgname'])) {
$list = $list->where('hospitalName', 'like', '%' . $searchInfo['orgname'] . '%');
}
if (isset($searchInfo['hospitalCode'])) {
$list = $list->where('hospitalCode', $searchInfo['hospitalCode']);
}
$count = $list->count();
$list = $list->orderBy('created_at', 'desc')->skip(($page-1)*$pageSize)->take($pageSize)->get();
foreach ($list as $k => $v) {
$list[$k]->pdf_url=null;
$pdf=DB::table('health_certificate_push_pdf')->where([ 'hospitalCode' => $v->hospitalCode,'healthExaminationId' => $v->healthExaminationId])->first();
if(!!$pdf){
$list[$k]->pdf_url=$pdf->pdf_url;
}
}
return \Yz::Return(true, "查询完成", ['list' => $list,'count'=>$count]);
}
public function GetPingTaiOrgList()
{
$list = DB::table('health_certificate_push')->select('hospitalCode','hospitalName')->groupBy('hospitalCode','hospitalName')->get();
return \Yz::Return(true, "查询完成", ['list' => $list]);
}
public function GetDetail()
{
$id = request('id');
// 获取原始信息
$info = DB::table('health_certificate_push')->where('id', $id)->first();
if (!$info) {
return \Yz::Return(false, "未找到对应数据");
}
// 将对象转换为数组以便处理
$infoArray = (array)$info;
// 创建英文字段到中文字段的完整映射表
$fieldMapping = [
'hospitalCode' => '医疗机构编码',
'hospitalName' => '医疗机构名称',
'postTime' => '数据上传时间',
'usci' => '统一社会信用代码',
'healthExaminationId' => '体检登记号',
'examTypeCode' => '从业人员健康检查类别代码',
'examTypeName' => '从业人员健康检查类别名称',
'examTypeText' => '从业人员健康检查类别显示文本',
'examDate' => '体检日期',
'healthCertificateId' => '唯一标识',
'billingStatus' => '收费状态0 免费1 自费',
'name' => '姓名',
'photo' => '照片',
'tel' => '电话',
'gender' => '性别代码',
'genderName' => '性别名称',
'identifierTypeCode' => '身份证件类别代码',
'identifierTypeName' => '身份证件类别名称',
'identifierValue' => '身份证件号码',
'hasBacterialDysentery' => '细菌性痢疾1有 2无',
'bacterialDysenteryNote' => '细菌性痢疾-备注',
'bacterialDysenteryPractitionerNumber' => '细菌性痢疾-检查医师执业证书编号',
'bacterialDysenteryPractitionerLocalId' => '细菌性痢疾-检查医师机构内编码',
'bacterialDysenteryPractitionerName' => '细菌性痢疾-检查医师',
'bacterialDysenteryDate' => '细菌性痢疾-检查日期',
'hasTyphoid' => '伤寒和副伤寒1有 2无',
'typhoidNote' => '伤寒和副伤寒-备注',
'typhoidPractitionerNumber' => '伤寒和副伤寒-检查医师执业证书编号',
'typhoidPractitionerLocalId' => '伤寒和副伤寒-检查医师机构内编码',
'typhoidPractitionerName' => '伤寒和副伤寒-检查医师',
'typhoidDate' => '伤寒和副伤寒-检查日期',
'hasViralHepatitis' => '病毒性肝炎甲型、戊型1有 2无',
'viralHepatitisNote' => '病毒性肝炎-备注',
'viralHepatitisPractitionerNumber' => '病毒性肝炎-检查医师执业证书编号',
'viralHepatitisPractitionerLocalId' => '病毒性肝炎-检查医师机构内编码',
'viralHepatitisPractitionerName' => '病毒性肝炎-检查医师',
'viralHepatitisDate' => '病毒性肝炎-检查日期',
'hasActiveTB' => '活动性肺结核1有 2无',
'activeTBNote' => '活动性肺结核-备注',
'activeTBPractitionerNumber' => '活动性肺结核-检查医师执业证书编号',
'activeTBPractitionerLocalId' => '活动性肺结核-检查医师机构内编码',
'activeTBPractitionerName' => '活动性肺结核-检查医师',
'activeTBDate' => '活动性肺结核-检查日期',
'hasSkinDiseases' => '化脓性或渗出性皮肤病1有 2无',
'skinDiseasesNote' => '化脓性或渗出性皮肤病-备注',
'skinDiseasesPractitionerNumber' => '化脓性或渗出性皮肤病-检查医师执业证书编号',
'skinDiseasesPractitionerLocalId' => '化脓性或渗出性皮肤病-检查医师机构内编码',
'skinDiseasesPractitionerName' => '化脓性或渗出性皮肤病-检查医师',
'skinDiseasesDate' => '化脓性或渗出性皮肤病-检查日期',
'hasHandFungal' => '手部真菌感染性疾病(如手癣、指甲癣等)1有 2无 -1未检查',
'handFungalNote' => '手部真菌感染性疾病-备注',
'handFungalPractitionerNumber' => '手部真菌感染性疾病-检查医师执业证书编号',
'handFungalPractitionerLocalId' => '手部真菌感染性疾病-检查医师机构内编码',
'handFungalPractitionerName' => '手部真菌感染性疾病-检查医师',
'handFungalDate' => '手部真菌感染性疾病-检查日期',
'hasCholera' => '霍乱1有 2无 -1未检查',
'choleraNote' => '霍乱-备注',
'choleraPractitionerNumber' => '霍乱-检查医师执业证书编号',
'choleraPractitionerLocalId' => '霍乱-检查医师机构内编码',
'choleraPractitionerName' => '霍乱-检查医师',
'choleraTestDate' => '霍乱-检查日期',
'hasAmebicDysentery' => '阿米巴性痢疾1有 2无 -1未检查',
'amebicDysenteryNote' => '阿米巴性痢疾-备注',
'amebicDysenteryPractitionerNumber' => '阿米巴性痢疾-检查医师执业证书编号',
'amebicDysenteryPractitionerLocalId' => '阿米巴性痢疾-检查医师机构内编码',
'amebicDysenteryPractitionerName' => '阿米巴性痢疾-检查医师',
'amebicDysenteryDate' => '阿米巴性痢疾-检查日期',
'hasHandEczema' => '手部湿疹1有 2无 -1未检查',
'handEczemaNote' => '手部湿疹-备注',
'handEczemaPractitionerNumber' => '手部湿疹-检查医师执业证书编号',
'handEczemaPractitionerLocalId' => '手部湿疹-检查医师机构内编码',
'handEczemaPractitionerName' => '手部湿疹-检查医师',
'handEczemaDate' => '手部湿疹-检查日期',
'hasHandPsoriasis' => '手部的银屑病或者鳞屑1有 2无 -1未检查',
'handPsoriasisNote' => '手部的银屑病或者鳞屑-备注',
'handPsoriasisPractitionerNumber' => '手部的银屑病或者鳞屑-检查医师执业证书编号',
'handPsoriasisPractitionerLocalId' => '手部的银屑病或者鳞屑-检查医师机构内编码',
'handPsoriasisPractitionerName' => '手部的银屑病或者鳞屑-检查医师',
'handPsoriasisDate' => '手部的银屑病或者鳞屑-检查日期',
'validityDate' => '健康证明生效日期',
'expiryDate' => '健康证明有效截止日期',
'effectiveTime' => '健康证明出具时间',
'updateTime' => '健康证明更新时间',
'healthCertificateUrl' => '从业人员健康证明非结构化文档地址(北京市地址)',
'healthCertificateUrlPt' => '从业人员健康证明非结构化文档地址(区平台地址)',
'isEffective' => '是否有效'
];
// 构建中文键值对
$translatedInfo = [];
foreach ($fieldMapping as $key => $chineseKey) {
if (isset($infoArray[$key])) {
if($key=='photo' and !empty($infoArray[$key])) {
$relativePath = substr($infoArray[$key], strlen('/storage'));
$infoArray[$key]=Storage::disk('public')->url($relativePath);
}
$translatedInfo[$chineseKey] = $infoArray[$key];
}
}
// 返回结果
return \Yz::Return(true, "查询完成", ['info' => $translatedInfo]);
}
//按机构统计
public function CountByOrg(Request $request)
{
$s_group = [1, 8];
$userid = $request->get('userid');//中间件产生的参数
$group = $request->get('role');//中间件产生的参数
$searchInfo = request('searchInfo');
if (!in_array($group, $s_group)) {
return \Yz::echoError1("无权限查看此数据");
}
if(empty($searchInfo['dateRange'])){
$searchInfo['dateRange']=[
date('Y-m-d')." 00:00:00",
date('Y-m-d')." 23:59:59"
];
}
$list = DB::table('health_certificate_push')
->select(
'hospitalCode as org_code',
'hospitalName as org_name',
DB::raw('COUNT(DISTINCT healthCertificateId) as count')
);
if (isset($searchInfo['dateRange'])) {
$list = $list->whereBetween('created_at', $searchInfo['dateRange']);
} else {
$list = $list->whereBetween('created_at', [date('Y-m-d'), date('Y-m-d')]);
}
$list = $list->groupBy('hospitalCode', 'hospitalName')
->get();
return \Yz::Return(true,'查询成功',['list'=>$list,'dateRange'=>$searchInfo['dateRange']]);
}
//按月统计
public function CountByMonth(Request $request)
{
$s_group = [1, 8];
$userid = $request->get('userid');//中间件产生的参数
$group = $request->get('role');//中间件产生的参数
$searchInfo = request('searchInfo');
if (!in_array($group, $s_group)) {
return \Yz::echoError1("无权限查看此数据");
}
if(empty($searchInfo['dateRange'])){
$searchInfo['dateRange']=[
date('Y-m-d')." 00:00:00",
date('Y-m-d')." 23:59:59"
];
}
$list = DB::table('health_certificate_push')
->select(
DB::raw("DATE_FORMAT(created_at, '%Y-%m') as month"),
DB::raw('COUNT(DISTINCT healthCertificateId) as count')
);
if (isset($searchInfo['dateRange'])) {
$list = $list->whereBetween('created_at', $searchInfo['dateRange']);
} else {
$list = $list->whereBetween('created_at', [date('Y-m-d'), date('Y-m-d')]);
};
$list = $list->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m')"))
->orderBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m')"), 'asc')
->get();
return \Yz::Return(true,'查询成功',['list'=>$list,'dateRange'=>$searchInfo['dateRange']]);
}
}