📜  巴基斯坦的在线医生预约 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:39:23.142000             🧑  作者: Mango

巴基斯坦的在线医生预约 - TypeScript

本项目使用 TypeScript 编写,实现了一个在线预约医生的功能,针对巴基斯坦地区的医疗需求进行设计。

功能概述

用户可以在本网站上选择医生,预约时间段并填写个人信息,确认预约后即可获得预约成功的提示信息。

技术栈
  • 前端: TypeScript、React、Ant Design
  • 后端: TypeScript、Node.js、Express、MongoDB
系统架构

本项目采用前后端分离的架构模式。

  • 前端部分使用 React 框架实现页面的渲染和交互功能。
  • 后端部分使用 Node.js 框架 Express 实现 web 服务,使用 MongoDB 存储用户信息。
  • 前后端之间进行数据交互采用 JSON 格式。
数据库 Schema

本项目使用 MongoDB 数据库,并定义了以下 Schema。

// 用户信息
interface User {
  name: string; // 姓名
  age: number; // 年龄
  gender: string; // 性别
  phone: string; // 手机号码
  email: string; // 电子邮箱
}

// 医生信息
interface Doctor {
  name: string; // 姓名
  title: string; // 职称
  specialty: string; // 专长
  weekDay: string[]; // 工作日
  availableTime: number[]; // 可预约时间段,0 表示 9:00-10:00,1 表示 10:00-11:00,以此类推
}

// 预约信息
interface Appointment {
  user: User; // 用户信息
  doctor: Doctor; // 医生信息
  date: string; // 预约日期
  time: number; // 预约时间
  status: string; // 预约状态,未处理、待确认、已完成
}
API 接口设计
获取医生列表
GET /api/doctors

返回所有医生的列表。

[
  {
    "name": "张医生",
    "title": "主治医师",
    "specialty": "心脏病",
    "weekDay": ["周一", "周三", "周五"],
    "availableTime": [0, 1, 2, 3, 4]
  },
  {
    "name": "李医生",
    "title": "主任医师",
    "specialty": "眼科",
    "weekDay": ["周二", "周四", "周六"],
    "availableTime": [1, 3, 5]
  }
]
用户预约医生
POST /api/appointment

用户填写个人信息和预约信息,发起预约请求。

请求参数:

{
  "user": {
    "name": "张三",
    "age": 25,
    "gender": "男",
    "phone": "13000000000",
    "email": "zhangsan@example.com"
  },
  "doctor": {
    "name": "张医生",
    "title": "主治医师",
    "specialty": "心脏病",
    "weekDay": ["周一", "周三", "周五"],
    "availableTime": [0, 1, 2, 3, 4]
  },
  "date": "2022-04-01",
  "time": 0
}

说明:

  • user 字段为用户信息。
  • doctor 字段为医生信息。
  • date 字段为预约日期,格式为 yyyy-mm-dd
  • time 字段为预约时间段,0 表示 9:00-10:00,1 表示 10:00-11:00,以此类推。

返回值:

{
  "status": "success",
  "message": "预约成功!"
}
查询预约状态
GET /api/appointment/:id

根据预约 ID 查询预约状态。

请求参数:

  • id:预约 ID。

返回值:

{
  "id": "123456",
  "user": {
    "name": "张三",
    "age": 25,
    "gender": "男",
    "phone": "13000000000",
    "email": "zhangsan@example.com"
  },
  "doctor": {
    "name": "张医生",
    "title": "主治医师",
    "specialty": "心脏病",
    "weekDay": ["周一", "周三", "周五"],
    "availableTime": [0, 1, 2, 3, 4]
  },
  "date": "2022-04-01",
  "time": 0,
  "status": "待确认"
}

返回值说明:

  • id:预约 ID。
  • user:用户信息。
  • doctor:医生信息。
  • date:预约日期。
  • time:预约时间段,0 表示 9:00-10:00,1 表示 10:00-11:00,以此类推。
  • status:预约状态,未处理、待确认、已完成。
部署方式

本项目使用 Docker 容器进行部署。

  1. 安装 Docker 和 Docker Compose。

  2. 下载本项目源代码。

  3. 在项目根目录下,执行以下命令启动容器:

    $ docker-compose up -d
    
  4. 在浏览器中访问 http://localhost:3000 即可使用该系统。

总结

本项目使用 TypeScript 编写,具有强类型检查和面向对象编程的优点,同时采用了流行的 React、Node.js、Express、MongoDB 等技术栈,实现了一个在线预约医生的功能。在此基础上,可以进一步扩展功能,提高系统的实用性和可操作性。