From 941054734f81dd3ef4879f0bebbe367fca35f78f Mon Sep 17 00:00:00 2001 From: nanyangbreeze <1955231298@qq.com> Date: Tue, 6 Jan 2026 14:48:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=A7=91=E5=AE=A4=E6=8A=A4?= =?UTF-8?q?=E5=A3=AB=E7=AE=A1=E7=90=86=E6=82=A3=E8=80=85=E6=8E=92=E9=98=9F?= =?UTF-8?q?=E5=8F=AB=E5=8F=B7=E9=98=9F=E5=88=97=EF=BC=8C=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=82=A3=E8=80=85=E6=99=BA=E8=83=BD=E5=88=86=E8=AF=8A=E3=80=81?= =?UTF-8?q?=E9=98=9F=E5=88=97=E8=B0=83=E6=95=B4=E3=80=81=E5=8F=AB=E5=8F=B7?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E7=AD=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/i18n/message_zh_CN.properties | 55 ---------- .../DoctorScheduleMapper.xml | 51 +++++++++ .../src/views/doctorstation/index.vue | 24 ++--- .../drugDistribution/drugDistributionList.vue | 1 + .../src/views/triageandqueuemanage/api.js | 100 ++++++++++++++++++ .../202512251200 add_table adm_doctor_schedule.sql | 57 ++++++++++ 6 files changed, 221 insertions(+), 67 deletions(-) delete mode 100644 openhis-server-new/openhis-application/src/main/resources/i18n/message_zh_CN.properties create mode 100644 openhis-server-new/openhis-application/src/main/resources/mapper/appointmentmanage/DoctorScheduleMapper.xml create mode 100644 迁移记录-DB变更记录/202512251200 add_table adm_doctor_schedule.sql diff --git a/openhis-server-new/openhis-application/src/main/resources/i18n/message_zh_CN.properties b/openhis-server-new/openhis-application/src/main/resources/i18n/message_zh_CN.properties deleted file mode 100644 index b4362751..00000000 --- a/openhis-server-new/openhis-application/src/main/resources/i18n/message_zh_CN.properties +++ /dev/null @@ -1,55 +0,0 @@ -#\u9519\u8bef\u6d88\u606f -not.null=* \u5fc5\u987b\u586b\u5199 -user.jcaptcha.error=\u9a8c\u8bc1\u7801\u9519\u8bef -user.jcaptcha.expire=\u9a8c\u8bc1\u7801\u5df2\u5931\u6548 -user.not.exists=\u7528\u6237\u4e0d\u5b58\u5728/\u5bc6\u7801\u9519\u8bef -user.password.not.match=\u7528\u6237\u4e0d\u5b58\u5728/\u5bc6\u7801\u9519\u8bef -user.password.retry.limit.count=\u5bc6\u7801\u8f93\u5165\u9519\u8bef{0}\u6b21 -user.password.retry.limit.exceed=\u5bc6\u7801\u8f93\u5165\u9519\u8bef{0}\u6b21\uff0c\u5e10\u6237\u9501\u5b9a{1}\u5206\u949f -user.password.delete=\u5bf9\u4e0d\u8d77\uff0c\u60a8\u7684\u8d26\u53f7\u5df2\u88ab\u5220\u9664 -user.blocked=\u7528\u6237\u5df2\u5c01\u7981\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458 -role.blocked=\u89d2\u8272\u5df2\u5c01\u7981\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458 -login.blocked=\u5f88\u9057\u61be\uff0c\u8bbf\u95eeIP\u5df2\u88ab\u5217\u5165\u7cfb\u7edf\u9ed1\u540d\u5355 -user.logout.success=\u9000\u51fa\u6210\u529f -length.not.valid=\u957f\u5ea6\u5fc5\u987b\u5728{min}\u5230{max}\u4e2a\u5b57\u7b26\u4e4b\u95f4 -user.username.not.valid=* 2\u523020\u4e2a\u6c49\u5b57\u3001\u5b57\u6bcd\u3001\u6570\u5b57\u6216\u4e0b\u5212\u7ebf\u7ec4\u6210\uff0c\u4e14\u5fc5\u987b\u4ee5\u975e\u6570\u5b57\u5f00\u5934 -user.password.not.valid=* 5-50\u4e2a\u5b57\u7b26 -user.email.not.valid=\u90ae\u7bb1\u683c\u5f0f\u9519\u8bef -user.mobile.phone.number.not.valid=\u624b\u673a\u53f7\u683c\u5f0f\u9519\u8bef -user.login.success=\u767b\u5f55\u6210\u529f\u6210\u679c -user.register.success=\u6ce8\u518c\u6210\u529f -user.notfound=\u8bf7\u91cd\u65b0\u767b\u5f55 -user.forcelogout=\u7ba1\u7406\u5458\u5f3a\u5236\u9000\u51fa\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55 -user.unknown.error=\u672a\u77e5\u9519\u8bef\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55 -##\u6587\u4ef6\u4e0a\u4f20\u6d88\u606f -upload.exceed.maxSize=\u4e0a\u4f20\u7684\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236\u7684\u6587\u4ef6\u5927\u5c0f\uff01
\u5141\u8bb8\u7684\u6587\u4ef6\u6700\u5927\u5927\u5c0f\u662f\uff1a{0}MB\uff01 -upload.filename.exceed.length=\u4e0a\u4f20\u7684\u6587\u4ef6\u540d\u6700\u957f{0}\u4e2a\u5b57\u7b26 -##\u6743\u9650 -no.permission=\u60a8\u6ca1\u6709\u6570\u636e\u7684\u6743\u9650\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6dfb\u52a0\u6743\u9650 [{0}] -no.create.permission=\u60a8\u6ca1\u6709\u521b\u5efa\u6570\u636e\u7684\u6743\u9650\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6dfb\u52a0\u6743\u9650 [{0}] -no.update.permission=\u60a8\u6ca1\u6709\u4fee\u6539\u6570\u636e\u7684\u6743\u9650\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6dfb\u52a0\u6743\u9650 [{0}] -no.delete.permission=\u60a8\u6ca1\u6709\u5220\u9664\u6570\u636e\u7684\u6743\u9650\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6dfb\u52a0\u6743\u9650 [{0}] -no.export.permission=\u60a8\u6ca1\u6709\u5bfc\u51fa\u6570\u636e\u7684\u6743\u9650\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6dfb\u52a0\u6743\u9650 [{0}] -no.view.permission=\u60a8\u6ca1\u6709\u67e5\u770b\u6570\u636e\u7684\u6743\u9650\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6dfb\u52a0\u6743\u9650 [{0}] -apl.common.M00001={0}\u6dfb\u52a0\u6210\u529f -apl.common.M00002={0}\u4fdd\u5b58\u6210\u529f -apl.common.M00003={0}\u5df2\u7ecf\u5b58\u5728 -apl.common.M00004={0}\u64cd\u4f5c\u6210\u529f -apl.common.M00005={0}\u5220\u9664\u6210\u529f -apl.common.M00006=\u64cd\u4f5c\u5931\u8d25,\u8be5\u6570\u636e\u5df2\u88ab\u4ed6\u4eba\u5220\u9664,\u8bf7\u5237\u65b0\u540e\u91cd\u8bd5 -apl.common.M00007=\u64cd\u4f5c\u5931\u8d25,\u8be5\u6570\u636e\u5df2\u88ab\u4ed6\u4eba\u66f4\u6539,\u8bf7\u5237\u65b0\u540e\u91cd\u8bd5 -apl.common.M00008=\u8bf7\u52ff\u91cd\u590d\u63d0\u4ea4 -apl.common.M00009=\u67e5\u8be2\u6210\u529f -apl.common.M00010=\u64cd\u4f5c\u5931\u8d25,\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458 -apl.chargeRefund.M00001=\u8be5\u6536\u8d39\u5355\u76f8\u5173{0}\u5df2\u7ecf\u53d1\u51fa\uff0c\u8bf7\u5148\u9000\u836f\u540e\u518d\u8fdb\u884c\u9000\u8d39 -apl.payment.M00001=\u5404\u7f34\u8d39\u6e20\u9053\u5b9e\u6536\u91d1\u989d\u5408\u8ba1\u4e0d\u7b49\u4e8e\u5b9e\u6536\u91d1\u989d -apl.payment.M00002=\u5b9e\u6536\u91d1\u989d\u5408\u8ba1\u4e0d\u7b49\u4e8e\u5e94\u6536\u91d1\u989d -apl.payment.M00003=\u8bf7\u9009\u62e9\u652f\u4ed8\u65b9\u5f0f -apl.payment.M00004=\u67e5\u8be2\u6210\u529f -apl.payment.M00005=\u64cd\u4f5c\u5931\u8d25,\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458 -apl.payment.M00006=\u6210\u529f\u6536\u8d39 -apl.payment.M00007=\u672a\u67e5\u8be2\u5230\u6536\u8d39\u9879\u76ee -apl.payment.M00008=\u672a\u67e5\u8be2\u5230{0}\u8d26\u6237\u4fe1\u606f -apl.payment.M00009=\u672a\u67e5\u8be2\u5230\u6536\u8d39\u9879\u76ee\uff0c\u4e0d\u9700\u8981\u8f6c\u6362\u8d26\u6237 -apl.adjustPrice.M00001=\u6267\u884c\u5931\u8d25\uff0c\u672a\u52a0\u8f7d\u5230\u4efb\u4f55\u6570\u636e\uff01 -apl.adjustPrice.M00002=\u6267\u884c\u5931\u8d25\uff0c\u6539\u4ef7\u5355\u4e2d\u6709\u6b63\u5728\u5ba1\u6838\u4e2d\u7684\u8d27\u54c1\uff0c\u8bf7\u68c0\u67e5\u540e\u91cd\u65b0\u63d0\u4ea4\uff01 \ No newline at end of file diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/appointmentmanage/DoctorScheduleMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/appointmentmanage/DoctorScheduleMapper.xml new file mode 100644 index 00000000..f927eefc --- /dev/null +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/appointmentmanage/DoctorScheduleMapper.xml @@ -0,0 +1,51 @@ + + + + + + + INSERT INTO adm_doctor_schedule ( + weekday, + time_period, + doctor, + clinic, + start_time, + end_time, + limit_number, + call_sign_record, + register_item, + register_fee, + diagnosis_item, + diagnosis_fee, + is_online, + is_stopped, + stop_reason, + dept_id + , create_time + , update_time + ) VALUES ( + #{weekday}, + #{timePeriod}, + #{doctor}, + #{clinic}, + #{startTime}, + #{endTime}, + #{limitNumber}, + #{callSignRecord}, + #{registerItem}, + #{registerFee}, + #{diagnosisItem}, + #{diagnosisFee}, + #{isOnline}, + #{isStopped}, + #{stopReason}, + #{deptId} + , #{createTime} + , #{updateTime} + ) + + + + diff --git a/openhis-ui-vue3/src/views/doctorstation/index.vue b/openhis-ui-vue3/src/views/doctorstation/index.vue index b65e4d6c..db3cfcd3 100644 --- a/openhis-ui-vue3/src/views/doctorstation/index.vue +++ b/openhis-ui-vue3/src/views/doctorstation/index.vue @@ -81,11 +81,11 @@ {{ Object.keys(patientInfo).length !== 0 ? patientInfo.patientName + - ' / ' + - patientInfo.age + - ' / ' + - patientInfo.genderEnum_enumText + - ' / ' + + ' / ' + + patientInfo.age + + ' / ' + + patientInfo.genderEnum_enumText + + ' / ' + (patientInfo?.contractName ? patientInfo.contractName : '') + '/' + patientInfo.phone + @@ -137,9 +137,9 @@ :patientInfo="patientInfo" ref="emrRef" @save=" - (value) => { - saveStatus = value; - } + (value) => { + saveStatus = value; + } " /> --> @@ -430,10 +430,10 @@ function getEnPrescription(encounterId) { type: 'error', message: '暂无处方单', }); - return; - } + return; + } prescriptionInfo.value = res.data.records; - openPrescriptionDialog.value = true; + openPrescriptionDialog.value = true; }); } @@ -540,7 +540,7 @@ const onHospitalization = async () => { ElMessage({ type: 'error', message: '该患者,已办理入院,不允许重复办理', - }); + }); } }; diff --git a/openhis-ui-vue3/src/views/inpatientNurse/drugDistribution/drugDistributionList.vue b/openhis-ui-vue3/src/views/inpatientNurse/drugDistribution/drugDistributionList.vue index 2856f15b..83538ddf 100644 --- a/openhis-ui-vue3/src/views/inpatientNurse/drugDistribution/drugDistributionList.vue +++ b/openhis-ui-vue3/src/views/inpatientNurse/drugDistribution/drugDistributionList.vue @@ -23,6 +23,7 @@ + diff --git a/openhis-ui-vue3/src/views/triageandqueuemanage/api.js b/openhis-ui-vue3/src/views/triageandqueuemanage/api.js index 4c48b29e..2b20d4fe 100644 --- a/openhis-ui-vue3/src/views/triageandqueuemanage/api.js +++ b/openhis-ui-vue3/src/views/triageandqueuemanage/api.js @@ -24,4 +24,104 @@ export function updateCallNumberVoiceConfig(data) { method: 'put', data: data }) +} + +// 分诊排队管理相关API +// 获取智能候选池(已签到未入队) +export function getCandidatePool(params) { + return request({ + url: '/triage/queue/candidatePool', + method: 'get', + params: params, + skipErrorMsg: true // 跳过错误提示,由组件处理 + }).catch(() => { + // 返回一个 rejected promise,让组件可以捕获 + return Promise.reject(new Error('API未实现')) + }) +} + +// 获取智能队列(当前队列) +export function getQueueList(params) { + return request({ + url: '/triage/queue/list', + method: 'get', + params: params, + skipErrorMsg: true // 跳过错误提示,由组件处理 + }).catch(() => { + // 返回一个 rejected promise,让组件可以捕获 + return Promise.reject(new Error('API未实现')) + }) +} + +// 获取统计信息 +export function getQueueStatistics(params) { + return request({ + url: '/triage/queue/statistics', + method: 'get', + params: params, + skipErrorMsg: true // 跳过错误提示,由组件处理 + }).catch(() => { + // 返回一个 rejected promise,让组件可以捕获 + return Promise.reject(new Error('API未实现')) + }) +} + +// 将患者加入队列 +export function addToQueue(data) { + return request({ + url: '/triage/queue/add', + method: 'post', + data: data, + skipErrorMsg: true + }).catch(() => Promise.reject(new Error('API未实现'))) +} + +// 调整队列顺序 +export function adjustQueueOrder(data) { + return request({ + url: '/triage/queue/adjust', + method: 'put', + data: data, + skipErrorMsg: true + }).catch(() => Promise.reject(new Error('API未实现'))) +} + +// 叫号控制 +export function callPatient(data) { + return request({ + url: '/triage/queue/call', + method: 'post', + data: data, + skipErrorMsg: true + }).catch(() => Promise.reject(new Error('API未实现'))) +} + +// 跳过患者 +export function skipPatient(data) { + return request({ + url: '/triage/queue/skip', + method: 'post', + data: data, + skipErrorMsg: true + }).catch(() => Promise.reject(new Error('API未实现'))) +} + +// 完成叫号 +export function completeCall(data) { + return request({ + url: '/triage/queue/complete', + method: 'post', + data: data, + skipErrorMsg: true + }).catch(() => Promise.reject(new Error('API未实现'))) +} + +// 过号重排 +export function requeuePatient(data) { + return request({ + url: '/triage/queue/requeue', + method: 'post', + data: data, + skipErrorMsg: true + }).catch(() => Promise.reject(new Error('API未实现'))) } \ No newline at end of file diff --git a/迁移记录-DB变更记录/202512251200 add_table adm_doctor_schedule.sql b/迁移记录-DB变更记录/202512251200 add_table adm_doctor_schedule.sql new file mode 100644 index 00000000..175bfd84 --- /dev/null +++ b/迁移记录-DB变更记录/202512251200 add_table adm_doctor_schedule.sql @@ -0,0 +1,57 @@ +-- adm_doctor_schedule definition + +-- Drop table + +-- DROP TABLE adm_doctor_schedule; + +CREATE TABLE adm_doctor_schedule ( + id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + weekday VARCHAR(50) NULL, + time_period VARCHAR(50) NULL, + doctor VARCHAR(100) NULL, + clinic VARCHAR(100) NULL, + start_time TIME NULL, + end_time TIME NULL, + limit_number INTEGER NULL, + call_sign_record VARCHAR(500) NOT NULL DEFAULT '', + register_item VARCHAR(200) NULL, + register_fee INTEGER NULL, + diagnosis_item VARCHAR(200) NULL, + diagnosis_fee INTEGER NULL, + is_online BOOLEAN NULL, + is_stopped BOOLEAN NULL, + stop_reason VARCHAR(500) NULL, + dept_id INTEGER NULL, + create_time TIMESTAMPTZ(6) NULL, + update_time TIMESTAMPTZ(6) NULL +); + +COMMENT ON TABLE adm_doctor_schedule IS '医生排班表'; + +-- Column comments + +COMMENT ON COLUMN adm_doctor_schedule.id IS '主键ID(GENERATED ALWAYS)'; +COMMENT ON COLUMN adm_doctor_schedule.weekday IS '星期'; +COMMENT ON COLUMN adm_doctor_schedule.time_period IS '时段(上午/下午)'; +COMMENT ON COLUMN adm_doctor_schedule.doctor IS '医生姓名'; +COMMENT ON COLUMN adm_doctor_schedule.clinic IS '诊室'; +COMMENT ON COLUMN adm_doctor_schedule.start_time IS '开始时间'; +COMMENT ON COLUMN adm_doctor_schedule.end_time IS '结束时间'; +COMMENT ON COLUMN adm_doctor_schedule.limit_number IS '限号数量'; +COMMENT ON COLUMN adm_doctor_schedule.call_sign_record IS '号源记录'; +COMMENT ON COLUMN adm_doctor_schedule.register_item IS '挂号项目'; +COMMENT ON COLUMN adm_doctor_schedule.register_fee IS '挂号费'; +COMMENT ON COLUMN adm_doctor_schedule.diagnosis_item IS '诊查项目'; +COMMENT ON COLUMN adm_doctor_schedule.diagnosis_fee IS '诊疗费'; +COMMENT ON COLUMN adm_doctor_schedule.is_online IS '是否线上挂号'; +COMMENT ON COLUMN adm_doctor_schedule.is_stopped IS '是否停诊'; +COMMENT ON COLUMN adm_doctor_schedule.stop_reason IS '停诊原因'; +COMMENT ON COLUMN adm_doctor_schedule.dept_id IS '关联科室ID'; +COMMENT ON COLUMN adm_doctor_schedule.create_time IS '创建时间'; +COMMENT ON COLUMN adm_doctor_schedule.update_time IS '更新时间'; + +-- 插入迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202512251200 add_table adm_doctor_schedule', '1.0.0'); + +