Files
hospital-front/README.md
T

5.4 KiB
Raw Blame History

Hospital Front — 医院前置机程序

基于 Java 17 + Solon 4.0.6 的医院前置机对接系统

重构源:hospitalmiddleSpringBoot 2.7 + MyBatis-Plus + Oracle/SqlServer


1. 项目简介

体检预约系统通过本程序与多家医院 HIS 系统对接,实现:

  • 体检预约的提交、取消
  • 体检项目 / 组合查询、体检状态查询
  • 体检结果 / 结论 / 建议的获取
  • 单位信息同步

支持医院(拼音编码,由 hospital.active 指定激活):

编码 医院名 数据库 Adapter
xinglongyuan 兴隆园医院 Oracle XingLongYuanAdapter
qingyang 庆阳医院 Oracle QingyangAdapter
ningxia 宁夏宝石花医院 SqlServer NingxiaAdapter
yanan 延安医院 SqlServer YananAdapter
jinghe 泾河医院 Oracle JingheAdapter

医院通过 HospitalAdapter 接口 + HospitalRouter 路由(策略模式),方言基类:

  • BsmAdapterBaseOracle 方言(bsm Mapper
  • NxAdapterBaseSqlServer 方言(nx Mapper

2. 技术栈

  • 语言Java 17
  • 框架Solon 4.0.6
  • ORMMyBatis-Plus 3.5.9
  • 数据库Oracleojdbc11 + orai18nZHS16GBK 字符集支持)/ SqlServer(直连医院库,只读对接,不可修改表结构)
  • 日志Logback(异步 appenderinfo.log / error.log 分文件滚动)
  • 构建Maven 3.9+

3. 项目结构

hospital-front/
├── pom.xml
├── README.md
├── conf/                                    # 各医院外置配置(含生产凭据,不入 Git)
└── src/main/
    ├── java/com/hospital/front/
    │   ├── HospitalFrontApp.java            # 启动类
    │   ├── adapter/                         # 医院适配器(策略模式 + 方言基类)
    │   ├── api/                             # HTTP 接口(order / admin
    │   ├── service/                         # 业务服务层
    │   ├── mapper/bsm|nx/                   # 数据访问层(按方言分包)
    │   ├── vo/ dto/                         # 值对象 / 传输对象
    │   ├── infra/                           # 基础设施(过滤器、异常处理、扫描器)
    │   └── task/                            # 定时任务(Uptime-Kuma 上报)
    └── resources/
        ├── app.yml                          # 主配置(框架级 + 公共配置)
        ├── logback.xml                      # 日志配置
        ├── tls10.security                   # 延安专用 JDK 安全策略(放开 TLSv1/弱算法)
        └── mapper/                          # MyBatis XML

4. 构建

mvn clean package -DskipTests
# 产出:target/hospital-front-1.0.0.jar

5. 启动(开发环境)

# 方式一:默认加载 classpath 的 app.ymlhospital.active 默认 jinghe
java -jar target/hospital-front-1.0.0.jar

数据源等医院差异配置在 app-{医院}.yml 中,开发期可用 --solon.config.add 外挂。


6. 生产部署注意事项(重要)

6.1 外挂医院配置

生产环境配置文件外置于 jar 同级或 conf/ 目录,通过 --solon.config.add 追加加载, 修改数据库地址 / 鉴权等无需重新打包:

java -jar hospital-front.jar --solon.config.add=conf/app-yanan.yml --server.port=8003
  • 配置模板见仓库 conf/ 目录(app-jinghe / app-ningxia / app-yanan
  • --server.port 覆盖默认端口 8082
  • 外挂文件中必须指定 hospital.activehm.typebsm / nx / ya),并定义 solon.dataSources.db1

6.2 延安医院:TLS 1.0 特殊处理

延安 SqlServer 为老版本(仅支持 TLS 1.0 / 弱加密算法),JDK 17 默认禁用, 必须外挂 JDK 安全属性文件启动,否则连接报 handshake failure / No appropriate protocol

java -Dfile.encoding=UTF-8 -Djava.security.properties=tls10.security -jar hospital-front.jar --solon.config.add=conf/app-yanan.yml --server.port=8003
  • tls10.security 已打包在 jar 内(src/main/resources/),上述命令按 classpath 加载,无需单独分发文件;也可用文件系统绝对路径覆盖
  • -Dfile.encoding=UTF-8Windows 服务器默认 GBK,防止日志与接口中文乱码
  • 其余医院不要tls10.security(会全局放开弱算法,降低安全基线)

6.3 安全配置(生产必读)

app.yml 中以下配置生产环境必须核对(可在外挂配置中覆盖):

配置 说明
order.basic /order/** 的 HTTP Basic 认证(user:password),生产必须配置
admin.token /api/admin/**X-Admin-TokenAgent 环回调用
security.ipWhitelistEnabled / ipWhitelist IP 白名单(支持精确 IP / 通配段 / CIDR),端口暴露公网时务必开启
security.trustProxy nginx 反代部署时开启,从 X-Forwarded-For 取真实客户端 IP

6.4 日志

  • 日志目录默认 ./log-Dlog.path=xxx 可覆盖)
  • info.logINFO 及以上)/ error.log(仅 ERROR)分文件,50MB 按天滚动,保留 30 天
  • pattern 不含 %file:%lineAsyncAppender 下取不到调用者信息,会打成 ?:?

7. 文档

完整设计文档位于:E:\data\ob_data\myob\11 健康长庆\医院前置机重构\