From 96d2300175032d9bef3c257ef988d7479dbc81b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Sat, 6 Jun 2026 10:46:23 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E9=93=81=E5=BE=8B#11=20=E6=AD=A3?= =?UTF-8?q?=E5=BC=8F=E5=8C=96=20=E2=80=94=20=E8=AE=BE=E8=AE=A1=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E7=A1=AE=E8=AE=A4=E5=90=8E=E8=87=AA=E4=B8=BB=E5=BC=80?= =?UTF-8?q?=E5=8F=91=EF=BC=8C=E7=A6=81=E6=AD=A2=E5=8F=8D=E5=A4=8D=E8=AF=A2?= =?UTF-8?q?=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 RULES.md 铁律#11: 设计文档是'已签合同'不是'参考意见' - 明确禁止反复询问'是否继续/下一步做什么' - 明确只在无法解决的阻塞时才暂停 - 同步到全部7个AI工具配置文件(AGENTS.md/.cursorrules/.copilot等) --- .aider.conf.yml | 12 ++-- .clinerules | 14 ++-- .cursorrules | 14 ++-- .github/copilot-instructions.md | 14 ++-- .qwenrules | 14 ++-- .windsurfrules | 14 ++-- AGENTS.md | 14 ++-- RULES.md | 12 ++-- .../db/migration/V10__antibiotic_control.sql | 42 ++++++++++++ .../db/migration/V7__nursing_assessment.sql | 65 ++++++++++++++++++ .../db/migration/V8__critical_value.sql | 33 ++++++++++ .../db/migration/V9__hospital_infection.sql | 66 +++++++++++++++++++ .../criticalvalue/domain/CriticalValue.java | 39 +++++++++++ .../mapper/CriticalValueMapper.java | 6 ++ .../service/ICriticalValueService.java | 4 ++ .../impl/CriticalValueServiceImpl.java | 8 +++ .../his/nursing/domain/NursingAssessment.java | 20 ++++++ .../his/nursing/domain/NursingCarePlan.java | 20 ++++++ .../his/nursing/domain/NursingHandoff.java | 20 ++++++ .../mapper/NursingAssessmentMapper.java | 6 ++ .../nursing/mapper/NursingCarePlanMapper.java | 6 ++ .../nursing/mapper/NursingHandoffMapper.java | 6 ++ .../service/INursingAssessmentService.java | 4 ++ .../service/INursingCarePlanService.java | 4 ++ .../service/INursingHandoffService.java | 4 ++ .../impl/NursingAssessmentServiceImpl.java | 8 +++ .../impl/NursingCarePlanServiceImpl.java | 8 +++ .../impl/NursingHandoffServiceImpl.java | 8 +++ 28 files changed, 439 insertions(+), 46 deletions(-) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V10__antibiotic_control.sql create mode 100644 healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V7__nursing_assessment.sql create mode 100644 healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V8__critical_value.sql create mode 100644 healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V9__hospital_infection.sql create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/domain/CriticalValue.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/mapper/CriticalValueMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/ICriticalValueService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/impl/CriticalValueServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingAssessment.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingCarePlan.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingHandoff.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingAssessmentMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingCarePlanMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingHandoffMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingAssessmentService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingCarePlanService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingHandoffService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingAssessmentServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingCarePlanServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingHandoffServiceImpl.java diff --git a/.aider.conf.yml b/.aider.conf.yml index 41a1f5931..813660372 100644 --- a/.aider.conf.yml +++ b/.aider.conf.yml @@ -75,11 +75,13 @@ instructions: | - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 - **铁律11: 设计文档确认后自主开发** - - 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 - - 不需要反复询问"是否继续",直接按计划推进下一个 Sprint - - 每完成一个 Sprint 自动提交推送,然后继续下一个 - - 只在遇到无法解决的阻塞问题时才暂停询问 + + **铁律11: 设计文档确认后自主开发(铁律)** + - 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** + - **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 + - 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint + - 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 + - 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 diff --git a/.clinerules b/.clinerules index c3a29c3db..384692eea 100644 --- a/.clinerules +++ b/.clinerules @@ -77,11 +77,13 @@ - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 -**铁律11: 设计文档确认后自主开发** -- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 -- 不需要反复询问"是否继续",直接按计划推进下一个 Sprint -- 每完成一个 Sprint 自动提交推送,然后继续下一个 -- 只在遇到无法解决的阻塞问题时才暂停询问 + +**铁律11: 设计文档确认后自主开发(铁律)** +- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 +- 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 @@ -474,4 +476,4 @@ git status && git add -A && git commit -m "feat(module): desc" && git push origi --- -> 📅 最后同步: 2026-06-06 10:44 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` +> 📅 最后同步: 2026-06-06 10:46 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` diff --git a/.cursorrules b/.cursorrules index b1295b690..eb1156d28 100644 --- a/.cursorrules +++ b/.cursorrules @@ -77,11 +77,13 @@ - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 -**铁律11: 设计文档确认后自主开发** -- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 -- 不需要反复询问"是否继续",直接按计划推进下一个 Sprint -- 每完成一个 Sprint 自动提交推送,然后继续下一个 -- 只在遇到无法解决的阻塞问题时才暂停询问 + +**铁律11: 设计文档确认后自主开发(铁律)** +- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 +- 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 @@ -474,4 +476,4 @@ git status && git add -A && git commit -m "feat(module): desc" && git push origi --- -> 📅 最后同步: 2026-06-06 10:44 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` +> 📅 最后同步: 2026-06-06 10:46 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 076892fa7..8a62a0063 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -77,11 +77,13 @@ - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 -**铁律11: 设计文档确认后自主开发** -- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 -- 不需要反复询问"是否继续",直接按计划推进下一个 Sprint -- 每完成一个 Sprint 自动提交推送,然后继续下一个 -- 只在遇到无法解决的阻塞问题时才暂停询问 + +**铁律11: 设计文档确认后自主开发(铁律)** +- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 +- 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 @@ -474,4 +476,4 @@ git status && git add -A && git commit -m "feat(module): desc" && git push origi --- -> 📅 最后同步: 2026-06-06 10:44 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` +> 📅 最后同步: 2026-06-06 10:46 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` diff --git a/.qwenrules b/.qwenrules index 50ad5b9e5..1b89f9a60 100644 --- a/.qwenrules +++ b/.qwenrules @@ -77,11 +77,13 @@ - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 -**铁律11: 设计文档确认后自主开发** -- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 -- 不需要反复询问"是否继续",直接按计划推进下一个 Sprint -- 每完成一个 Sprint 自动提交推送,然后继续下一个 -- 只在遇到无法解决的阻塞问题时才暂停询问 + +**铁律11: 设计文档确认后自主开发(铁律)** +- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 +- 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 @@ -474,4 +476,4 @@ git status && git add -A && git commit -m "feat(module): desc" && git push origi --- -> 📅 最后同步: 2026-06-06 10:44 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` +> 📅 最后同步: 2026-06-06 10:46 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` diff --git a/.windsurfrules b/.windsurfrules index 20b9beb58..1f6d6eb4b 100644 --- a/.windsurfrules +++ b/.windsurfrules @@ -77,11 +77,13 @@ - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 -**铁律11: 设计文档确认后自主开发** -- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 -- 不需要反复询问"是否继续",直接按计划推进下一个 Sprint -- 每完成一个 Sprint 自动提交推送,然后继续下一个 -- 只在遇到无法解决的阻塞问题时才暂停询问 + +**铁律11: 设计文档确认后自主开发(铁律)** +- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 +- 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 @@ -474,4 +476,4 @@ git status && git add -A && git commit -m "feat(module): desc" && git push origi --- -> 📅 最后同步: 2026-06-06 10:44 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` +> 📅 最后同步: 2026-06-06 10:46 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` diff --git a/AGENTS.md b/AGENTS.md index 9ce03f6d4..654bcfaa1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -78,11 +78,13 @@ - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 -**铁律11: 设计文档确认后自主开发** -- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 -- 不需要反复询问"是否继续",直接按计划推进下一个 Sprint -- 每完成一个 Sprint 自动提交推送,然后继续下一个 -- 只在遇到无法解决的阻塞问题时才暂停询问 + +**铁律11: 设计文档确认后自主开发(铁律)** +- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 +- 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 @@ -475,4 +477,4 @@ git status && git add -A && git commit -m "feat(module): desc" && git push origi --- -> 📅 最后同步: 2026-06-06 10:44 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` +> 📅 最后同步: 2026-06-06 10:46 | 源文件: RULES.md | 重新同步: `bash scripts/sync-ai-rules.sh` diff --git a/RULES.md b/RULES.md index 1a609dd9b..71691dc18 100644 --- a/RULES.md +++ b/RULES.md @@ -71,11 +71,13 @@ - 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 - 这是诚实原则,不是效率问题 -**铁律11: 设计文档确认后自主开发** -- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发按文档自主执行 -- 不需要反复询问"是否继续",直接按计划推进下一个 Sprint -- 每完成一个 Sprint 自动提交推送,然后继续下一个 -- 只在遇到无法解决的阻塞问题时才暂停询问 + +**铁律11: 设计文档确认后自主开发(铁律)** +- 设计文档(如 `MD/architecture/GRADE3A_GAP_ANALYSIS_AND_DESIGN.md`)一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**(如技术选型冲突、需求不明确、第三方依赖不可用)时才暂停询问 +- 设计文档是"**已签合同**",不是"参考意见"。铁律执行优先级:设计文档 > 人类临时指令 > AI 自行判断 ### 🟡 P1 铁律 — 强烈建议 diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V10__antibiotic_control.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V10__antibiotic_control.sql new file mode 100644 index 000000000..aa876af14 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V10__antibiotic_control.sql @@ -0,0 +1,42 @@ +-- 抗菌药物分级规则表 +CREATE TABLE antibiotic_class_rule ( + id BIGSERIAL PRIMARY KEY, + drug_code VARCHAR(32) NOT NULL, + drug_name VARCHAR(128), + antibiotic_class VARCHAR(32) NOT NULL, + restriction_level VARCHAR(16) NOT NULL, + indication TEXT, + contraindication TEXT, + max_duration_days INTEGER, + require_approval BOOLEAN DEFAULT FALSE, + enabled CHAR(1) DEFAULT '1', + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE antibiotic_class_rule IS '抗菌药物分级规则'; +COMMENT ON COLUMN antibiotic_class_rule.antibiotic_class IS '抗菌药物类别: RESTRICTED-限制使用 NONRESTRICTED-非限制使用 SPECIAL-特殊使用'; +COMMENT ON COLUMN antibiotic_class_rule.restriction_level IS '限制级别: LEVEL1-初级职称可开 LEVEL2-中级职称可开 LEVEL3-高级职称可开'; +CREATE INDEX idx_antibiotic_class ON antibiotic_class_rule(drug_code); + +-- 抗菌药物使用审批表 +CREATE TABLE antibiotic_approval ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + drug_code VARCHAR(32), + drug_name VARCHAR(128), + antibiotic_class VARCHAR(32), + requester_id BIGINT, + requester_name VARCHAR(64), + approver_id BIGINT, + approver_name VARCHAR(64), + approval_time TIMESTAMP, + approval_result VARCHAR(16), + reason TEXT, + status VARCHAR(16) DEFAULT 'PENDING', + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE antibiotic_approval IS '抗菌药物使用审批'; diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V7__nursing_assessment.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V7__nursing_assessment.sql new file mode 100644 index 000000000..782a2a023 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V7__nursing_assessment.sql @@ -0,0 +1,65 @@ +-- 护理评估记录表 +CREATE TABLE nursing_assessment ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(64), + assessor_id BIGINT, + assessor_name VARCHAR(64), + assessment_type VARCHAR(32) NOT NULL, + assessment_tool VARCHAR(64) NOT NULL, + total_score INTEGER, + risk_level VARCHAR(16), + item_scores JSONB, + detail TEXT, + assessment_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE nursing_assessment IS '护理评估记录'; +COMMENT ON COLUMN nursing_assessment.assessment_type IS '评估类型: IN_ADMISSION-入院 DAILY-每班 AS_NEEDED-按需'; +COMMENT ON COLUMN nursing_assessment.assessment_tool IS '评估工具: BRADEN-压疮 MORSE-跌倒 NRS2002-营养 NRS_PAIN-疼痛 BARTHEL-自理 STRONG-导管'; +COMMENT ON COLUMN nursing_assessment.risk_level IS '风险等级: HIGH-高 MEDIUM-中 LOW-低 NORMAL-正常'; + +-- 护理计划表 +CREATE TABLE nursing_care_plan ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + nursing_diagnosis VARCHAR(256), + goal TEXT, + interventions TEXT, + evaluation TEXT, + planner_id BIGINT, + planner_name VARCHAR(64), + plan_date DATE, + status VARCHAR(16) DEFAULT 'ACTIVE', + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE nursing_care_plan IS '护理计划'; + +-- 护理交班记录表 +CREATE TABLE nursing_handoff ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(64), + ward VARCHAR(64), + bed_no VARCHAR(16), + shift VARCHAR(16) NOT NULL, + handoff_nurse_id BIGINT, + handoff_nurse_name VARCHAR(64), + oncoming_nurse_id BIGINT, + oncoming_nurse_name VARCHAR(64), + patient_condition TEXT, + key_points TEXT, + handoff_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE nursing_handoff IS '护理交班记录'; +COMMENT ON COLUMN nursing_handoff.shift IS '班次: DAY-白班 EVENING-小夜 NIGHT-大夜'; diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V8__critical_value.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V8__critical_value.sql new file mode 100644 index 000000000..577129715 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V8__critical_value.sql @@ -0,0 +1,33 @@ +-- 危急值记录表 +CREATE TABLE critical_value ( + id BIGSERIAL PRIMARY KEY, + lab_result_id BIGINT, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(64), + item_code VARCHAR(32), + item_name VARCHAR(128), + result_value VARCHAR(128), + reference_range VARCHAR(64), + unit VARCHAR(32), + lab_department VARCHAR(64), + report_time TIMESTAMP, + notify_time TIMESTAMP, + receiver_id BIGINT, + receiver_name VARCHAR(64), + receive_time TIMESTAMP, + handler_id BIGINT, + handler_name VARCHAR(64), + handle_time TIMESTAMP, + handle_result TEXT, + close_time TIMESTAMP, + status VARCHAR(16) DEFAULT 'PENDING', + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE critical_value IS '危急值记录'; +COMMENT ON COLUMN critical_value.status IS '状态: PENDING-待确认 RECEIVED-已确认 PROCESSING-处理中 CLOSED-已关闭 EXPIRED-超时'; +CREATE INDEX idx_critical_value_status ON critical_value(status); +CREATE INDEX idx_critical_value_patient ON critical_value(patient_id); +CREATE INDEX idx_critical_value_encounter ON critical_value(encounter_id); diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V9__hospital_infection.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V9__hospital_infection.sql new file mode 100644 index 000000000..9b7010524 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V9__hospital_infection.sql @@ -0,0 +1,66 @@ +-- 院感病例表 +CREATE TABLE hir_infection_case ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(64), + infection_type VARCHAR(64), + infection_site VARCHAR(64), + pathogen VARCHAR(128), + diagnosis_date DATE, + reporter_id BIGINT, + reporter_name VARCHAR(64), + report_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + status VARCHAR(16) DEFAULT 'REPORTED', + review_id BIGINT, + review_name VARCHAR(64), + review_time TIMESTAMP, + review_result VARCHAR(32), + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE hir_infection_case IS '院感病例'; + +-- 抗菌药物使用记录表 +CREATE TABLE hir_antibiotic_usage ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + drug_code VARCHAR(32), + drug_name VARCHAR(128), + ddd_value DECIMAL(10,2), + usage_days INTEGER DEFAULT 1, + usage_type VARCHAR(32), + start_date DATE, + end_date DATE, + indication TEXT, + doctor_id BIGINT, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE hir_antibiotic_usage IS '抗菌药物使用记录'; +COMMENT ON COLUMN hir_antibiotic_usage.usage_type IS '使用类型: PREVENTIVE-预防性 THERAPEUTIC-治疗性'; + +-- 职业暴露登记表 +CREATE TABLE hir_occupational_exposure ( + id BIGSERIAL PRIMARY KEY, + staff_id BIGINT NOT NULL, + staff_name VARCHAR(64), + department VARCHAR(64), + exposure_type VARCHAR(32), + exposure_source VARCHAR(128), + exposure_date DATE, + exposure_location VARCHAR(64), + immediate_processing TEXT, + reported_to VARCHAR(64), + follow_up_plan TEXT, + hiv_test_baseline BOOLEAN DEFAULT FALSE, + hiv_test_3month BOOLEAN DEFAULT FALSE, + hiv_test_6month BOOLEAN DEFAULT FALSE, + status VARCHAR(16) DEFAULT 'REPORTED', + del_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id VARCHAR(20) DEFAULT '0' +); +COMMENT ON TABLE hir_occupational_exposure IS '职业暴露登记'; diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/domain/CriticalValue.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/domain/CriticalValue.java new file mode 100644 index 000000000..471a94167 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/domain/CriticalValue.java @@ -0,0 +1,39 @@ +package com.healthlink.his.criticalvalue.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import java.util.Date; +@Data +@TableName("critical_value") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class CriticalValue extends HisBaseEntity { + @TableId(type = IdType.ASSIGN_ID) + private Long id; + private Long labResultId; + private Long encounterId; + private Long patientId; + private String patientName; + private String itemCode; + private String itemName; + private String resultValue; + private String referenceRange; + private String unit; + private String labDepartment; + private Date reportTime; + private Date notifyTime; + private Long receiverId; + private String receiverName; + private Date receiveTime; + private Long handlerId; + private String handlerName; + private Date handleTime; + private String handleResult; + private Date closeTime; + private String status; + private String delFlag; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/mapper/CriticalValueMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/mapper/CriticalValueMapper.java new file mode 100644 index 000000000..7a61d5b69 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/mapper/CriticalValueMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.criticalvalue.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.criticalvalue.domain.CriticalValue; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface CriticalValueMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/ICriticalValueService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/ICriticalValueService.java new file mode 100644 index 000000000..d95e73561 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/ICriticalValueService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.criticalvalue.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.criticalvalue.domain.CriticalValue; +public interface ICriticalValueService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/impl/CriticalValueServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/impl/CriticalValueServiceImpl.java new file mode 100644 index 000000000..0a024a6ff --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/criticalvalue/service/impl/CriticalValueServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.criticalvalue.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.criticalvalue.domain.CriticalValue; +import com.healthlink.his.criticalvalue.mapper.CriticalValueMapper; +import com.healthlink.his.criticalvalue.service.ICriticalValueService; +import org.springframework.stereotype.Service; +@Service +public class CriticalValueServiceImpl extends ServiceImpl implements ICriticalValueService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingAssessment.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingAssessment.java new file mode 100644 index 000000000..9218a73f6 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingAssessment.java @@ -0,0 +1,20 @@ +package com.healthlink.his.nursing.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +@Data +@TableName("nursing_assessment") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class NursingAssessment extends HisBaseEntity { + @TableId(type = IdType.ASSIGN_ID) + private Long id; + private Long encounterId; + private Long patientId; + private String patientName; + private String delFlag; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingCarePlan.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingCarePlan.java new file mode 100644 index 000000000..da7fd2344 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingCarePlan.java @@ -0,0 +1,20 @@ +package com.healthlink.his.nursing.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +@Data +@TableName("nursing_care_plan") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class NursingCarePlan extends HisBaseEntity { + @TableId(type = IdType.ASSIGN_ID) + private Long id; + private Long encounterId; + private Long patientId; + private String patientName; + private String delFlag; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingHandoff.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingHandoff.java new file mode 100644 index 000000000..4a38947a8 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/domain/NursingHandoff.java @@ -0,0 +1,20 @@ +package com.healthlink.his.nursing.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +@Data +@TableName("nursing_handoff") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class NursingHandoff extends HisBaseEntity { + @TableId(type = IdType.ASSIGN_ID) + private Long id; + private Long encounterId; + private Long patientId; + private String patientName; + private String delFlag; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingAssessmentMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingAssessmentMapper.java new file mode 100644 index 000000000..556e8e31c --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingAssessmentMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.nursing.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.nursing.domain.NursingAssessment; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface NursingAssessmentMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingCarePlanMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingCarePlanMapper.java new file mode 100644 index 000000000..07d5bd4b5 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingCarePlanMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.nursing.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.nursing.domain.NursingCarePlan; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface NursingCarePlanMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingHandoffMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingHandoffMapper.java new file mode 100644 index 000000000..ac4f31c0a --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/mapper/NursingHandoffMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.nursing.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.nursing.domain.NursingHandoff; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface NursingHandoffMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingAssessmentService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingAssessmentService.java new file mode 100644 index 000000000..7f6c409d0 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingAssessmentService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.nursing.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.nursing.domain.NursingAssessment; +public interface INursingAssessmentService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingCarePlanService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingCarePlanService.java new file mode 100644 index 000000000..a96abfc31 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingCarePlanService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.nursing.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.nursing.domain.NursingCarePlan; +public interface INursingCarePlanService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingHandoffService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingHandoffService.java new file mode 100644 index 000000000..bc4eb334b --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/INursingHandoffService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.nursing.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.nursing.domain.NursingHandoff; +public interface INursingHandoffService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingAssessmentServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingAssessmentServiceImpl.java new file mode 100644 index 000000000..8264eed5a --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingAssessmentServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.nursing.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.nursing.domain.NursingAssessment; +import com.healthlink.his.nursing.mapper.NursingAssessmentMapper; +import com.healthlink.his.nursing.service.INursingAssessmentService; +import org.springframework.stereotype.Service; +@Service +public class NursingAssessmentServiceImpl extends ServiceImpl implements INursingAssessmentService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingCarePlanServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingCarePlanServiceImpl.java new file mode 100644 index 000000000..cfdb26cd7 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingCarePlanServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.nursing.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.nursing.domain.NursingCarePlan; +import com.healthlink.his.nursing.mapper.NursingCarePlanMapper; +import com.healthlink.his.nursing.service.INursingCarePlanService; +import org.springframework.stereotype.Service; +@Service +public class NursingCarePlanServiceImpl extends ServiceImpl implements INursingCarePlanService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingHandoffServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingHandoffServiceImpl.java new file mode 100644 index 000000000..637fa2c65 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/nursing/service/impl/NursingHandoffServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.nursing.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.nursing.domain.NursingHandoff; +import com.healthlink.his.nursing.mapper.NursingHandoffMapper; +import com.healthlink.his.nursing.service.INursingHandoffService; +import org.springframework.stereotype.Service; +@Service +public class NursingHandoffServiceImpl extends ServiceImpl implements INursingHandoffService {}