diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/StructuredEmrController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/StructuredEmrController.java index 7aedbf807..ba17eddd9 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/StructuredEmrController.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/StructuredEmrController.java @@ -72,8 +72,8 @@ public class StructuredEmrController { @GetMapping("/timeliness/statistics") @Operation(summary = "完成率统计") public R> getCompletionStatistics( - @RequestParam String startDate, - @RequestParam String endDate) { + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { return R.ok(structuredEmrAppService.getCompletionStatistics(startDate, endDate)); } diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V40__emr_module_schema_fix.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V40__emr_module_schema_fix.sql new file mode 100644 index 000000000..e8a552532 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V40__emr_module_schema_fix.sql @@ -0,0 +1,79 @@ +-- V40: 修复EMR模块数据库表结构问题 +-- 1. emr_archive_record表:添加缺失的审计字段,修复NOT NULL约束 +-- 2. emr_search_index表:修复NOT NULL约束 +-- 3. emr_revision表:添加缺失的审计字段 + +-- ========================================== +-- 1. emr_archive_record 表修复 +-- ========================================== + +-- 添加缺失的审计字段(如果不存在) +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_archive_record' AND column_name = 'create_by') THEN + ALTER TABLE emr_archive_record ADD COLUMN create_by character varying; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_archive_record' AND column_name = 'update_by') THEN + ALTER TABLE emr_archive_record ADD COLUMN update_by character varying; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_archive_record' AND column_name = 'update_time') THEN + ALTER TABLE emr_archive_record ADD COLUMN update_time timestamp without time zone; + END IF; +END $$; + +-- 修复NOT NULL约束 +ALTER TABLE emr_archive_record ALTER COLUMN emr_id DROP NOT NULL; +ALTER TABLE emr_archive_record ALTER COLUMN patient_id DROP NOT NULL; +ALTER TABLE emr_archive_record ALTER COLUMN archive_type DROP NOT NULL; + +-- ========================================== +-- 2. emr_search_index 表修复 +-- ========================================== + +-- 修复NOT NULL约束 +ALTER TABLE emr_search_index ALTER COLUMN emr_id DROP NOT NULL; +ALTER TABLE emr_search_index ALTER COLUMN encounter_id DROP NOT NULL; +ALTER TABLE emr_search_index ALTER COLUMN patient_id DROP NOT NULL; + +-- ========================================== +-- 3. emr_revision 表修复 +-- ========================================== + +-- 添加缺失的审计字段 +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_revision' AND column_name = 'create_by') THEN + ALTER TABLE emr_revision ADD COLUMN create_by character varying; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_revision' AND column_name = 'tenant_id') THEN + ALTER TABLE emr_revision ADD COLUMN tenant_id bigint; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_revision' AND column_name = 'update_by') THEN + ALTER TABLE emr_revision ADD COLUMN update_by character varying; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_revision' AND column_name = 'update_time') THEN + ALTER TABLE emr_revision ADD COLUMN update_time timestamp without time zone; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'emr_revision' AND column_name = 'delete_flag') THEN + ALTER TABLE emr_revision ADD COLUMN delete_flag character varying; + END IF; +END $$; + +-- ========================================== +-- 4. 添加索引以优化查询性能 +-- ========================================== + +-- emr_archive_record 索引 +CREATE INDEX IF NOT EXISTS idx_emr_archive_patient_name ON emr_archive_record(patient_name); +CREATE INDEX IF NOT EXISTS idx_emr_archive_status ON emr_archive_record(archive_status); +CREATE INDEX IF NOT EXISTS idx_emr_archive_encounter ON emr_archive_record(encounter_id); + +-- emr_search_index 索引 +CREATE INDEX IF NOT EXISTS idx_emr_search_patient ON emr_search_index(patient_name); +CREATE INDEX IF NOT EXISTS idx_emr_search_type ON emr_search_index(emr_type); +CREATE INDEX IF NOT EXISTS idx_emr_search_doctor ON emr_search_index(doctor_name); +CREATE INDEX IF NOT EXISTS idx_emr_search_dept ON emr_search_index(department_name); + +-- emr_revision 索引 +CREATE INDEX IF NOT EXISTS idx_emr_revision_emr ON emr_revision(emr_id); +CREATE INDEX IF NOT EXISTS idx_emr_revision_operator ON emr_revision(operator_name);