증분 업데이트
Bahmni-mart는 데이터 평탄화 중 증분 업데이트를 지원합니다. 일부 특정 작업은 /var/www/bahmni_config/bahmni-mart/bahmni-mart.json에 증분 업데이트 설정을 추가하여 쉽게 활성화할 수 있습니다. 모든 작업이 이 범주에 해당하는 것은 아닙니다. 자세한 내용은 이 섹션을 확인하세요.
예제는 여기에서 확인하십시오.
| Key Name | Description | Default Value | Required |
|---|---|---|---|
| updateOn | Column name in the analytics database depends on which incremental update should work | N/A | yes |
| eventCategory | Category name present in event_records table (openmrs database) | N/A | yes |
| openmrsTableName | Table name in OpenMRS for given eventCategory | N/A | yes |
특정 작업의 증분 구성 활성화/비활성화: 아래 작업은 기본적으로 증분 구성이 활성화되어 있어 bahmni-mart를 적재할 때마다 작업별 테이블이 증분 방식으로 적재됩니다. 특정 작업의 테이블을 매번 전체 적재하려면 해당 작업 JSON 파일의 테이블에서 incrementalUpdateConfig 절을 제거할 수 있습니다.
- Person, Patients, Programs, Appointments, Bed Management, Operation Theater, Visits and Encounters, Medication And Orders, Diagnoses And Conditions, Provider
이는 Bahmni 인스턴스의 bahmni-mart.json에서 직접 바꾸는 단순 구성 변경이 아닙니다. 작업별 JSON 파일을 변경하려면 bahmni-mart RPM을 빌드하여 Bahmni 인스턴스에 배포해야 합니다.
1. Person 작업 - 평면화된 Mart 테이블: person_details_default와 person_address_default Mart 테이블은 기본적으로 incrementalUpdateConfig가 활성화되어 있고 나머지 테이블은 전체 적재로 실행됩니다.
person_details_default
person_address_default
person_attribute_info_default
address_hierarchy_level_defaultperson.json:
{
"jobs": [
{
"name": "Person details",
"type": "customSql",
"readerSql": "SELECT p.person_id, pn.person_name_id, pn.preferred, pn.prefix, pn.given_name, pn.middle_name, pn.family_name_prefix, pn.family_name, pn.family_name2, pn.family_name_suffix, p.gender, p.birthdate, EXTRACT(YEAR FROM p.birthdate) AS birthyear, p.birthtime, p.birthdate_estimated, FORMAT((DATEDIFF(CURRENT_DATE, p.birthdate) / 365), 0) AS age, CASE WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) < '5' THEN '0-5' WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) BETWEEN '5' AND '14' THEN '05-14' WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) BETWEEN '15' AND '24' THEN '15-24' WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) BETWEEN '25' AND '34' THEN '25-34' WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) BETWEEN '35' AND '44' THEN '35-44' WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) BETWEEN '45' AND '54' THEN '45-54' WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) BETWEEN '55' AND '64' THEN '55-64' WHEN ROUND(DATEDIFF(CURRENT_DATE(), p.birthdate) / 365, 0) >= '65' THEN '65+' END AS age_group, p.dead, p.death_date, p.deathdate_estimated, p.cause_of_death FROM person p INNER JOIN person_name pn ON p.person_id = pn.person_id AND p.voided = FALSE AND pn.voided = FALSE",
"tableName": "person_details_default",
"incrementalUpdateConfig": {
"updateOn": "person_id",
"eventCategory": "patient",
"openmrsTableName": "person"
}
},
{
"name": "Person address",
"type": "customSql",
"readerSql": "SELECT person_id, preferred, address1, address2, address3, address4, address5, address6, address7, address8, address9, address10, address11, address12, address13, address14, address15, city_village, state_province, postal_code, country, county_district, latitude, longitude, start_date, end_date FROM person_address WHERE voided = FALSE",
"tableName": "person_address_default",
"incrementalUpdateConfig": {
"updateOn": "person_id",
"eventCategory": "patient",
"openmrsTableName": "person"
}
},
{
"name": "Person Attribute Info",
"type": "customSql",
"readerSql": "SELECT person_attribute_type_id, name, description FROM person_attribute_type",
"tableName": "person_attribute_info_default"
},
{
"name": "Address hierarchy levels",
"type": "customSql",
"readerSql": "SELECT address_hierarchy_level_id, name, parent_level_id, address_field FROM address_hierarchy_level",
"tableName": "address_hierarchy_level_default"
}
]
}2. Patients 작업:
평면화된 Mart 테이블
모든 환자 Mart 테이블은 기본적으로 incrementalUpdateConfig가 활성화되어 있습니다.
patients.json:
3. Programs 작업 - 평면화된 Mart 테이블: patient_program_data_default와 program_attributes 테이블은 기본적으로 incrementalUpdateConfig가 활성화되어 있고 나머지 Mart 테이블은 전체 적재로 실행됩니다.
programs_default
program_outcomes_default
patient_program_data_default
program_workflow_default
program_workflow_states_default
program_attributesPrograms.json:
4. Appointments 작업 - 평면화된 Mart 테이블: 아래 Mart 테이블은 customSql 작업 유형으로 생성됩니다. patient_appointment_default, appointment_service_default 및 service_availability_default는 기본적으로 incrementalUpdateConfig가 활성화되어 있고 appointment_speciality_default는 전체 적재로 실행됩니다.
patient_appointment_default
appointment_service_default
appointment_speciality_default
service_availability_defaultappointments.json:
5. Bed Management 작업:
평면화된 Mart 테이블
참고: 아래 Mart 테이블은 customSql 작업 유형으로 생성됩니다.
bed_patient_assignment_default와 bed_tags_default는 기본적으로 incrementalUpdateConfig가 활성화되어 있고 current_bed_details_default는 전체 적재로 실행됩니다.
bedManagement.json:
6. Operation Theater 작업:
평면화된 Mart 테이블
surgical_block_default, surgical_appointment_default 및 surgical_appointment_attributes 테이블은 기본적으로 incrementalUpdateConfig가 활성화되어 있습니다.
surgical_appointment_attribute_type_details_default 테이블은 전체 적재로 실행됩니다.
operationTheater.json:
7. Visits and Encounters 작업:
평면화된 Mart 테이블
patient_encounter_details_default 테이블만 기본적으로 incrementalUpdateConfig가 활성화되어 있고 나머지는 전체 적재로 실행됩니다.
visitsAndEncounters.json:
8. Medication And Orders 작업: Medication과 Orders가 하나의 작업과 단일 JSON 파일로 결합되어 있습니다.
평면화된 Mart 테이블: Medication 및 Orders 관련 위 Mart 테이블은 모두 기본적으로 incrementalUpdateConfig가 활성화되어 있습니다.
medication_data_default
lab_samples
radiology_ordersmedicationAndOrders.json:
9. Diagnoses And Conditions 작업:
Diagnoses와 Conditions가 하나의 작업과 단일 JSON 파일로 결합되어 있습니다.
Mart 테이블
Diagnosis 관련 테이블만 기본적으로 incrementalUpdateConfig가 활성화되어 있고 conditions_default는 기본적으로 전체 적재로 실행됩니다.
diagnosesAndConditions.json:
10. Provider 작업:
평면화된 Mart 테이블
provider_attributes 테이블만 기본적으로 incrementalUpdateConfig가 활성화되어 있고 나머지 테이블은 기본적으로 전체 적재로 실행됩니다.
provider.json:
Bahmni Wiki · CC BY-SA 4.0