BBahmni 한국어 매뉴얼검색
한국어 번역 완료
한국어English

Bahmni Connect 맞춤 설정

목적과 이점

Bahmni Connect를 사용하면 지역 보건 종사자(CHW)가 인터넷이 없는 원격지에서 환자를 등록하고 의무기록을 조회하며 간단한 치료 데이터를 입력할 수 있습니다. 자원이 부족한 환경에 특히 유용합니다.

다음은 Bahmni Connect의 여러 기능에 대한 설명입니다.

지원 기능

1) 로그인 위치

CHW가 휴대기기로 처음 로그인하면 서버에서 인증하고 앱 접근 권한을 부여하며, 오프라인 인증을 위해 자격 증명을 기기에 저장합니다. CHW는 특정 운영 위치에 연결됩니다. 다른 지역으로 전근해도 기기는 같은 위치에 남으므로 위치 선택 기능 없이 마지막 성공 로그인만 기기에 저장합니다.

CHW가 선택한 로그인 위치에는 catchment ID가 속성으로 저장됩니다. 첫 로그인 후 위치와 ID를 로컬에 저장하고, 이후 오프라인 로그인에서는 기본 위치를 미리 채웁니다. 해당 ID는 동기화 시 서버 데이터 필터 조건으로 사용합니다.

앱 최초 설치 시 OpenMRS에서 가져온 모든 위치를 표시합니다. 로그인 위치를 선택해 처음 로그인하면 이를 기본값으로 지정하고 위치 속성의 catchment ID와 함께 로컬에 저장합니다.

위치별 동기화 구성을 제공하려면 다음 Java 파일을 정의해야 합니다.

이 파일은 https://github.com/Bahmni/bahmni-offline-sync에 작성하고 OpenMRS 모듈에 omod로 배포합니다. 필터 조건도 이 파일에 정의합니다.

2) 앱을 온라인/오프라인 전용으로 설정

National Registry 같은 앱은 기기가 온라인일 때만, 오류 로그 같은 기능은 오프라인이 아닐 때만 표시할 수 있습니다. bahmni_config/openmrs/apps/home/extension.json을 수정합니다.

예시 1) "exclusiveOnlineModule":

예시 2) "exclusiveOfflineModule":

3) 여러 병동 지원 구성

주소 계층 항목에 로그인 위치가 여러 개이고 각 위치가 일부 하위 주소만 담당할 수 있습니다. OpenMRS는 한 로그인 위치 아래 여러 병동 구성을 허용하지 않으므로 위치 속성 "catchmentFilters"에 병동 사용자 생성 ID를 쉼표로 구분해 지정합니다.

위치 기반 필터 평가기는 이 값으로 데이터를 가져옵니다. 값이 없으면 로그인 위치 주소 아래 모든 병동 데이터를 가져옵니다.

절차:

Screenshot 2016-08-30 14.01.50.pngScreenshot 2016-08-30 14.03.36.png

4) Bahmni Connect 지원 표시 컨트롤

현재 지원하는 표시 컨트롤:

  1. 진단
  2. 관찰
  3. 검사 처방
  4. 방문

Bahmni Connect 클라이언트가 서버와 동기화된 뒤 컨트롤이 업데이트됩니다.

5) 등록

Bahmni Connect가 지원하는 주요 등록 기능:

  • 이름, ID, 주소, 사용자 정의 속성 기반 환자 검색
  • 등록 페이지 검색 결과에 마을 이름을 포함한 환자 속성 표시
  • 신원, 이름, 나이, 성별, 사용자 정의 속성 기록
  • 기존 환자 정보 편집

6) Catchment 간 환자 진료 사건 동기화

환자가 거주지에서 친정으로 이동하는 임신부처럼 catchment 사이를 이동하면 진료를 위해 기존 진료 사건을 새 위치로 가져와야 합니다. Bahmni Connect가 이를 지원합니다.

환자 기록을 기존 로그인 위치에서 새 위치로 옮기려면 새 위치에서 환자 주소를 변경한 뒤 해당 위치에 연결된 Bahmni Connect 클라이언트로 다시 동기화해야 합니다.

7) 방문과 진료 사건

기능적으로 온라인 모드와 비슷하지만 다음 차이가 있습니다.

환자 등록 시 방문을 열지 않습니다. 등록 정보는 기기에 저장되며 동기화해도 방문이나 등록 진료 사건을 만들지 않습니다.

오프라인에서 임상 데이터(관찰)를 저장하면 임시 방문과 진료 사건을 만들어 기기에 저장합니다. 세 가지 상황이 있습니다.

  1. 오프라인 기기에서 새 환자 생성
  2. 기존 환자에게 임상 데이터 추가
  3. 오프라인에서 데이터를 추가했지만 동기화 전에 병원에서 열린 방문이 생긴 환자

방문과 진료 사건에 사용할 수 있는 구성:

a. Visit Matcher 구성

OpenMRS 전역 속성에서 Visit Matcher를 Offline Visit Matcher로 설정합니다.

image2016-5-11 17:54:17.png

b. Search All 탭 최근 환자 구성

image2016-5-27 13:11:5.png

All 탭을 열면 검색창 아래에 최근 14일 안에 생성되었거나 진료 사건이 있는 환자를 표시합니다.

최근 환자 기간은 clinical/app.json의 config 영역에서 구성합니다.

{
	"config": {
			"recentPatientsDuration": 7
	}
}

c. 임상 검색 탭 숨기기

clinical/extension.json의 검색 탭 구성에 "offline:false"를 추가하면 Bahmni Connect에서 해당 탭을 숨깁니다.

"bahmni_clinical_patients_search_allpatients_active_app:clinical": {
    "id": "bahmni.clinical.patients.search.activePatients",
    "extensionPointId": "org.bahmni.patient.search",
    "type": "config",
    "extensionParams": {
        "searchHandler": "emrapi.sqlSearch.activePatients",
        "translationKey": "Active",
        "forwardUrl": "#/default/patient/{{patientUuid}}/dashboard"
    },
    "label": "Active",
	"offline": false,
    "order": 2,
    "requiredPrivilege": "app:clinical"
},

8) 등록 두 번째 페이지 또는 방문 세부 정보 페이지

등록 두 번째 페이지가 활성화되어 있으면 첫 페이지에서 관찰을 입력·저장한 뒤 두 번째 페이지로 이동해 환자 관찰을 입력합니다. Bahmni Connect에서 활성화하려면 ...apps/registration/extension.json에 구성을 추가합니다.

extension.json에 구성을 추가하지 않으면 두 번째 페이지가 표시되지 않습니다.

Visit Details Page
"nutritionalValues":{
        "id": "bahmni.registration.conceptSetGroup.nutritionalLevels",
        "extensionPointId": "org.bahmni.registration.conceptSetGroup.observations",
        "type": "config",
        "extensionParams": {
            "conceptName": "Nutritional Values",
            "translationKey": "NUTRITIONAL_VALUES_LOCALE_KEY",
            "conceptNames": ["Height", "Weight"],
            "required":true,
            "showLatest": true
        },

두 번째 페이지를 사용하지 않으면 첫 페이지에 Consultation 이동 버튼이 나타나도록 extension.json에 다음 구성을 추가합니다.

Consultation Button in Registration Second Page
"bahmni_patient_registration_next": {
       "id": "bahmni.patient.registration.next",
       "extensionPointId": "org.bahmni.registration.patient.next",
       "type": "config",
       "extensionParams": {
           "display": "Enter <u>C</u>onsultation",
           "shortcutKey": "c",
           "forwardUrl": "../clinical/index.html#/default/patient/{{patientUuid}}/dashboard"
       },
       "order": 1,
       "requiredPrivilege": "app:clinical"
   }

9) Bahmni Connect 관찰 템플릿의 양식 조건 지원

양식 조건으로 특정 입력에 따라 관찰 필드를 활성화·비활성화하고 오류를 표시할 수 있습니다. 예를 들어 특정 섹션을 다른 입력이 있을 때만 작성하게 합니다.

Bahmni Connect 클라이언트는 오프라인에서도 관찰 양식 조건을 지원합니다.

10) 하나의 Bahmni Connect 기기에서 여러 위치 데이터 기록

사용자가 출장 진료 중 여러 위치를 방문할 때 여러 catchment를 지원하면 사용이 직관적이고 보고가 정확해집니다.

모든 위치 참조는 데이터 저장 최적화를 위해 하나의 DB에 저장합니다.

다음 그림은 위치와 catchment 매핑을 보여 줍니다.

clip-a863-6e9f.png

사용 사례:

  1. 한 출장에서 같은 기기로 여러 위치의 환자 소견 기록
  2. 위치별 보고서 분리
  3. 여러 위치에서 기록한 데이터를 한 번에 온라인 Bahmni로 Push. Pull은 로그인 위치 기준

다중 DB를 활성화하려면 OpenMRS 전역 속성 "allowMultipleLoginLocation"을 true로 설정합니다.

Screenshot 2017-01-11 12.38.06.png

설정 후 Bahmni Connect 데이터베이스용 자체 전략을 구현합니다.

구성은 /var/www/bahmni_config/offline/openmrs/apps/dbNameCondition에 있으며 예시는 다음과 같습니다.

예시 1)

dbNameCondition.js
//One DB per login location, does not depends on provider
Bahmni.Common.Offline.dbNameCondition.get = function (provider, loginLocation) {
    return loginLocation;
};

예시 2)

dbNameCondition.js
//One DB per provider, does not depend on login location
Bahmni.Common.Offline.dbNameCondition.get = function (provider, loginLocation) {
	 return provider;
};

예시 3)

dbNameCondition.js
//One DB per device, does not depend on either provider or login location
Bahmni.Common.Offline.dbNameCondition.get = function (provider, loginLocation) {
    return 'Bahmni Connect';
};

예시 4)

dbNameCondition.js
//you can create any type of strategy with your own sort of logic
//Like:
Bahmni.Common.Offline.dbNameCondition.get = function (provider, loginLocation) {
	if(provider === 'batman')
       	return provider;
    if(loginLocation === 'location1' || loginLocation === 'location2')
    	return 'location1_2';
    return loginLocation;
};

목차

관련 문서: Bahmni Connect 앱
원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗