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.

135 lines
4.1 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
/**
* 不良事件测试数据插入脚本
* 使用方法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";