Bahmni Connect 아키텍처
배경
Bahmni Connect는 인터넷 연결이 부족한 지역에서도 Bahmni 애플리케이션을 사용할 수 있도록 설계되었습니다. 현장에서 활발히 근무하는 지역사회 보건 종사자(CHW)는 오프라인 기능을 사용하여 종이에 정보를 기록한 뒤 병원에서 애플리케이션에 다시 수동 입력하는 중복 작업을 피할 수 있습니다. 많은 환자가 병원에 몰려 생기는 병목도 줄일 수 있습니다.
오프라인 기능을 사용하면 CHW가 기기에 오프라인으로 정보를 기록하고, 인터넷이 연결되는 지역에 들어왔을 때 기록한 데이터를 병원으로 자동 동기화할 수 있습니다. 또한 CHW가 근무하는 병원/진료소에서 기록된 모든 정보도 인터넷 연결 지역에 들어오면 기기로 동기화됩니다.
앱을 통한 오프라인 지원
- Chromium 확장 프로그램:
- Windows Chrome 브라우저에서 테스트됨
- Mac Chrome 브라우저에서 테스트됨
Android 앱: 단일 코드베이스의 HTML, CSS, JS로 여러 플랫폼을 지원하는 Cordova를 기반으로 하며 Crosswalk 뷰를 사용합니다. WebRTC, WebGL, Vibration API, Presentation API, WebView 업데이트 같은 고급 웹 기능을 지원합니다.
Connect 앱의 PWA 버전: V0.89부터 Bahmni Connect는 PWA(Progressive Web App)로 실행됩니다. 서버 측에 Bahmni Connect를 설치하고 클라이언트는 브라우저로 접근합니다. 브라우저에서 PWA에 한 번 접근하면 앱이 캐시되어 이후에는 오프라인(네트워크 없음)으로 접근할 수 있습니다. 네트워크 연결이 생기면 수정된 파일을 다운로드합니다. 클라이언트는 "Sync" 버튼으로 환자 데이터를 클라이언트에서 서버로 동기화합니다.
Chromium 확장 프로그램
확장 프로그램은 Chrome 브라우저의 기능을 수정하고 개선하는 작은 소프트웨어 프로그램입니다. 확장 프로그램 설치 및 삭제에 대한 자세한 내용은 관련 문서를 참고하십시오.
Chromium 확장 프로그램 아키텍처

Progressive Web App
Progressive Web App은 Service Worker와 Web App Manifest를 비롯해 최신 브라우저에서 지원하는 새 기능을 활용하여 사용자가 오프라인으로 작업할 수 있게 합니다.
Bahmni Connect 앱에서는 Service Worker를 사용해 모든 Bahmni 앱 파일을 캐시합니다. Bahmni Connect PWA는 Bahmni 릴리스 0.89부터 지원됩니다. 아키텍처는 Chrome 앱과 같지만, 번들 파일 대신 PWA가 Bahmni 앱 파일을 캐시에 보관합니다.
Progressive Web App 아키텍처

Android 앱
Android용 Bahmni는 리소스와 내부 저장 공간이 매우 적은 태블릿을 고려해 설계되었습니다. 따라서 환자 데이터를 SD 카드에 저장하는 옵션이 있습니다. SQLite는 SD 카드에 데이터 저장을 지원합니다. SD 카드는 쉽게 접근하거나 옮길 수 있으므로 SQLite DB를 암호화합니다. 암호화 때문에 SD 카드에서 Bahmni.db 파일을 복사하더라도 데이터에 접근할 수 없습니다.
Bahmni Android 앱 설치
- USB 케이블로 Android 기기를 PC에 연결하고 USB 저장소를 켭니다.
- bahmni.apk 파일을 연결된 기기의 저장소로 복사합니다.
- USB 저장소를 끄고 PC에서 분리합니다.
- Settings → Applications → Unknown sources 옵션을 선택합니다.
- FileManager 앱을 열고 복사한 bahmni.apk 파일을 클릭합니다.
- 앱 설치 여부를 묻는 메시지가 표시되면 Yes 또는 OK를 클릭합니다.
Android 아키텍처

초기 설정
Bahmni에는 다른 애플리케이션과 마찬가지로 두 가지 유형의 데이터가 있습니다.
- 정적 데이터: HTML, JS, CSS, 이미지
- 트랜잭션 데이터: 환자 데이터, 임상 데이터 등
데이터 유형, 저장 위치 및 제한 사항은 관련 문서에서 설명합니다. 애플리케이션을 오프라인으로 작동시키려면 초기 설정에 이 데이터가 필요합니다. 정적 데이터는 앱에 번들됩니다. 트랜잭션 데이터는 기기에 처음 성공적으로 로그인한 후 사용자 조작 없이 자동으로 원활하게 동기화됩니다.
Bahmni Wiki · CC BY-SA 4.0