프로젝트 목록

MediLens.

처방전 이미지에서 복약 정보를 추출하고 일정·기록·가족 공유를 관리하는 서비스

서비스 체험

MediLens 바로가기 (새 탭)
테스트 ID
testUser
비밀번호
password
개발 기간약 6개월 · 팀 프로젝트
담당 역할서버·DB 중심 개발 참여
기술 스택
  • Python
  • FastAPI
  • PostgreSQL
  • SQLAlchemy
  • React
  • Docker
  • Nginx

서버·DB 개발

약 6개월간 팀으로 개발하며 서버와 DB 영역을 중심으로 참여했습니다. 아래는 팀 결과물에서 확인할 수 있는 서버·DB 설계입니다.

처방전 분석 작업과 상태 조회

이미지 분석이 끝날 때까지 업로드 요청을 붙잡아 두면 프록시에서 타임아웃이 날 수 있습니다. 서버는 작업 ID를 먼저 반환하고, 분석 결과와 상태를 DB에 저장합니다. 화면은 상태 조회 API로 완료·실패를 확인합니다.

복약 일정·기록·알림 데이터 관리

복약 설정과 날짜·시간별 수행 기록을 나눠, 일정과 실제 복용 여부를 구분합니다. 복약 기록에는 사용자·복약 항목·날짜·시간을 묶은 유니크 제약을 선언해 같은 일정의 중복 기록을 제한합니다.

가족 공유 요청과 권한 확인

공유 요청과 수신자의 동의·승인 상태를 관리합니다. 가족의 복약 정보를 조회할 때 승인 관계를 확인하도록 구현되어 있습니다.

핵심 데이터 관계

  • 회원 → 복약 설정회원별 복약 기간과 반복 시간 관리
  • 복약 설정 → 복용 기록날짜·시간별 실제 수행 상태 기록
  • 복약 설정 → 알림 설정복약 일정과 알림 시간 연결
  • 알림 설정 → 발송 이력알림별·날짜별 발송 기록 관리
  • 회원 → 공유 관계요청자·수신자와 승인 상태 관리

프로젝트 소개

처방전·약봉투 이미지에서 복약 정보를 추출하고, 복약 일정과 실제 복용 기록을 관리하며 가족과 공유하는 서비스입니다.

실제 서비스 화면

의약품 검색, 내 의약품 목록, 복용 통계를 보여주는 MediLens 홈
홈 · 의약품 검색과 복용 통계
사진 촬영, 갤러리 선택, 직접 입력 옵션을 보여주는 약봉투 스캔 화면
약봉투 스캔 · 이미지 업로드와 직접 입력
월간 달력과 선택한 날짜의 복용 일정을 보여주는 화면
복용 스케줄 · 날짜별 일정 확인
아이디 로그인과 Google, 카카오, 네이버 간편 로그인 화면
로그인 · 일반 로그인과 소셜 로그인
서비스 소개와 로그인 양식을 나란히 배치한 데스크톱 화면
데스크톱 로그인 · 서비스 소개와 로그인 양식
계정 QR이 가려진 가족 계정 관리 화면. 복용 공유 요청과 초대 링크 기능을 보여줍니다.
가족 계정 관리 · 복용 정보 공유 (QR 비공개)
회원 수, 접속 추이, 복용 통계와 이메일을 가린 활동 로그를 보여주는 관리자 대시보드
관리자 대시보드 · 접속 통계와 활동 로그 (이메일 비공개)

API 연동

OpenAI API · GPT-4o Vision

약봉투·처방전 이미지에서 복약 정보를 추출합니다. FastAPI는 분석을 작업 ID로 접수하고 화면에 진행 상태를 제공합니다.

식약처 공공데이터 API

상비약 검색과 의약품 정보 조회에 사용합니다. 이미지 분석에서 추출한 이름은 의약품 데이터와 대조합니다.

Google·카카오·네이버 OAuth

로그인 화면의 세 가지 간편 로그인과 연결됩니다. FastAPI에서 인증 코드를 토큰으로 교환하고 사용자 프로필을 조회합니다.

Web Push

브라우저에 복약 알림을 전달합니다. 가족 알림은 승인된 공유 관계와 수신 설정을 확인한 뒤 전송합니다.

팀 프로젝트 주요 기능

복약 관리

이미지 분석 결과를 확인해 복약 일정으로 등록하고, 날짜와 시간별로 복용 여부를 기록합니다.

복약·가족 알림

복약 시간에 웹 푸시를 보내고, 미복용 알림은 승인된 가족 관계와 수신 설정을 확인해 전달합니다.

회원 인증과 관리자 기능

JWT 기반 인증과 소셜 로그인 연동을 제공하며, 관리자 기능은 역할 단계에 따라 접근을 검사합니다.

시스템 아키텍처

MediLens는 Cloudflare DNS로 서비스 도메인을 Oracle Cloud 서버에 연결합니다. 서버 안에서는 React 프런트엔드, FastAPI, PostgreSQL을 Docker 컨테이너로 실행합니다. FastAPI는 처방전 이미지 분석에 GPT-4o Vision을, 의약품 정보 조회에 식품의약품안전처 공공데이터 API를 사용합니다.

브라우저에서 Cloudflare DNS를 조회한 뒤 Oracle Cloud 서버에 접속합니다. Docker의 React 프런트엔드가 화면을 제공하고 FastAPI는 PostgreSQL, GPT-4o Vision, 식약처 공공데이터 API와 통신합니다.
MediLens 배포 구조와 외부 API 연결
  1. 사용자가 브라우저에 서비스 주소를 입력하면 Cloudflare DNS의 도메인 설정을 통해 접속할 서버 주소를 찾습니다.
  2. Oracle Cloud 서버의 프런트엔드 컨테이너가 Vite로 빌드한 React 화면을 브라우저에 제공합니다.
  3. 화면에서 처방전 이미지를 올리면 FastAPI가 작업 ID를 반환하고, GPT-4o Vision으로 이미지를 분석합니다.
  4. FastAPI는 식약처 공공데이터 API에서 의약품 정보를 조회하고, 작업 상태와 복약 데이터는 PostgreSQL에서 관리합니다.
  5. 브라우저는 작업 ID로 분석 결과를 확인합니다. 사용자가 확인한 복약 정보는 일정·알림과 연결됩니다.
다른 프로젝트 보기