Skip to content

🧬임서연🩺임채륜💉윤지영💊박상현🩹연건창🌡임광택

Notifications You must be signed in to change notification settings

beyond-sw-camp/be10-fin-article1-medihub

Repository files navigation

MediHub

👩🏻‍💻 제1조1항 🧑🏻‍💻

박상현

연건창

윤지영

임광택

임서연

임채륜


🛠️ 기술 스택

Backend



Frontend


Database


외부 API

CI/CD


Tool


📜 목차

  1. 프로젝트 개요
  2. 주요 기능
  3. 기대 효과
  4. 프로젝트 설계 문서
  5. 백엔드 설계 및 구축
  6. 프론트엔드 설계 및 구축
  7. 시스템 통합
  8. 회고


1. 프로젝트 개요

MediHub

MediHub는 병원 내 의료진과 의료 관계자들이 효율적으로 협업하고 지식 공유 및 축적을 통해 의료 서비스의 품질을 향상시키기 위한 지식 관리 시스템(KMS)입니다.

병원의 의료 수준은 개개인의 지식과 다수 의료진의 협업으로 결정되므로 지식의 효율적인 관리와 빠른 업데이트가 필수적입니다. 그러므로 병원 내에서 지식은 암묵적 지식에서 명시적 지식으로 변환되어야 합니다. 이를 통해 의료진과 직원들이 각자 보유한 업무 경험, 진료 지침(CP), 의료 논문 등을 조직적으로 공유하고 축적할 수 있습니다.

이를 위해 MediHub는 병원 내 정보의 일원화를 추진하고 실시간 정보 공유와 협업을 촉진하는 다양한 기능을 제공합니다.


2. 주요 기능

의료진 및 병원 직원들이 의료 케이스, CP 등 분산된 데이터를 검색 엔진을 통해 한 곳에서 통합적•효율적으로 조회할 수 있도록 지원합니다.
또한 자신의 의견을 자유롭게 개진할 수 있는 게시판과 실시간 채팅 기능은 직원 간 협업과 커뮤니케이션을 지원하여 사용자 편의성을 극대화합니다.

1. 지식 관리

  • CP(Clinical Pathway): 병원 내 치료 매뉴얼 문서(CP)를 병원 내 관계자들이 쉽게 접근하고 수정을 건의할 수 있는 기능 제공
  • Case Sharing(의료 케이스 공유): 희귀병 치료 등 다양한 의료 사례 공유 및 논의를 통한 의료 사고 예방 및 치료 성과 개선
  • ChatGPT + PubMed(논문): 최신 논문과 연구 결과를 효율적으로 검색할 수 있는 기능을 통해 의료진이 필요한 정보를 빠르게 찾을 수 있도록 지원
  • Medical Life(부서 게시판): 부서별 게시판을 통해 각 부서의 전문성을 바탕으로 정보 공유 및 효율적인 업무 처리 지원. 다양한 직군 간의 정보 교류를 통해 지식의 지속적인 축적과 확장 촉진

2. 정보 검색 및 접근

  • Elasticsearch: 대량의 의료 데이터를 신속하고 효율적으로 검색하고 분석할 수 있도록 지원
  • Newsapi: 최신 의료 뉴스를 검색하고 통합하여 관계자들이 정보에 쉽게 접근할 수 있도록 지원

3. 협업 및 커뮤니케이션

  • 익명 게시판(Anonymous Board) 병원 내 모든 관계자가 개인적인 의견이나 질문을 자유롭게 개진하고 정보를 공유할 수 있는 환경 제공
  • MediTalk(메신저): 응급 상황이나 신속한 의사 결정이 필요한 경우 직원 간 실시간으로 소통할 수 있는 메신저 기능 제공
  • 알림: 팔로우 한 의료진이 새로운 CP나 Case Sharing 등을 작성했을 때 실시간으로 알림 메시지를 전송하여 최신 정보를 신속하게 공유하고 협업을 촉진

4. 사용자 지원 및 자동화

  • ChatBot: 질문과 답변을 실시간으로 처리할 수 있어 정보 검색의 편의성 향상

3. 기대 효과

  • 의료 서비스 품질 향상: 업무 효율성•생산성•대응 능력 향상 등을 통한 성과 도출 및 의료 환경의 발전에 긍정적인 효과 기대
  • 환자의 만족도 제고: 최신 연구 결과와 치료 방법을 신속하게 공유함으로써 수준 높은 의료 서비스 제공하여 환자의 만족도 제고
  • 지식의 지속적인 축적과 확장: 병원 내 관계자들의 지식 공유성과 활용성을 강화하여 문제 해결 능력의 제고와 의사 결정 수준의 증진
  • 병원 내 협업 문화 확산

4. 프로젝트 설계 문서

4-1. 프로젝트 기획서

프로젝트 기획서

4-2. WBS

WBS

4-3. DDD 설계

DDD

4-4. 요구사항 명세서

요구사항명세서

4-5. Database 설계

ERD

MongoDB Schema

chat.messages Collection

// chatMessageSchema.js

const mongoose = require('mongoose');

// 첨부파일(Attachment) 서브문서 스키마 정의
const attachmentSchema = new mongoose.Schema({
  originName: { type: String, required: false }, // 원본 파일 이름
  url: { type: String, required: false }        // S3 URL
});

// ChatMessage 스키마 정의
const chatMessageSchema = new mongoose.Schema({
  chatroomSeq: { type: Number, required: true },       // 채팅방 식별자
  senderUserSeq: { type: Number, required: true },     // 발신자 사용자 식별자
  type: { type: String, required: true },              // 메시지 타입 (예: text, file, image)
  message: { type: String, required: false },          // 메시지 내용
  createdAt: { type: Date, default: Date.now },        // 메시지 생성 시간 (기본값 현재 시간)
  isDeleted: { type: Boolean, default: false },        // 메시지 삭제 여부
  attachment: { type: attachmentSchema, required: false } // 첨부파일 서브문서
});

// 복합 인덱스 설정 (chatroomSeq, createdAt, isDeleted 기준으로 쿼리 최적화)
chatMessageSchema.index(
  { chatroomSeq: 1, createdAt: 1, isDeleted: 1 },
  { name: "chatroom_createdAt_isDeleted_idx" }
);

// 모델 내보내기
module.exports = mongoose.model('ChatMessage', chatMessageSchema);

4-6. 화면 설계서

화면 설계서 (Figma)

4-7. 시스템 아키텍처

systemArchitecture


5. 백엔드 설계 및 구축

5-1. 프로그램 사양서

구성요소 사양
CloudFront(Frontend) Vue.js, Vite
EKS t3.large(2 vCPU, 8GB RAM), Nginx, Spring Boot
RDS db.t3.medium(2 vCPU, 4GB RAM), MariaDB, MongoDB, redis
S3 5GB 표준 스토리지, 총 2개의 버킷(프론트엔드 프로젝트, 업로드 파일)

5-2. 단위 테스트 결과서

단위 테스트 결과서 (Sheet)


6. 프론트엔드 설계 및 구축

6-1. 기능 수행 테스트 결과

6-1-1. User (사용자)

내 정보 수정

내정보수정

팔로우

팔로우

나의 Case Sharing

MyCaseSharing

나의 Medical Life

MyMedicalLife

나의 익명게시판

MyAnonymousBoard }

나의 CP

MyCP

나의 논문

MyJournal


6-1-2. Admin (관리자)

로그인

Login

회원 조회 및 회원 등록

회원조회및등록

부서 등록

부서등록

파트 관리

파트관리

직급관리

직급관리

회원 정보 수정

회원정보수정

비밀번호 초기화

비밀번호초기화


6-1-3. Case Sharing (케이스 공유)

케이스 공유 작성 및 조회

케이스공유작성및조회

케이스 공유 새 버전 작성

케이스공유새버전작성

케이스 공유 댓글 작성

케이스공유댓글작성

케이스 공유 댓글 수정

케이스공유댓글수정

케이스 공유 알림 댓글 조회

케이스공유알림


6-1-4. CP (표준 진료 지침)

CP 목록 조회

CPList

CP 조회 (검색 카테고리 사용)

CPListByCategory

CP 상세 조회

CPDetail

CP 북마크 목록

CPBookmark


CP 의견 마커 표시

CPOpinion

CP 의견 생성

CP의견생성

CP 의견 목록 조회

CP 의견 목록 조회

CP 의견 상세 조회

CP 의견 상세 조회

CP 의견 수정

CP의견수정

CP 의견 삭제

CP의견삭제

CP 의견 투표 및 결과 확인

CP 의견 투표 및 결과 확인

북마크 (CP 상세기보 내부)

CP북마크

CP 다운로드

CP 다운로드


CP 검색 카테고리 생성

CP 검색 카테고리 수정

CP 검색 카테고리 삭제

CP 검색 카테고리 데이터 생성

CP 검색 카테고리 데이터 수정

CP 검색 카테고리 데이터 삭제


6-1-5. 논문

논문

Journal


6-1-6. Elasticsearch (엘라스틱서치)

추천 검색어

추천검색어

통합 검색

통합검색

Case Sharing 검색

케이스공유

Medical Life 검색

메디컬라이프

Anonymous Board 검색

익명게시판


6-1-7. Chatbot (챗봇)

챗봇

Chatbot


6-1-8. MediTalk (채팅)

조직도 조회 및 검색

Organization

1:1 채팅방 생성

단체 채팅방 생성

Chatroom

채팅방 목록 조회 및 검색

ChatroomList

채팅방 이름 수정, 대화상대 추가

OneToOneChatroom

메시지 및 첨부파일 전송

ChatMessage

메시지 삭제

DeleteMessage

채팅방 나가기

LeaveChatroom

파일함 조회 및 검색

FileBox


6-1-9. MedicalLife (부서별 게시판)

Medical Life

MedicalLife

Medical Life 댓글

MedicalLifeComment


6-1-10. Anonymous Board (익명 자유 게시판)

전체 조회

전체조회

상세조회-1

상세조회1

상세조회-2

상세조회2

게시글 작성

게시글작성

게시글 수정

게시글수정

게시글 삭제

게시글삭제

댓글 작성

댓글작성

댓글 수정

댓글수정

댓글 삭제

댓글삭제

검색

검색

좋아요, 북마크 -1

좋아요북마크1

좋아요, 북마크 -2

좋아요북마크2

Hot Contents

HotContents


7. 시스템 통합

7-1. CI/CD 계획서

CICDBackend CICDFront

7-2. CI/CD 결과서

7-2-1. Backend CI/CD 결과서

BackendCI BackendCD

7-2-2. Frontend CI/CD 결과서

FrontendCI FrontendCD

7-3. 통합 테스트 결과서

통합 테스트 결과서


8. 회고

팀원 회고 내용
연견창 이번 마지막 프로젝트를 통해 백엔드와 프론트엔드를 아우르는 다양한 기술을 배우고, 실습하면서, 팀워크와 문제 해결 능력을 크게 향상시켰다. 더 나은 결과물을 만들기 위해 노력하면서, 더 능숙하고 효율적인 코드를 작성할 수 있도록 계속 발전하고자 한다.
윤지영 채팅이라는 기능을 처음 해봤는데, 너무 어려웠지만 끝까지 해낼 수 있어서 실력 향상에 도움이 되었던 것 같다. 생각 보다 시간이 오래 걸렸지만 다음에 다시 한다면 지금보다 발전할 수 있을 것 같다. 어려운 부분은 팀원들에게 도움을 청하고, 팀원들과 공통 코드를 나눌 수 있어서 협업의 중요성도 알 수 있었다.
박상현 새로운 기능을 해볼 수 있어서 좋았고, 어려웠지만 팀원들의 도움으로 끝까지 프로젝트를 마무리 할 수 있었다.
임광택 MediHub 프로젝트를 진행하며 처음으로 설문조사와 인터뷰를 통해 요구사항을 분석하는 과정을 경험했습니다. 이번 경험을 통해 여러 가지 중요한 통찰을 얻었고, 특히 문제 관계자와의 직접적인 소통이 얼마나 중요한지를 깨달았습니다. 단순히 문서화된 요구사항뿐만 아니라, 현장에서의 실질적인 문제와 기대를 이해할 수 있었습니다. 이 과정에서 관계자들이 언급한 문제들은 제가 처음에 고려하지 않았던 부분이었고, 예상치 못한 문제를 발견하는 데 큰 역할을 했습니다. 앞으로도 이번 경험을 바탕으로 지속적으로 관계자와의 소통을 강화하고, 그들의 피드백을 적극적으로 반영하여 프로젝트의 방향성을 조정할 것입니다. 또한, 다양한 분석 도구와 기법을 활용하여 요구사항을 보다 체계적으로 정리하고, 변화하는 요구에 유연하게 대응할 수 있도록 하겠습니다. 이러한 경험은 제 개발 역량을 더욱 향상시키고, 팀의 성공적인 프로젝트 진행에 기여할 수 있는 밑거름이 될 것입니다.
임채륜 Docker-Compose로 개발환경을 맞춰서 팀과의 협업 속도가 증진되었고, 쿠버네티스에서로의 마이그레이션이 빠르고 편해 좋은 성과를 얻을 수 있었다.
임서연 도전의 연속이었던 프로젝트였던 만큼, 결과에 대한 보람도 크게 느꼈고 개발에 대한 자신감도 생겼다. 2개월간 함께해준 팀원분들에게 감사하다.

About

🧬임서연🩺임채륜💉윤지영💊박상현🩹연건창🌡임광택

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published