# 医护云桥应用UML编写
## 一、Schema范式设计
### 用户模块
- 功能描述：支持患者、专家医生、医学生等多种用户角色的注册和登录。
- 分析：这一模块是用户体验的基础，确保用户能够顺利进入平台。需要考虑用户身份验证的安全性和便捷性，可能包括多因素认证等措施。
为了设计一个用户模块的Parse Schema，我们需要考虑不同用户角色的需求，包括患者、专家医生和医学生。我们将创建一个用户表和相关的角色表，并确保遵循设计范式。以下是所需的Parse Schema范式表及具体字段名称的分析。

#### 1.表设计

1.1 **User** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **username**: 用户名
   - **password**: 密码（建议加密存储）
   - **email**: 邮箱
   - **role**: 用户角色（Pointer<Role>）
   - **isVerified**: 是否已验证（boolean）
   - **lastLogin**: 最后登录时间

1.2 **Role** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **roleName**: 角色名称（如“患者”、“专家医生”、“医学生”）
   - **permissions**: 权限列表（array）

1.3 **UserProfile** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **user**: 用户（Pointer<User>）
   - **firstName**: 名
   - **lastName**: 姓
   - **phoneNumber**: 电话号码
   - **profilePicture**: 头像（File）
   - **bio**: 简介

#### 2.PlantUML 类图表示

以下是使用PlantUML表示的类图：

```plantuml
@startuml
class User {
    + objectId: String
    + createdAt: Date
    + username: String
    + password: String
    + email: String
    + role: Pointer<Role>
    + isVerified: Boolean
    + lastLogin: Date
}

class Role {
    + objectId: String
    + createdAt: Date
    + roleName: String
    + permissions: Array
}

class UserProfile {
    + objectId: String
    + createdAt: Date
    + user: Pointer<User>
    + firstName: String
    + lastName: String
    + phoneNumber: String
    + profilePicture: File
    + bio: String
}

User "1" -- "1" Role : has
User "1" -- "1" UserProfile : has
@enduml
```

#### 3.设计说明

- **User 表**: 主要存储用户的基本信息，包括用户名、密码、邮箱和角色。角色通过指针关联到 Role 表，以便于管理不同用户的权限。
- **Role 表**: 定义不同角色的名称和相应的权限，支持后续的权限管理和扩展。
- **UserProfile 表**: 存储用户的详细个人信息，便于展示和管理。

通过上述设计，可以确保用户模块的功能性和安全性，为患者、专家医生和医学生提供良好的用户体验。
### 知识模块
- 功能描述：提供各学科的知识模块，用户可以选择学习。
- 分析：知识模块的多样性和系统性是提升用户学习效果的关键。需要确保内容的权威性和更新频率，以满足医护人员和医学生的学习需求。
为了设计一个知识模块的Parse Schema，我们需要考虑不同学科的知识内容、用户的学习需求以及内容的更新机制。以下是所需的Parse Schema范式表及具体字段名称的分析。

#### 1.表设计

1.1 **KnowledgeModule** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **title**: 模块标题
   - **description**: 模块描述
   - **category**: 学科分类（Pointer<Category>）
   - **content**: 知识内容（Text）
   - **author**: 作者（Pointer<User>）
   - **updatedAt**: 最后更新时间
   - **isPublished**: 是否已发布（boolean）

1.2 **Category** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **name**: 类别名称（如“内科”、“外科”、“药理学”等）
   - **description**: 类别描述

1.3 **KnowledgeResource** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **module**: 知识模块（Pointer<KnowledgeModule>）
   - **resourceType**: 资源类型（如“视频”、“文档”、“图表”等）
   - **resourceLink**: 资源链接（URL）
   - **description**: 资源描述

#### 2.PlantUML 类图表示

以下是使用PlantUML表示的类图：

```plantuml
@startuml
class KnowledgeModule {
    + objectId: String
    + createdAt: Date
    + title: String
    + description: String
    + category: Pointer<Category>
    + content: Text
    + author: Pointer<User>
    + updatedAt: Date
    + isPublished: Boolean
}

class Category {
    + objectId: String
    + createdAt: Date
    + name: String
    + description: String
}

class KnowledgeResource {
    + objectId: String
    + createdAt: Date
    + module: Pointer<KnowledgeModule>
    + resourceType: String
    + resourceLink: String
    + description: String
}

KnowledgeModule "1" -- "1" Category : belongs to
KnowledgeModule "1" -- "*" KnowledgeResource : has
@enduml
```

#### 3.设计说明

- **KnowledgeModule 表**: 存储知识模块的基本信息，包括标题、描述、内容、分类、作者以及发布状态。通过指针关联到 Category 表和 User 表，以便于管理模块的分类和作者信息。
- **Category 表**: 定义不同学科的分类，支持知识模块的组织和检索。
- **KnowledgeResource 表**: 存储与知识模块相关的资源，如视频、文档等，便于用户获取更多学习材料。

通过上述设计，可以确保知识模块的功能性和系统性，为医护人员和医学生提供丰富的学习资源和良好的学习体验。
### 专家咨询
- 功能描述：患者可以预约专家进行在线咨询，提供视频咨询功能。
- 分析：在线咨询功能能够极大地方便患者，尤其是在偏远地区。视频咨询的引入提升了沟通的有效性，建议考虑技术支持的稳定性和用户隐私保护。
为了设计一个专家咨询的Parse Schema，我们需要考虑患者预约专家的需求、视频咨询的实现、以及用户隐私的保护。以下是所需的Parse Schema范式表及具体字段名称的分析。

#### 1.表设计

1.1 **Consultation** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **patient**: 患者（Pointer<User>）
   - **doctor**: 专家医生（Pointer<User>）
   - **appointmentTime**: 预约时间（Date）
   - **status**: 咨询状态（如“待确认”、“已确认”、“已完成”、“已取消”）
   - **videoLink**: 视频咨询链接（URL）
   - **notes**: 咨询备注（Text）
   - **createdBy**: 创建者（Pointer<User>）

1.2 **User** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **username**: 用户名
   - **password**: 密码（建议加密存储）
   - **email**: 邮箱
   - **role**: 用户角色（如“患者”、“医生”）（Pointer<Role>）
   - **isVerified**: 是否已验证（boolean）
   - **lastLogin**: 最后登录时间

1.3 **Role** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **roleName**: 角色名称（如“患者”、“专家医生”）
   - **permissions**: 权限列表（array）

#### 2.PlantUML 类图表示

以下是使用PlantUML表示的类图：

```plantuml
@startuml
class Consultation {
    + objectId: String
    + createdAt: Date
    + patient: Pointer<User>
    + doctor: Pointer<User>
    + appointmentTime: Date
    + status: String
    + videoLink: String
    + notes: Text
    + createdBy: Pointer<User>
}

class User {
    + objectId: String
    + createdAt: Date
    + username: String
    + password: String
    + email: String
    + role: Pointer<Role>
    + isVerified: Boolean
    + lastLogin: Date
}

class Role {
    + objectId: String
    + createdAt: Date
    + roleName: String
    + permissions: Array
}

Consultation "1" -- "1" User : patient
Consultation "1" -- "1" User : doctor
Consultation "1" -- "1" User : createdBy
@enduml
```

#### 3.设计说明

- **Consultation 表**: 存储在线咨询的基本信息，包括患者和医生的指针、预约时间、咨询状态、视频链接以及备注。通过指针关联到 User 表，以便于管理患者和医生的信息。
- **User 表**: 存储用户的基本信息，包括用户名、密码、邮箱、角色等。角色通过指针关联到 Role 表，以便于管理用户的权限。
- **Role 表**: 定义不同角色的名称和相应的权限，支持对用户的访问控制。

通过上述设计，可以确保专家咨询模块的功能性、用户隐私保护以及良好的用户体验，为患者和医生提供高效的在线咨询服务。
### 智能诊疗模块
- 功能描述：利用人工智能进行初步自我诊断和健康评估。
- 分析：智能诊疗模块能够帮助患者在就医前进行初步的健康评估，减轻医疗资源的压力。然而，需要确保系统的准确性和安全性，避免误诊的风险。
为了设计一个智能诊疗模块的Parse Schema，我们需要考虑患者进行初步自我诊断和健康评估的需求，以及系统的准确性和安全性。以下是所需的Parse Schema范式表及具体字段名称的分析。

#### 1.表设计

1.1 **Symptom** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **name**: 症状名称（如“发热”、“咳嗽”）
   - **description**: 症状描述
   - **severity**: 严重程度（如“轻微”、“中等”、“严重”）

1.2 **Diagnosis** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **patient**: 患者（Pointer<User>）
   - **symptoms**: 相关症状（Array<Pointer<Symptom>>）
   - **suggestedCondition**: 建议的疾病或状况（String）
   - **recommendations**: 建议的后续步骤（Text）
   - **confidenceScore**: 诊断的置信度评分（Float）
   - **createdBy**: 创建者（Pointer<User>）

1.3 **User** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **username**: 用户名
   - **password**: 密码（建议加密存储）
   - **email**: 邮箱
   - **role**: 用户角色（如“患者”、“医生”）（Pointer<Role>）
   - **isVerified**: 是否已验证（boolean）
   - **lastLogin**: 最后登录时间

1.4 **Role** 表
   - **objectId**: 唯一标识符
   - **createdAt**: 创建时间
   - **roleName**: 角色名称（如“患者”、“医生”）
   - **permissions**: 权限列表（array）

#### 2.PlantUML 类图表示

以下是使用PlantUML表示的类图：

```plantuml
@startuml
class Symptom {
    + objectId: String
    + createdAt: Date
    + name: String
    + description: String
    + severity: String
}

class Diagnosis {
    + objectId: String
    + createdAt: Date
    + patient: Pointer<User>
    + symptoms: Array<Pointer<Symptom>>
    + suggestedCondition: String
    + recommendations: Text
    + confidenceScore: Float
    + createdBy: Pointer<User>
}

class User {
    + objectId: String
    + createdAt: Date
    + username: String
    + password: String
    + email: String
    + role: Pointer<Role>
    + isVerified: Boolean
    + lastLogin: Date
}

class Role {
    + objectId: String
    + createdAt: Date
    + roleName: String
    + permissions: Array
}

Diagnosis "1" -- "1" User : patient
Diagnosis "*" -- "*" Symptom : includes
Diagnosis "1" -- "1" User : createdBy
@enduml
```

#### 3.设计说明

- **Symptom 表**: 存储各种症状的信息，包括名称、描述和严重程度。此表用于帮助患者选择和描述他们的症状。
- **Diagnosis 表**: 存储智能诊疗的结果，包括患者信息、相关症状、建议的疾病、后续建议和置信度评分。通过指针关联到 User 表和 Symptom 表，以便于管理患者和症状信息。
- **User 表**: 存储用户的基本信息，包括用户名、密码、邮箱、角色等。角色通过指针关联到 Role 表，以便于管理用户的权限。
- **Role 表**: 定义不同角色的名称和相应的权限，支持对用户的访问控制。

通过上述设计，可以确保智能诊疗模块的功能性、准确性和用户隐私保护，为患者提供高效的初步健康评估服务。
