|
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 不良事件测试数据插入脚本
|
|
|
|
|
|
* 使用方法:php insert_adverse_data.php
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
require_once 'vendor/autoload.php';
|
|
|
|
|
|
|
|
|
|
|
|
// 启动Laravel应用
|
|
|
|
|
|
$app = require_once 'bootstrap/app.php';
|
|
|
|
|
|
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
|
|
|
|
|
|
|
|
|
|
|
|
use App\Models\Adverse;
|
|
|
|
|
|
use App\Models\Project;
|
|
|
|
|
|
use App\Models\Orders;
|
|
|
|
|
|
use Carbon\Carbon;
|
|
|
|
|
|
|
|
|
|
|
|
echo "开始插入不良事件测试数据...\n";
|
|
|
|
|
|
|
|
|
|
|
|
// 检查是否有项目和订单数据
|
|
|
|
|
|
$projects = Project::all();
|
|
|
|
|
|
if ($projects->isEmpty()) {
|
|
|
|
|
|
echo "错误:没有找到项目数据,请先创建项目\n";
|
|
|
|
|
|
exit(1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$orders = Orders::all();
|
|
|
|
|
|
if ($orders->isEmpty()) {
|
|
|
|
|
|
echo "错误:没有找到订单数据,请先创建订单\n";
|
|
|
|
|
|
exit(1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
echo "找到 " . $projects->count() . " 个项目\n";
|
|
|
|
|
|
echo "找到 " . $orders->count() . " 个订单\n";
|
|
|
|
|
|
|
|
|
|
|
|
// 不良事件类型
|
|
|
|
|
|
$types = [
|
|
|
|
|
|
'safety' => '意外事件',
|
|
|
|
|
|
'complaint' => '沟通事件',
|
|
|
|
|
|
'other' => '其他'
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
// 状态列表
|
|
|
|
|
|
$statuses = [
|
|
|
|
|
|
'pending' => '待处理',
|
|
|
|
|
|
'processing' => '处理中',
|
|
|
|
|
|
'solved' => '已解决',
|
|
|
|
|
|
'closed' => '已关闭'
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
// 事件描述模板
|
|
|
|
|
|
$descriptions = [
|
|
|
|
|
|
'患者反映护工服务态度不佳,存在沟通问题',
|
|
|
|
|
|
'护工未按时到达,影响患者正常护理',
|
|
|
|
|
|
'患者家属投诉护工专业技能不足',
|
|
|
|
|
|
'护工在护理过程中出现操作失误',
|
|
|
|
|
|
'患者反映护工个人卫生问题',
|
|
|
|
|
|
'护工与患者家属发生言语冲突',
|
|
|
|
|
|
'护工未按照医嘱执行护理操作',
|
|
|
|
|
|
'患者反映护工工作态度消极',
|
|
|
|
|
|
'护工在护理过程中造成患者轻微受伤',
|
|
|
|
|
|
'患者家属对护工服务不满意',
|
|
|
|
|
|
'护工未及时报告患者异常情况',
|
|
|
|
|
|
'护工在护理过程中使用手机影响工作',
|
|
|
|
|
|
'患者反映护工专业知识欠缺',
|
|
|
|
|
|
'护工未按规定时间进行护理记录',
|
|
|
|
|
|
'患者家属投诉护工服务态度恶劣'
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
// 解决结果模板
|
|
|
|
|
|
$solvedResults = [
|
|
|
|
|
|
'已对护工进行批评教育,要求改进服务态度',
|
|
|
|
|
|
'已安排经验丰富的护工接替,确保服务质量',
|
|
|
|
|
|
'已对护工进行专业技能培训,提升护理水平',
|
|
|
|
|
|
'已对护工进行安全教育,避免类似事件发生',
|
|
|
|
|
|
'已要求护工严格遵守个人卫生规范',
|
|
|
|
|
|
'已对护工进行沟通技巧培训,改善服务态度',
|
|
|
|
|
|
'已对护工进行规范化操作培训',
|
|
|
|
|
|
'已对护工进行职业道德教育',
|
|
|
|
|
|
'已对护工进行安全操作培训,确保患者安全',
|
|
|
|
|
|
'已安排护工与患者家属沟通,化解矛盾',
|
|
|
|
|
|
'已建立护工定期报告制度,及时发现问题',
|
|
|
|
|
|
'已制定护工工作纪律,禁止工作时间使用手机',
|
|
|
|
|
|
'已对护工进行专业知识培训',
|
|
|
|
|
|
'已建立护理记录检查制度,确保及时记录',
|
|
|
|
|
|
'已对护工进行服务态度培训,提升服务质量'
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
// 经办人列表
|
|
|
|
|
|
$handlers = [
|
|
|
|
|
|
'张主任',
|
|
|
|
|
|
'李护士长',
|
|
|
|
|
|
'王管理员',
|
|
|
|
|
|
'刘主管',
|
|
|
|
|
|
'陈经理'
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
// 创建30条测试数据
|
|
|
|
|
|
$count = 0;
|
|
|
|
|
|
for ($i = 1; $i <= 30; $i++) {
|
|
|
|
|
|
$project = $projects->random();
|
|
|
|
|
|
$order = $orders->where('project_id', $project->id)->first();
|
|
|
|
|
|
|
|
|
|
|
|
$type = array_rand($types);
|
|
|
|
|
|
$status = array_rand($statuses);
|
|
|
|
|
|
$description = $descriptions[array_rand($descriptions)];
|
|
|
|
|
|
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'project_id' => $project->id,
|
|
|
|
|
|
'order_id' => $order ? $order->id : null,
|
|
|
|
|
|
'type' => $type,
|
|
|
|
|
|
'description' => $description,
|
|
|
|
|
|
'solved_status' => $status,
|
|
|
|
|
|
'solved_by' => $handlers[array_rand($handlers)],
|
|
|
|
|
|
'created_at' => Carbon::now()->subDays(rand(1, 90)),
|
|
|
|
|
|
'updated_at' => Carbon::now()->subDays(rand(1, 90))
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
// 如果已解决,设置解决时间和结果
|
|
|
|
|
|
if (in_array($status, ['solved', 'closed'])) {
|
|
|
|
|
|
$data['solved_at'] = Carbon::now()->subDays(rand(1, 30));
|
|
|
|
|
|
$data['solved_result'] = $solvedResults[array_rand($solvedResults)];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
Adverse::create($data);
|
|
|
|
|
|
$count++;
|
|
|
|
|
|
echo "已创建第 {$count} 条数据\n";
|
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
|
echo "创建第 {$i} 条数据失败: " . $e->getMessage() . "\n";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
echo "完成!成功创建 {$count} 条不良事件测试数据\n";
|