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

Bahmni의 Atom Feed 기반 동기화

Atom Feed 기반 동기화 소개

Bahmni는 ATOM Feed 동기화(REST API를 통한 이벤트 알림)를 사용하여 서비스가 Bahmni에서 발생한 변경 사항을 가져오게 합니다. Bahmni EMR(OpenMRS)은 Patient, Encounter, Lab, Drug 같은 여러 이벤트 피드를 게시하고 다른 시스템은 이를 구독하여 변경 알림을 받습니다. 알림을 받은 하위 소비 시스템은 OpenMRS REST API를 호출해 관련 데이터를 가져옵니다. 일반적으로 소비자별 동기화 서비스가 이벤트를 수신하고 관련 데이터 패킷을 구성한 뒤 ELIS, ERP 같은 하위 시스템으로 전송합니다.

OpenMRS, OpenERP 및 OpenELIS 같은 구성 요소는 "Atom Feed Based Synchronization"으로 동기화됩니다. 구조는 다음과 같습니다.

AtomFeedSynchronization.jpg

Bahmni에서 의약품을 생성하는 예를 살펴보겠습니다. 이벤트 순서는 다음과 같습니다.

  1. 관리자가 OpenMRS 또는 Bahmni Admin 모듈의 "CSV Upload" 기능으로 의약품을 생성합니다.
  2. 의약품이 생성되면 Drug Feed에 이벤트가 게시됩니다.
  3. "OpenERP atom feed service"에는 Atom Feed 이벤트를 소비하도록 예약된 배치 작업이 있습니다.
  4. 작업은 OpenERP 또는 Odoo에 이벤트를 생성합니다.

Bahmni에서 게시되는 여러 피드

피드 이름URL설명
1OpenMRS Patient Feed최근 이벤트: https://demo.mybahmni.org/openmrs/ws/atomfeed/patient/recent 1페이지 이벤트: https://demo.mybahmni.org/openmrs/ws/atomfeed/patient/1"View Source"를 눌러 실제 XML 피드를 확인합니다.
2OpenMRS Encounter Feedhttps://demo.mybahmni.org/openmrs/ws/atomfeed/encounter/recent의료 제공자와 환자의 진료 및 해당 진료에 기록된 데이터
3OpenMRS Lab Eventshttps://demo.mybahmni.org/openmrs/ws/atomfeed/lab/recent
4OpenMRS Drug Eventshttps://demo.mybahmni.org/openmrs/ws/atomfeed/drug/recent

여러 피드의 예제 구성 파일(OpenERP Sync Service)은 erp-atomfeed.properties를 참조하십시오.

여러 Atom Feed 동기화 서비스를 위한 Bahmni 참조 코드

데이터 흐름전송되는 엔터티코드 저장소코드 링크
1OpenMRS (EMR) → OpenELIS (Lab)Patient, Tests/Panels, Lab OrdersOpenELISLabFeedEventWorker.java
2OpenELIS (Lab) → OpenMRS (EMR)Test Resultsbahmni-coreOpenElisAccessionEventWorker.java
3OpenMRS (EMR) → Odoo (ERP)Patient, Drugs, Tests/Panels, Drug Orders, Lab Orders, Service Ordersopenerp-atomfeed-service
4OpenMRS (EMR) → DCM4chee (Radiology)Patient, Radiology Orderspacs-integrationPACSIntegrationService.java (Atomfeed + HL7)
5자체 연동을 작성하기 위한 예제 코드 저장소bahmni-feed-integration-examplePatientFeedJob.java

기반 ATOM Feed 라이브러리

Bahmni는 OpenMRS, OpenELIS 및 OpenERP 사이의 데이터 동기화를 위해 ThoughtWorks ICT4H 팀이 만든 Atom Feed 기반 프레임워크를 사용합니다. Reference Data 앱과의 동기화에도 사용됩니다. 기반 atomfeed 구현의 자세한 내용은 다음을 참조하십시오.

Atom Feed 동기화 기록용 기반 데이터베이스 테이블

Atom Feed 내부에서 사용하는 테이블은 다음과 같습니다.

테이블 이름사용 모드설명
event_recordsPUBLISHER다른 시스템이 소비할 수 있도록 Atom Feed가 게시할 이벤트 목록을 보관합니다. category 열은 patient, encounter 등의 이벤트 유형을 나타냅니다. 참고: 같은 환자의 업데이트가 여러 행일 수 있습니다. 고유 행은 select distinct object from event_records where category = 'patient';로 확인합니다.
markersCONSUMER이미 처리된 레코드를 나타내는 마커 항목을 보관합니다.
event_records_offset_markerCONSUMERCONSUMER가 이벤트를 더 빠르게 처리할 수 있도록 캐시된 레코드를 보관합니다.
failed_eventsCONSUMER소비하지 못한 실패 이벤트 목록을 보관하며 별도의 이벤트 처리기가 나중에 다시 시도합니다.

참고: PUBLISH 모드는 시스템이 Atom Feed에 이벤트를 게시하는 경우입니다. CONSUME 모드는 다른 시스템에서 이벤트를 읽고 소비한 이벤트에 따라 자체 데이터를 작성하거나 업데이트하는 경우입니다. OpenMRS, OpenELIS, Odoo는 상황에 따라 모두 게시자와 소비자 역할을 합니다. 예를 들어 Bahmni(OpenMRS)에서 환자를 생성하면 Bahmni가 PUBLISHER이고 ELIS/Odoo가 CONSUMERS입니다. ELIS에 검사 결과를 입력하면 ELIS가 PUBLISHER이고 Bahmni/OpenMRS가 결과의 CONSUMER입니다. 따라서 Atom Feed 게시자이자 소비자로 작동하는 각 하위 시스템에 이 네 테이블이 존재합니다.

AtomFeed 콘솔 뷰어

원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗