박상현 |
연건창 |
윤지영 |
임광택 |
임서연 |
임채륜 |
MediHub는 병원 내 의료진과 의료 관계자들이 효율적으로 협업하고 지식 공유 및 축적을 통해 의료 서비스의 품질을 향상시키기 위한 지식 관리 시스템(KMS)입니다.
병원의 의료 수준은 개개인의 지식과 다수 의료진의 협업으로 결정되므로 지식의 효율적인 관리와 빠른 업데이트가 필수적입니다. 그러므로 병원 내에서 지식은 암묵적 지식에서 명시적 지식으로 변환되어야 합니다. 이를 통해 의료진과 직원들이 각자 보유한 업무 경험, 진료 지침(CP), 의료 논문 등을 조직적으로 공유하고 축적할 수 있습니다.
이를 위해 MediHub는 병원 내 정보의 일원화를 추진하고 실시간 정보 공유와 협업을 촉진하는 다양한 기능을 제공합니다.
의료진 및 병원 직원들이 의료 케이스, CP 등 분산된 데이터를 검색 엔진을 통해 한 곳에서 통합적•효율적으로 조회할 수 있도록 지원합니다.
또한 자신의 의견을 자유롭게 개진할 수 있는 게시판과 실시간 채팅 기능은 직원 간 협업과 커뮤니케이션을 지원하여 사용자 편의성을 극대화합니다.
- CP(Clinical Pathway): 병원 내 치료 매뉴얼 문서(CP)를 병원 내 관계자들이 쉽게 접근하고 수정을 건의할 수 있는 기능 제공
- Case Sharing(의료 케이스 공유): 희귀병 치료 등 다양한 의료 사례 공유 및 논의를 통한 의료 사고 예방 및 치료 성과 개선
- ChatGPT + PubMed(논문): 최신 논문과 연구 결과를 효율적으로 검색할 수 있는 기능을 통해 의료진이 필요한 정보를 빠르게 찾을 수 있도록 지원
- Medical Life(부서 게시판): 부서별 게시판을 통해 각 부서의 전문성을 바탕으로 정보 공유 및 효율적인 업무 처리 지원. 다양한 직군 간의 정보 교류를 통해 지식의 지속적인 축적과 확장 촉진
- Elasticsearch: 대량의 의료 데이터를 신속하고 효율적으로 검색하고 분석할 수 있도록 지원
- Newsapi: 최신 의료 뉴스를 검색하고 통합하여 관계자들이 정보에 쉽게 접근할 수 있도록 지원
- 익명 게시판(Anonymous Board) 병원 내 모든 관계자가 개인적인 의견이나 질문을 자유롭게 개진하고 정보를 공유할 수 있는 환경 제공
- MediTalk(메신저): 응급 상황이나 신속한 의사 결정이 필요한 경우 직원 간 실시간으로 소통할 수 있는 메신저 기능 제공
- 알림: 팔로우 한 의료진이 새로운 CP나 Case Sharing 등을 작성했을 때 실시간으로 알림 메시지를 전송하여 최신 정보를 신속하게 공유하고 협업을 촉진
- ChatBot: 질문과 답변을 실시간으로 처리할 수 있어 정보 검색의 편의성 향상
- 의료 서비스 품질 향상: 업무 효율성•생산성•대응 능력 향상 등을 통한 성과 도출 및 의료 환경의 발전에 긍정적인 효과 기대
- 환자의 만족도 제고: 최신 연구 결과와 치료 방법을 신속하게 공유함으로써 수준 높은 의료 서비스 제공하여 환자의 만족도 제고
- 지식의 지속적인 축적과 확장: 병원 내 관계자들의 지식 공유성과 활용성을 강화하여 문제 해결 능력의 제고와 의사 결정 수준의 증진
- 병원 내 협업 문화 확산
MongoDB Schema
// 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);
구성요소 | 사양 |
---|---|
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개의 버킷(프론트엔드 프로젝트, 업로드 파일) |
팀원 | 회고 내용 |
---|---|
연견창 | 이번 마지막 프로젝트를 통해 백엔드와 프론트엔드를 아우르는 다양한 기술을 배우고, 실습하면서, 팀워크와 문제 해결 능력을 크게 향상시켰다. 더 나은 결과물을 만들기 위해 노력하면서, 더 능숙하고 효율적인 코드를 작성할 수 있도록 계속 발전하고자 한다. |
윤지영 | 채팅이라는 기능을 처음 해봤는데, 너무 어려웠지만 끝까지 해낼 수 있어서 실력 향상에 도움이 되었던 것 같다. 생각 보다 시간이 오래 걸렸지만 다음에 다시 한다면 지금보다 발전할 수 있을 것 같다. 어려운 부분은 팀원들에게 도움을 청하고, 팀원들과 공통 코드를 나눌 수 있어서 협업의 중요성도 알 수 있었다. |
박상현 | 새로운 기능을 해볼 수 있어서 좋았고, 어려웠지만 팀원들의 도움으로 끝까지 프로젝트를 마무리 할 수 있었다. |
임광택 | MediHub 프로젝트를 진행하며 처음으로 설문조사와 인터뷰를 통해 요구사항을 분석하는 과정을 경험했습니다. 이번 경험을 통해 여러 가지 중요한 통찰을 얻었고, 특히 문제 관계자와의 직접적인 소통이 얼마나 중요한지를 깨달았습니다. 단순히 문서화된 요구사항뿐만 아니라, 현장에서의 실질적인 문제와 기대를 이해할 수 있었습니다. 이 과정에서 관계자들이 언급한 문제들은 제가 처음에 고려하지 않았던 부분이었고, 예상치 못한 문제를 발견하는 데 큰 역할을 했습니다. 앞으로도 이번 경험을 바탕으로 지속적으로 관계자와의 소통을 강화하고, 그들의 피드백을 적극적으로 반영하여 프로젝트의 방향성을 조정할 것입니다. 또한, 다양한 분석 도구와 기법을 활용하여 요구사항을 보다 체계적으로 정리하고, 변화하는 요구에 유연하게 대응할 수 있도록 하겠습니다. 이러한 경험은 제 개발 역량을 더욱 향상시키고, 팀의 성공적인 프로젝트 진행에 기여할 수 있는 밑거름이 될 것입니다. |
임채륜 | Docker-Compose로 개발환경을 맞춰서 팀과의 협업 속도가 증진되었고, 쿠버네티스에서로의 마이그레이션이 빠르고 편해 좋은 성과를 얻을 수 있었다. |
임서연 | 도전의 연속이었던 프로젝트였던 만큼, 결과에 대한 보람도 크게 느꼈고 개발에 대한 자신감도 생겼다. 2개월간 함께해준 팀원분들에게 감사하다. |