HealthMesh:Go 语言医疗预约微服务系统
标签: 开源项目 / Go / 微服务 / gRPC / 医疗
原文: 微信公众号「码农先森」https://mp.weixin.qq.com/s/asLB4ux4sfTlOP4iXfJjPw
GitHub: https://github.com/goalwaybe/HealthMesh
核心亮点
基于 Go 语言和 gRPC 的分布式医疗预约平台,支持医生排班、患者预约、科室管理等核心功能,采用 API 网关 + 业务服务分离的微服务架构。
系统架构
┌─────────────┐ gRPC ┌─────────────┐
│ API Gateway │ ────────────→ │ Medi-Serve │
│ (统一入口) │ │ (核心服务) │
└─────────────┘ └─────────────┘
│
┌─────┴─────┐
│ Common │
│ (共享模块) │
└─────┴─────┘
│
┌─────┴─────┐
│ Proto │
│ (gRPC协议) │
└───────────┘
| 模块 | 路径 | 说明 |
|---|---|---|
| API Gateway | api-gateway/ | 统一入口,处理客户端请求的路由和转发 |
| Medi-Serve | medi-serve/ | 核心医疗服务,处理业务逻辑 |
| Common | common/ | 共享配置、数据模型和工具包 |
| Proto | proto/ | gRPC 协议定义文件 |
功能特性
核心业务模块
| 模块 | 功能 |
|---|---|
| 患者管理 | 患者注册、信息维护 |
| 医生管理 | 医生信息、资质管理 |
| 科室管理 | 医院科室分类与配置 |
| 排班管理 | 医生出诊时间安排 |
| 预约系统 | 在线预约、取消、改期 |
技术特性
- 微服务架构:API 网关 + 业务服务分离
- gRPC 通信:高性能服务间通信
- 统一配置管理:YAML 配置文件中心化管理
- 支付宝支付集成:支持在线支付功能
- 模型驱动开发:清晰的领域模型定义
技术栈
| 技术 | 说明 |
|---|---|
| 语言 | Go 1.19+ |
| 通信协议 | gRPC + Protocol Buffers |
| API 网关 | 自定义网关层 |
| 配置管理 | YAML |
| 支付集成 | 支付宝 SDK |
| 架构模式 | 微服务架构 |
数据模型
系统包含 5 个核心数据模型:
| 模型 | 文件 | 说明 |
|---|---|---|
Appointment | appointment.go | 预约模型 |
Department | department.go | 科室模型 |
Doctor | doctor.go | 医生模型 |
Patient | patient.go | 患者模型 |
Schedule | schedule.go | 排班模型 |
API 接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/doctors | 获取医生列表 |
| POST | /api/appointments | 创建预约 |
| GET | /api/departments | 获取科室列表 |
| PUT | /api/schedules/{id} | 更新排班 |
gRPC 服务名称:MediService,定义文件:proto/medi/medi.proto
快速开始
# 克隆项目
git clone https://github.com/goalwaybe/HealthMesh
cd medical-appointment-system
# 安装依赖
go mod download
# 启动医疗服务(端口 50051)
cd medi-serve/basic/cmd
go run main.go
# 启动 API 网关(端口 8080)
cd api-gateway/basic/cmd
go run main.go
写在最后
HealthMesh 是一个结构清晰的 Go 微服务入门项目:
- 架构标准:API 网关 + gRPC 服务通信,是微服务的经典模式
- 业务完整:覆盖患者、医生、科室、排班、预约全流程
- 代码规范:模型驱动、配置集中、分层清晰
- 支付集成:支付宝 SDK 接入,可直接用于生产参考
适合 Go 语言学习者入门微服务架构,也适合作为医疗类项目的脚手架。
本文整理自微信公众号「码农先森」,原文链接:https://mp.weixin.qq.com/s/asLB4ux4sfTlOP4iXfJjPw
GitHub 项目地址:https://github.com/goalwaybe/HealthMesh