一,调研学习构建DDD架构
与小组组员程前一起调研学习了前端的DDD架构并实际应用到了项目上。
因为之前开发的项目比较简单,可以采用普通的MVC架构模式。但是针对功能较多数据量大较为复杂的项目而言,我们一致觉得DDD架构是低耦合,便于修改测试的,便于开发大项目的合适的架构。因此尽管有一定上手难度,我们调研学习并创新改造了六边形架构(api,app,domain,infrastructure,trigger,type六个模块,分别负责对接接口,应用配置,领域服务设计,基层设计,触发器和基础类型构建)并应用到了我们的项目上。
感悟:尽管刚开始上手的时候对诸多文件名有所疑问,尤其是在学习动态配置和规则树,责任链的时候更是觉得晦涩难懂。但是当充分理解了之后,整个项目架构,什么功能在什么地方,什么文件是管理什么的非常清晰,一目了然。并且想要单独领出一个模块进行检测也十分方便,比如我们就对编写好的数据库方法进行了测试,成功找到并解决了一些问题。
二,数据库设计
针对我们的病患病情分析,病历记录,感知训练,运动训练主要功能,进行了系统合理的数据库设计。充分考虑到了
1.各数据的关键要素和数据之间的依赖关系
2.范式化,确保数据原子性
3.合理的反范式保留合理的查询索引,避免连表查询
暂时先设计了十个数据库表包含主键,外键,索引键。(在项目博客1中有,本文最后也会放一份)
并与组员一起应用到了项目上并且成功测试。
感悟:数据库设计看似都是一些基础的属性,但其实是一个非常考验细心,严谨的工作,比如患者id和患者信息表的id要不要用一个id。我们经过讨论决定采用两个id。因为实际情况中医院所记录的患者的id可能会较长并且有特殊意义(比如代表什么科室)不适宜作为项目的索引来进行查找。因此用自增id作为表的id。再者什么属性可以作为索引,什么属性作为外键,什么属性是冗余属性也都需要细细敲定。在我们的DDD架构中,采用entity和VO来进行值传输,可以将表化整为零,并且因此数据库的修改,不影响我们的服务方法架构。这也是我们架构的优点。尽管如此我们的表仍不完善,会随着开发进行修改完善。
三,大模型微调学习
1.深度学习模型基础学习
学习了模型训练的原理,包括了解数据集,各种线性层,卷积层,池化,归一,dropout的作用。学习率,修正函数,根据epoch调整学习率(如指数下降,三角函数下降等)。
2.针对性调研
我们针对医疗专业领域和心理医疗领域找到了两个数据集。以此来适配我们的产品目标
针对患者的心理医疗需求调研了EmoLLM-database数据集,使得大模型能够以医生的口吻来回答我们的问题。
针对专业医疗需求,调研了medical-o1-reasoning-SFT进行数据训练。使模型在医疗对话中更加专业。
感悟:以前觉得大模型是真有人类的思维,学习后才知道所谓ai思考不过是凑数据凑出来的。AI训练,深度学习的门槛可能并没有那么高,但是能扩展深入的角度相当广阔。之后的开发过程中探究学习率,学习率下降,损失函数,修正函数对模型微调的影响都是可行的方案。
四,附录
1. 患者信息表 (Patient_Info)
字段名 | 类型 | 说明 | 示例 |
patient_id | VARCHAR(36) | 患者唯一标识(UUID) | "a1b2c3d4-..." |
name | VARCHAR(50) | 姓名 | 张三 |
gender | CHAR(1) | 性别(M/F/O) | M |
age | INT | 年龄 | 72 |
contact | VARCHAR(20) | 紧急联系人电话 | 1385678 |
medical_history | TEXT | 病史摘要(如高血压、糖尿病等) | "2018年确诊AD,无卒中史" |
medication | JSON | 当前用药记录(支持动态扩展) | {"药物":"多奈哌齐", "剂量":"5mg/d"} |
2.量表评分表 (Assessment_Scores)
字段名 | 类型 | 说明 | 示例 |
assessment_id | VARCHAR(36) | 评估唯一ID | "b5e6f7g8-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
assessment_type | VARCHAR(20) | 量表类型(MMSE/CDR/ADAS-Cog) | "MMSE" |
score_details | JSON | 结构化评分(支持动态量表) | {"总分":18, "定向力":5} |
assessment_date | DATE | 评估日期 | 2024-03-15 |
3. 影像资料表 (Imaging_Data)
字段名 | 类型 | 说明 | 示例 |
image_id | VARCHAR(36) | 影像唯一ID | "c9d0e1f2-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
modality | VARCHAR(20) | 影像类型(MRI/PET/CT) | "MRI" |
findings | JSON | 结构化报告(自动提取关键指标) | {"海马体体积": "2.1cm³", "Aβ沉积": "阳性"} |
file_path | VARCHAR(200) | 影像文件存储路径(加密链接) | "/images/a1b2c3d4/mri_20240315.dcm" |
4. 血液检查表 (Blood_Tests)
字段名 | 类型 | 说明 | 示例 |
test_id | VARCHAR(36) | 检查唯一ID | "d3e4f5g6-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
biomarker_type | VARCHAR(30) | 生物标志物类型 | "Aβ42" |
value | FLOAT | 检测数值 | 450.5 |
unit | VARCHAR(10) | 单位 | "pg/mL" |
test_date | DATE | 检测日期 | 2024-03-10 |
5. DeepSeek认知训练表 (Cognitive_Training)
字段名 | 类型 | 说明 | 示例 |
plan_id | VARCHAR(36) | 计划唯一ID | "e7f8g9h0-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
training_type | VARCHAR(50) | 训练类型(记忆/注意力/定向力) | "空间记忆训练" |
difficulty_level | INT | 难度等级(1-5级) | 3 |
content | TEXT | 训练内容描述(支持多媒体链接) | "虚拟超市购物任务(链接:training_001)" |
schedule | JSON | 执行计划(频率、时长) | {"频率":"5次/周", "单次时长":"30分钟"} |
6. 运动计划表 (Exercise_Plans)
字段名 | 类型 | 说明 | 示例 |
exercise_id | VARCHAR(36) | 计划唯一ID | "h1i2j3k4-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
exercise_type | VARCHAR(50) | 运动类型(有氧/平衡/柔韧) | "太极拳" |
intensity | VARCHAR(20) | 强度(低/中/高) | "中等" |
duration | INT | 单次时长(分钟) | 45 |
safety_rules | TEXT | 禁忌症和注意事项 | "避免快速转身,家属陪同" |
7.训练记录表 (Training_Records)
字段名 | 类型 | 说明 | 示例 |
record_id | VARCHAR(36) | 记录唯一ID | "k5l6m7n8-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
plan_id | VARCHAR(36) | 关联训练计划ID | "e7f8g9h0-..." |
completion_rate | FLOAT | 完成度(0-100%) | 85.0 |
performance | JSON | 动态指标(如反应时间、错误率) | {"反应时间": "2.3s", "正确率": "78%"} |
record_date | DATE | 执行日期 | 2024-03-20 |
8. 运动记录表 (Exercise_Records)
字段名 | 类型 | 说明 | 示例 |
record_id | VARCHAR(36) | 记录唯一ID | "n9o0p1q2-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
exercise_id | VARCHAR(36) | 关联运动计划ID | "h1i2j3k4-..." |
heart_rate | INT | 平均心率 | 102 |
calories | FLOAT | 消耗卡路里 | 250.5 |
notes | TEXT | 异常情况记录 | "中途头晕,休息5分钟后继续" |
9. 患者病史表 (Exercise_Records)
字段名 | 类型 | 说明 | 示例 |
history_id | VARCHAR(36) | 病史记录唯一ID | "h1i2j3k4-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
diagnosis_date | DATE | 诊断日期(支持时间序列分析) | 2020-05-10 |
condition_name | VARCHAR(100) | 疾病名称(标准化ICD-11编码) | "阿尔茨海默病 (ICD-11: 6D85)" |
treatment_summary | TEXT | 治疗措施(手术/药物/物理治疗等) | "口服多奈哌齐5mg/d" |
medical_notes | TEXT | 备注(并发症、疗效、副作用等) | "2021年出现轻度肝功能异常" |
10. 患者用药历史表 (Exercise_Records)
字段名 | 类型 | 说明 | 示例 |
medication_id | VARCHAR(36) | 用药记录唯一ID | "m5n6o7p8-..." |
patient_id | VARCHAR(36) | 关联患者ID | "a1b2c3d4-..." |
medication_name | VARCHAR(100) | 药物名称(通用名,如多奈哌齐) | "多奈哌齐" |
dosage | VARCHAR(50) | 剂量与用法 | "5mg 口服,每日一次" |
medication_start | DATE | 开始用药日期 | 2020-05-15 |
medication_end | DATE | 结束用药日期(NULL表示持续使用) | NULL |
prescription_by | VARCHAR(50) | 处方医生 | "李华(神经内科)" |
文章只用于自我记录和课程检查,无其它目的。