πŸš€ MediLink: Full-Stack Healthcare Appointment & Doctor-Patient Connection System

#fullstack#healthtech#react#nodejs#mongodb

TL;DR

MediLink β€” это ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для управлСния мСдицинскими записями, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ взаимодСйствиС ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Ρ€Π°Ρ‡Π΅ΠΉ. БистСма Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Π»ΠΎΠ³ΠΈΠΊΡƒ бронирования, ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΠΈ ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный интСрфСйс, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ идСальной ΠΊΠ°ΠΊ для практичСского использования, Ρ‚Π°ΠΊ ΠΈ для дСмонстрации Π½Π°Π²Ρ‹ΠΊΠΎΠ² full-stack Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ соврСмСнном ΠΌΠΈΡ€Π΅ здравоохранСния эффСктивноС взаимодСйствиС ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Ρ€Π°Ρ‡Π΅ΠΉ ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. MediLink Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту Π·Π°Π΄Π°Ρ‡Ρƒ, прСдоставляя ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ бСзопасный инструмСнт для бронирования записСй, управлСния расписаниСм ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ дСмонстрируСт соврСмСнныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½ΠΎ ΠΈ слуТит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ процСссы Π² Π·Π΄Ρ€Π°Π²ΠΎΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ.

Основная Ρ‡Π°ΡΡ‚ΡŒ

ВСхнологичСский стСк

MediLink построСн Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… тСхнологиях:

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

АутСнтификация ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Ρ€Π°Ρ‡Π΅ΠΉ

БистСма обСспСчиваСт бСзопасный Π²Ρ…ΠΎΠ΄ с использованиСм JWT. Π ΠΎΠ»Π΅Π²ΠΎΠΉ доступ позволяСт ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΈ Π²Ρ€Π°Ρ‡Π°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с интСрфСйсом Π² зависимости ΠΎΡ‚ ΠΈΡ… ΠΏΡ€Π°Π².

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ middleware для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€ΠΎΠ»ΠΈ
const checkRole = (role) => (req, res, next) => {
  if (req.user.role === role) {
    next();
  } else {
    res.status(403).json({ message: "Access denied" });
  }
};

Π›ΠΎΠ³ΠΈΠΊΠ° бронирования ΠΈ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ

MediLink прСдоставляСт ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный интСрфСйс для бронирования записСй. Π’Ρ€Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ своим расписаниСм, Π° ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Ρ‹ β€” Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ врСмя.

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для создания записи
const createAppointment = async (req, res) => {
  const { patientId, doctorId, date } = req.body;
  try {
    const appointment = new Appointment({ patientId, doctorId, date });
    await appointment.save();
    res.status(201).json(appointment);
  } catch (error) {
    res.status(500).json({ message: "Error creating appointment" });
  }
};

ВзаимодСйствиС ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Ρ€Π°Ρ‡Π΅ΠΉ

БистСма позволяСт ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π²Ρ€Π°Ρ‡Π΅ΠΉ, ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ своими записями.

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для получСния профиля Π²Ρ€Π°Ρ‡Π°
const getDoctorProfile = async (req, res) => {
  const { doctorId } = req.params;
  try {
    const doctor = await Doctor.findById(doctorId).populate("appointments");
    res.status(200).json(doctor);
  } catch (error) {
    res.status(500).json({ message: "Error fetching doctor profile" });
  }
};

АрхитСктура прилоТСния

MediLink ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ REST API для взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΎΠΌ ΠΈ бэкСндом. Π­Ρ‚ΠΎ обСспСчиваСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ систСмы.

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° для получСния всСх записСй
app.get("/api/appointments", async (req, res) => {
  try {
    const appointments = await Appointment.find();
    res.status(200).json(appointments);
  } catch (error) {
    res.status(500).json({ message: "Error fetching appointments" });
  }
});

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

MediLink ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… мСдицинских учрСТдСниях для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ процСссов записи ΠΈ взаимодСйствия ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ² с Π²Ρ€Π°Ρ‡Π°ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ являСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ для дСмонстрации Π½Π°Π²Ρ‹ΠΊΠΎΠ² full-stack Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π±ΠΎΡ‚Ρƒ с REST API, Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ состояниСм.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

MediLink β€” это ΠΌΠΎΡ‰Π½ΠΎΠ΅ ΠΈ соврСмСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для управлСния мСдицинскими записями ΠΈ взаимодСйствия ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ² с Π²Ρ€Π°Ρ‡Π°ΠΌΠΈ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ дСмонстрируСт Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ full-stack Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΌΠΈ функциями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ‚Π΅Π»Π΅Π·Π΄Ρ€Π°Π²ΠΎΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, увСдомлСния ΠΈΠ»ΠΈ интСграция с ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹ΠΌΠΈ систСмами. Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для своСго ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСссы Π² Π·Π΄Ρ€Π°Π²ΠΎΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ, MediLink β€” это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€.


Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://dev.to/reactjsguru/medilink-full-stack-healthcare-appointment-doctor-patient-connection-system-1ak5