# Kylin Elderly Care

Kylin 智慧养老看护系统核心扩展包，严格遵守《老年人权益保障法》《养老机构管理办法》、GB/T 42195-2022《老年人能力评估规范》。

## 功能特性

### 护理评估
- **护理等级评估** (`CareLevelCalculator`)：按 GB/T 42195-2022 四级分类（0-3/4-8/9-18/19+）
- **四项指标综合评分**：日常生活活动、精神状态、感知觉与沟通、社会参与
- **评估周期**：6 个月（180 天）定期评估
- **评估结果可查询可导出**

### 健康监测
- **健康数据异常检测** (`HealthAbnormalDetector`)：血压/心率/血氧/体温多维度
- **健康数据加密** (`HealthDataEncryptor`)：AES 加密存储、解密、脱敏
- **数据保留策略** (`DataRetentionPolicy`)：6 类数据分级保留

### 应急响应
- **紧急呼叫响应**：5 分钟内响应，超时预警
- **用药提醒**：提前 5 分钟提醒 + 漏服 30 分钟判定
- **设备心跳监控**：30 分钟超时离线告警

### 审计与合规
- **操作审计** (`ElderlyCareAudit` Trait)：护理操作全记录
- **敏感字段脱敏**：身份证号、电话、紧急联系人自动脱敏
- **RBAC 权限控制**：健康数据访问需授权

## 安装

```bash
composer require kylin/elderly-care
```

## 配置发布

```bash
php artisan vendor:publish --tag=elderly-care-config
```

## 使用示例

### 护理等级评估

```php
use Kylin\ElderlyCare\Standards\CareLevelCalculator;

// 按 GB/T 42195-2022 计算护理等级
$level = CareLevelCalculator::calculate([
    'daily_living'    => 15,  // 日常生活活动得分
    'mental_state'    => 8,   // 精神状态得分
    'perception'      => 6,   // 感知觉与沟通得分
    'social_participation' => 5, // 社会参与得分
]);
// ['total_score' => 34, 'level' => 3, 'level_name' => '重度失能']
```

### 健康数据异常检测

```php
use Kylin\ElderlyCare\Standards\HealthAbnormalDetector;

$abnormal = HealthAbnormalDetector::detect([
    'systolic'  => 160,   // 收缩压
    'diastolic' => 100,   // 舒张压
    'heart_rate' => 110,  // 心率
    'spo2'      => 92,    // 血氧
    'temp'      => 38.5,  // 体温
]);
// ['abnormal' => true, 'level' => 'high', 'items' => [...]]
```

### 健康数据加密

```php
use Kylin\ElderlyCare\Services\HealthDataEncryptor;

// 加密存储（依据《个人信息保护法》第二十八条）
$encrypted = HealthDataEncryptor::encrypt($healthData);
$decrypted = HealthDataEncryptor::decrypt($encrypted);
$masked    = HealthDataEncryptor::mask($healthData); // 脱敏展示
```

### 数据保留策略

```php
use Kylin\ElderlyCare\Services\DataRetentionPolicy;

// 按 GB/T 35796-2017 获取保留期
$retention = DataRetentionPolicy::getRetention('health_record');
// ['days' => 5475, 'label' => '健康档案 15 年']

// 检查是否过期
$isExpired = DataRetentionPolicy::isExpired('device_data', $recordDate);
```

### 操作审计

```php
use Kylin\ElderlyCare\Traits\ElderlyCareAudit;

class CareService
{
    use ElderlyCareAudit;

    public function assess(int $elderlyId, array $data)
    {
        // ... 评估逻辑 ...
        $this->audit('care_assessment_completed', $elderlyId, [
            'level' => $level,
            'score' => $totalScore,
        ]);
    }
}
```

## 数据模型

| 模型 | 说明 | 合规要点 |
|------|------|------|
| `ElderlyProfile` | 老人档案 | 身份证/电话/紧急联系人 AES 加密 |
| `CareAssessment` | 护理评估 | 自动计算总分和护理等级（GB/T 42195） |
| `HealthRecord` | 健康数据 | 加密存储 + 自动异常检测 |
| `MedicationRecord` | 用药记录 | 漏服自动判定（30 分钟） |
| `EmergencyCall` | 紧急呼叫 | 响应耗时自动计算，超时预警 |
| `DeviceMonitor` | 设备监控 | 30 分钟无心跳离线告警 |

## 配置项

| 配置键 | 默认值 | 说明 |
|------|------|------|
| `assessment_interval_days` | 180 | 评估周期（6 个月） |
| `emergency_response_timeout` | 5 | 紧急呼叫响应超时（分钟） |
| `device_offline_threshold` | 30 | 设备离线阈值（分钟） |
| `medication_remind_before` | 5 | 用药提前提醒（分钟） |
| `medication_missed_after` | 30 | 用药漏服判定（分钟） |

## 数据保留策略

依据 GB/T 35796-2017《养老机构服务质量基本规范》：

| 数据类型 | 保留期限 | 说明 |
|------|------|------|
| 健康档案 | 15 年 | 5475 天 |
| 护理记录 | 10 年 | 3650 天 |
| 评估记录 | 15 年 | 5475 天 |
| 用药记录 | 5 年 | 1825 天 |
| 紧急呼叫 | 3 年 | 1095 天 |
| 设备数据 | 1 年 | 365 天 |

## 法律合规

本包严格遵守以下法律法规：

### 《老年人权益保障法》(2018.12.29 修正)
- **第三条**：保障老年人合法权益，禁止歧视、虐待
- **第四十二条**：建立适应老年人需要的服务体系
- **第五十一条**：医疗机构为老年人就医提供方便

### 《养老机构管理办法》(2020.11.1)
- **第十五条**：建立入院评估制度（`CareLevelCalculator`）
- **第十六条**：根据评估结果确定护理等级
- **第十七条**：建立老年人健康档案，妥善保管
- **第二十三条**：建立安全管理制度（设备离线告警）
- **第二十九条**：建立突发事件应急预案（紧急呼叫）

### GB/T 42195-2022《老年人能力评估规范》
- **第 4 条**：四项指标综合评分
- **第 5 条**：能力等级 0-3 级
- **第 6 条**：评估周期 6 个月
- **第 7 条**：评估结果告知老年人或监护人

### 《个人信息保护法》(2021.11.1)
- **第二十八条**：健康数据为敏感个人信息，加密存储（`HealthDataEncryptor`）
- **第六条**：最小必要原则
- **第四十七条**：处理目的实现后删除
- **第五十一条**：加密、去标识化安全技术措施

### GB/T 35796-2017《养老机构服务质量基本规范》
- 健康档案管理制度的保留期限要求

详见 [LEGAL.md](LEGAL.md)。

## 依赖

- PHP ^8.5
- Laravel ^13.0
- kylin/core

## 许可证

私有软件，未经授权禁止使用。
