231 lines
5.0 KiB
TypeScript
231 lines
5.0 KiB
TypeScript
import {DashboardPageType, Departments, DoctorGrade, UserPermissionLevel, UserType} from "./hms_enums";
|
|
|
|
export const SORT_SYMBOLS = {
|
|
asc: "▲",
|
|
desc: "▼",
|
|
}
|
|
|
|
export const WardTypes = {
|
|
"GENERAL": "General Ward", // 普通病房
|
|
"ICU": "Intensive Care Unit", // 重症监护室
|
|
"ISOLATION": "Isolation", // 隔离病房
|
|
"MATERNITY": "Maternity", // 产科病房
|
|
"PEDIATRIC": "Pediatric" // 儿科病房
|
|
}
|
|
|
|
export interface OutletContextType {
|
|
loginUserInfo: LoginUserInfo | null;
|
|
refreshMyInfo: () => void;
|
|
changePage: (pageType: DashboardPageType, navigateTo?: string) => void;
|
|
}
|
|
|
|
interface IKeyString {
|
|
[key: string]: any;
|
|
}
|
|
|
|
export interface BaseRetData extends IKeyString {
|
|
success: boolean,
|
|
message: string,
|
|
data?: any
|
|
}
|
|
|
|
export interface BaseUserData extends IKeyString {
|
|
birth_date: string,
|
|
email: string,
|
|
gender: string,
|
|
id: number,
|
|
name: string,
|
|
phone: string,
|
|
title: string,
|
|
}
|
|
|
|
export interface PatientData extends BaseUserData {
|
|
address: string
|
|
postcode: string
|
|
}
|
|
|
|
export interface DoctorData extends BaseUserData {
|
|
grade: DoctorGrade,
|
|
is_resigned: boolean
|
|
}
|
|
|
|
export interface DoctorTeam extends IKeyString {
|
|
consultant_id: number,
|
|
department: Departments,
|
|
id: number,
|
|
is_admin_team: boolean,
|
|
}
|
|
|
|
export interface LoginUserInfo extends IKeyString {
|
|
user_type: UserType,
|
|
user_permission: UserPermissionLevel,
|
|
patient_data?: PatientData
|
|
doctor_data?: DoctorDataWithPermission
|
|
doctor_teams?: DoctorTeamInfo[]
|
|
}
|
|
|
|
export interface Login extends BaseRetData {
|
|
data?: {
|
|
token: string,
|
|
expire_at: number,
|
|
user_info: LoginUserInfo
|
|
}
|
|
}
|
|
|
|
export interface UserInfo extends BaseRetData {
|
|
data?: LoginUserInfo
|
|
}
|
|
|
|
export interface WardInfo extends IKeyString {
|
|
current_occupancy: number,
|
|
id: number,
|
|
name: string,
|
|
total_capacity: number,
|
|
type: keyof typeof WardTypes,
|
|
}
|
|
|
|
export interface WardListInfo extends IKeyString {
|
|
wards: WardInfo[],
|
|
total_pages: number
|
|
}
|
|
|
|
export interface GetWardList extends BaseRetData {
|
|
data: WardListInfo
|
|
}
|
|
|
|
export interface GetWardPatients extends BaseRetData {
|
|
data: {
|
|
patients: PatientData[],
|
|
total_pages: number,
|
|
ward: WardInfo
|
|
}
|
|
}
|
|
|
|
export interface DoctorDataWithPermission extends DoctorData {
|
|
is_admin: boolean
|
|
}
|
|
|
|
export interface DoctorListInfo extends IKeyString {
|
|
doctors: DoctorDataWithPermission[],
|
|
total_pages: number
|
|
}
|
|
|
|
export interface GetDoctorList extends BaseRetData {
|
|
data: DoctorListInfo
|
|
}
|
|
|
|
export interface UserLoginNameAndPwd extends BaseRetData {
|
|
data?: {
|
|
username: string,
|
|
password: string
|
|
}
|
|
}
|
|
|
|
export interface PatientDataWithWard extends PatientData {
|
|
ward?: WardInfo
|
|
}
|
|
|
|
export interface PatientDataWithWardAndAdmission extends PatientDataWithWard {
|
|
admission?: AdmissionInfo
|
|
}
|
|
|
|
export interface GetPatientList extends BaseRetData {
|
|
data: {
|
|
patients: PatientDataWithWardAndAdmission[],
|
|
total_pages: number
|
|
}
|
|
}
|
|
|
|
export interface DoctorTeamInfo extends DoctorTeam {
|
|
members: DoctorData[]
|
|
}
|
|
|
|
export interface GetTeamList extends BaseRetData {
|
|
data: {
|
|
teams: DoctorTeamInfo[],
|
|
total_pages: number
|
|
}
|
|
}
|
|
|
|
export interface GetTeamInfo extends BaseRetData {
|
|
data: {
|
|
members: DoctorData[],
|
|
team: DoctorTeamInfo,
|
|
}
|
|
}
|
|
|
|
export interface PatientBookingInfo extends IKeyString {
|
|
id: number,
|
|
patient_id: number,
|
|
category: string,
|
|
appointment_time: number, // timestamp
|
|
description: string,
|
|
approved: boolean,
|
|
feedback: string | null,
|
|
assigned_team: number | null,
|
|
admitted: boolean,
|
|
discharged: boolean,
|
|
}
|
|
|
|
export interface AdmissionInfo extends IKeyString {
|
|
admitted_at: number, // timestamp
|
|
appointment_id: number,
|
|
consultant_id: number,
|
|
id: number,
|
|
patient_id: number,
|
|
team_id: number,
|
|
ward_id: number
|
|
}
|
|
|
|
export interface PatientBookingInfoWithAdmission extends PatientBookingInfo {
|
|
admission: AdmissionInfo
|
|
}
|
|
|
|
export interface GetPatientBookingList extends BaseRetData {
|
|
data: {
|
|
appointments: PatientBookingInfo[],
|
|
total_pages: number
|
|
}
|
|
}
|
|
|
|
export interface GetAppointments extends BaseRetData {
|
|
data: {
|
|
appointments: PatientBookingInfo[],
|
|
"total_pages": number
|
|
}
|
|
}
|
|
|
|
export interface GetDoctorAppointments extends BaseRetData {
|
|
data: {
|
|
appointments: PatientBookingInfoWithAdmission[]
|
|
}
|
|
}
|
|
|
|
export interface TreatmentInfo extends IKeyString {
|
|
appointment_id: number,
|
|
doctor_id: number,
|
|
id: number,
|
|
patient_id: number,
|
|
treat_info: string,
|
|
treated_at: number, // timestamp
|
|
}
|
|
|
|
export interface TreatmentInfoWithDoctorInfo extends TreatmentInfo {
|
|
doctor_info: DoctorData,
|
|
team: DoctorTeamInfo
|
|
}
|
|
|
|
export interface GetTreatmentRecords extends BaseRetData {
|
|
data: {
|
|
// patient: PatientData,
|
|
treatments: TreatmentInfoWithDoctorInfo[],
|
|
total_pages: number
|
|
}
|
|
}
|
|
|
|
export interface GetMyWard extends BaseRetData {
|
|
data: {
|
|
ward?: WardInfo
|
|
}
|
|
}
|