성균관대학교 2024 산학 협력 프로젝트
신장병은 초기에 증상이 거의 나타나지 않아 조기 진단이 어렵습니다.
하지만 신장 기능이 저하되면 심각한 건강 문제로 이어질 수 있으며,
말기 신부전으로 발전할 경우 투석이나 신장 이식이 필요하게 됩니다.
2024 H&S biolab 산학 협력 프로젝트는
신장병 조기진단 키트 연동 어플을 개발해,
신장병을 더 일찍 발견하고 치료함으로써
장기적인 합병증을 예방하고
환자의 삶의 질을 향상시키는 것을 목표로 합니다.
| 이름 | 1학기 업무 | 2학기 업무 |
|---|---|---|
| 곽태윤 | 백엔드 / Tech Lead | 로그인 / 건강검진 back & front |
| 김지수 | 프론트엔드 / Product Manager | 홈 / 사용자 정보 / 푸시알람 back & front Google Analytics 연동 |
| 오지훈 | 프론트엔드 / SW developer | Team Leader 키트 검사 frontend & 비전 모델 개발 |
| 최한송 | 백엔드 / Team Leader | 의약품 검색 back & front CI / CD 환경 구축 |
| 황재현 | 프론트엔드 / SW developer | 투석병원 검색 back & front 키트 인식 비전 모델 개발 |
- 건강보험심사평가원 보건의료빅데이터활용 창업경진대회 | 우수상
- 식품의약품안전처 식의약 데이터 활용 경진대회 | 장려상
키트 검사 방법을 설명하고, 키트 검사를 실시합니다. 사용자가 키트의 이미지를 Scala Wox의 API에 전송하면, 키트 검사의 결과를 반환받아서 DB에 저장합니다.
Codef API의 건강검진 API를 통해 보건복지부에서 사용자의 건강검진 기록과 결과 PDF를 불러옵니다. 불러온 결과를 분석하고, 신장병과 긴밀히 연관된 기저질환·성인병 분석도 진행할 예정입니다.
신장병 고위험군 혹은 환자는 정기적으로 혈액검사를 실시합니다. 앱에서 혈액검사 결과를 기록하고, 분석 결과를 제공합니다.
건강검진 및 혈액검사 기록을 통해 사용자의 콩팥 기능을 종합 분석합니다.
콩팥 상태를 매일 체크할 수 있는 6가지 항목을 제공하며, 3개 이상 위험 신호가 감지되면 키트 검사를 유도합니다.
혈액투석 적정성 평가 등급을 참고하여 주변 투석 병원을 검색할 수 있습니다. 거리, 등급, 병원 종류 등의 필터가 제공되며, 자주 찾는 병원은 즐겨찾기로 지정할 수 있습니다.
식품의약품안전처 의약품 데이터를 바탕으로 의약품을 검색할 수 있습니다. 대한약사협회 신장병 위해 성분 정보도 참고하여, 어떤 의약품이 신장에 해로운지 안내합니다.
-
디렉터리 구조
/assets └── [fonts --> 폰트 상세](https://www.notion.so/assets-fonts-16d120bb73308052b589c3924ba7c80e?pvs=21) /src ├── components │ ├── ModalComponent.js │ ├── dataUtils.js │ ├── devButton.js │ ├── [homeContext.js --> 홈 관리 context 상세](https://www.notion.so/components-homeContext-16d120bb733080849650ef84d12897af?pvs=21) ├── images ├── [navigation --> 네비게이션 상세](https://www.notion.so/navigation-16d120bb73308053b4e2e6ff238119c1?pvs=21) │ ├── navigation_with_tabs_styles.js │ ├── navigation_with_tabs.js │ ├── navigation_without_tabs_styles.js │ └── navigation_without_tabs.js ├── screens │ ├── [examin_record --> 검진기록 탭 상세](https://www.notion.so/screens-examine_record-16d120bb733080c092a3c8533e6548ba?pvs=21) │ │ ├── authentication_1 │ │ ├── authentication_2 │ │ ├── authentication_3 │ │ ├── blood_test_specifics │ │ ├── health_checkup_specifics │ │ ├── index.js │ │ └── styles.js │ ├── [home --> 홈 탭 상세](https://www.notion.so/screens-home-16d120bb73308018a9b7ca7b86787544?pvs=21) │ │ ├── daily_check │ │ ├── kidney_info │ │ ├── manage_account │ │ ├── my_profile │ │ ├── set_push_alarm │ │ ├── index.js │ │ └── styles.js │ ├── [hospital --> 투석병원검색 탭 상세](https://www.notion.so/screens-hospital-16d120bb7330806d951ddddb04938f4e?pvs=21) │ │ ├── assets │ │ ├── FilterModal.js │ │ ├── index.js │ │ └── styles.js │ ├── [kit --> 키트 탭 상세](https://www.notion.so/screens-kit-16d120bb733080a588dff0c3eeb50b46?pvs=21) │ │ ├── kit_guide_1 │ │ ├── kit_guide_2 │ │ ├── kit_test │ │ ├── index.js │ │ └── styles.js │ ├── [login --> 로그인 탭 상세](https://www.notion.so/screens-login-16d120bb73308061956cf9466eb7fc3e?pvs=21) │ │ ├── firebaseConfig.js │ │ ├── get_kidney_info.js │ │ ├── get_underlying_disease_info.js │ │ ├── get_usr_info.js │ │ ├── index.js │ │ └── login.js │ └── [medicine --> 의약품검색 탭 상세](https://www.notion.so/screens-medicine-16d120bb7330803b8edfdb2a38fdba46?pvs=21) │ ├── medicine_specifics │ ├── index.js │ └── styles.js ├── [theme.js --> 앱 테마 & 폰트 상세](https://www.notion.so/src-theme-js-16d120bb73308048b7a1efe68aafc418?pvs=21) [/App.js --> 앱 시작 네비게이션 상세](https://www.notion.so/navigation-16d120bb73308053b4e2e6ff238119c1?pvs=21)
- 핵심 디렉터리 구조
- 로그인 화면: src/screens/login
- 홈 탭: src/screens/home
- 키트 탭: src/screens/kit
- 검진 탭: src/screens/examin_record
- 병원검색 탭: src/screens/hospital
- 의약품 검색 탭: src/screens/medicine
- 페이지 네비게이션: src/navigation
하단바가 있는 화면의 경우 navigation_with_tabs.js 네비게이션에서 불러오고
하단바가 없는 화면의 경우 navigation_without_tabs.js 네비게이션에서 불러와서
App.js 네비게이션에서 위의 두 네비게이션을 불러온다.
-
전체 구조
App.js ├── Login1: src/screens/login/index.js ├── Login2: src/screens/login/login.js ├── GetUserInfo: src/screens/login/get_usr_info.js ├── GetKidneyInfo: src/screens/login/get_kidney_info.js ├── GetUnderlyingDiseaseInfo: src/screens/login/get_underlying_disease_info.js ├── BottomNavigation: navigation_with_tabs.js │ ├── Home: src/screens/home/index.js │ ├── Kit: src/screens/kit/index.js │ ├── Examin_record: src/screens/examin_record/index.js │ ├── Hospital: src/screens/hospital/index.js │ ├── Medicine: src/screens/medicine/index.js ├── NavigationWithoutTabs: navigation_without_tabs.js │ ├── authentication_1: src/screens/examin_record/authentication_1/index.js │ ├── authentication_2: src/screens/examin_record/authentication_2/index.js │ ├── authentication_3: src/screens/examin_record/authentication_3/index.js │ ├── blood_test_specifics: src/screens/examin_record/blood_test_specifics/index.js │ ├── blood_test_input: src/screens/examin_record/blood_test_input/index.js │ ├── medicine_specifics: src/screens/medicine/medicine_specifics/index.js │ ├── kit_guide_1: src/screens/kit/kit_guide_1/index.js │ ├── kit_guide_2: src/screens/kit/kit_guide_2/index.js │ ├── kit_test: src/screens/kit/kit_test/index.js │ ├── daily_check: src/screens/home/daily_check/index.js │ ├── my_profile: src/screens/home/my_profile/index.js │ ├── manage_account: src/screens/home/manage_account/index.js │ ├── set_push_alarm: src/screens/home/set_push_alarm/index.js │ ├── kidney_info: src/screens/home/kidney_info/index.js │ ├── HealthCheckupSpecifics: src/screens/examin_record/health_checkup_specifics/index.js
- 개발 규칙
-
Component와 Styles 구분
모든 화면은 index.js와 syles.js를 분리한다. (로그인 화면 제외)
-
theme.js로 폰트 및 테마 적용
styles.js에서 theme.js를 import해서 폰트와 테마를 적용한다.
-
모든 컴포넌트 상대 크기 개발
const width_ratio = Dimensions.get('screen').width / 390; const height_ratio = Dimensions.get('screen').height / 844;
위의 코드를 통해 styles.js에서 모든 컴포넌트를 상대 크기로 구성한다.
-














