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

릴리스 노트 0.84

소개

Bahmni에는 Reports 앱 또는 모듈이 있습니다. Reports 앱은 권한에 따라 활성화되며 Home 대시보드에서 접근할 수 있습니다. 일반적으로 Admin 사용자에게 이 권한이 있습니다. 앱에 들어가면 구성된 보고서 목록이 표시되며, 시작일·종료일과 출력 형식을 지정하여 원하는 보고서를 실행할 수 있습니다.

Bahmni 구현마다 자체 config 모듈이 있습니다. 구현 담당자는 필요한 보고서를 올바르게 구성하여 Reports 앱에 표시되도록 해야 합니다. 구성 파일은 config 모듈의 openmrs/apps/reports 디렉터리에 있습니다.

Bahmni에서 보고서를 활용하는 두 가지 방식

  1. 관리자급 사용자에게 유용한 표준 보고서. 여러 이해관계자가 다양한 사실을 분석할 수 있도록 백엔드 데이터베이스에서 데이터를 추출합니다.

Bahmni 보고 모듈이 지원하는 출력 형식

  1. HTML
  2. PDF
  3. EXCEL
  4. Custom EXCEL(미리 정의된 매크로가 있는 Excel)
  5. CSV
  6. ODF(OpenOffice 형식)

Bahmni에서 보고서를 정의하는 여러 방식

  1. 미리 정의된 보고서(Canned Reports). 사용자 정의 SQL. Jasper Reports. 일반 보고서(Reports 모듈의 최신 개발 기능).

보고서 버전 관리

구현 사이트의 보고서는 구현별 config 폴더에 있습니다. 이 폴더의 report.json 및 관련 SQL 파일은 보통 텍스트 형식이므로 GitHub 같은 표준 버전 관리 시스템으로 관리할 수 있습니다. 제품 릴리스 간 변경 이력과 추적성을 유지하려면 이러한 파일을 버전 관리하는 것이 좋습니다.

샘플 구성

보고서 구성에 사용하는 JSON 파일은 /var/www/bahmni_config/openmrs/apps/reports/reports.json에 있습니다.

app.json
"config": {
   "paperSize": "A3", //The default paper size is A4. Supported sizes are A3 and A4.
   "supportedFormats": ["pdf"], //List of available formats are html, pdf, excel, csv, custom excel, ods. When not defined, all the available formats will be listed.
}

미리 정의된 보고서

이 보고서는 Bahmni의 특정한 사전 정의 정보를 제공하며 구성 옵션이 제한적입니다. 고객의 새 요구 사항이 기존 보고서와 비슷하더라도 재사용하기 어려워 새 보고서가 계속 추가되고 유지 관리 부담이 커집니다. 이 문제를 해결하기 위해 일반 보고서(Generic Reports)가 도입되었습니다.

참조 표

  • Bahmni에서는 각각 이름을 가진 여러 연령 그룹 유형을 설정할 수 있습니다. 각 보고서 구성에서 이름을 지정하여 자체 연령 그룹을 사용할 수 있습니다.

예:

아래 보고서는 연령 그룹별 건수를 보여 줍니다.

Obscount.png

이런 보고서를 표시하려면 참조 표 "reporting_age_group"에 연령 그룹 구성을 삽입한 뒤 보고서 구성에서 참조합니다.

table_agegroup.png

구성

"nutritionProgram": {

"name": "Nutrition Program - <5 years children receiving (Vitamin A)", "type": "obsCount", "config": { "ageGroupName": "Nutrition Program Vitamin A", "conceptNames": ["Childhood Illness, Vitamin A Capsules Provided"] }

}

SQL 명령으로 reporting_age_group에 항목을 삽입할 수 있습니다. 아래는 INSERT SQL 명령의 예입니다.

INSERT INTO reporting_age_group (name,report_group_name, min_years, min_days, max_years, max_days) VALUES ('6 - 11 months', 'Nutrition Program Vitamin A',0,180,1,-1);

INSERT INTO reporting_age_group (name,report_group_name, min_years, min_days, max_years, max_days) VALUES ('12 - 59 months', 'Nutrition Program Vitamin A',1,0,5,-1);

  • 일부 보고서에서는 개념의 참조 범위도 설정할 수 있습니다.

1. 관찰 건수 보고서

여기에는 세 가지 변형이 있습니다.

주의: 구성에 개념 이름을 둘 이상 지정할 경우 모두 같은 데이터 유형(코딩된 개념 또는 부울 개념)이어야 합니다. 데이터 유형을 섞으면 항상 관찰 건수 보고서가 생성됩니다.

1.1 관찰 건수

부울 또는 코딩된 개념이 아닌 개념에 대해 생성된 관찰 수만 계산하려면 이 보고서를 사용합니다.

예시

Obscountform.png

구성

"nutritionProgram": {
"name": "Nutrition Program - <5 years children receiving (Vitamin A)",    "type": "obsCount",    "config": {    "ageGroupName": "Nutrition Program Vitamin A",
"conceptNames": ["Childhood Illness, Vitamin A Capsules Provided"],

"locationTagNames": ["Report Location"],

"countOnlyClosedVisits":"false"    }

}

  • OpenMRS에 “Report location” 위치 태그를 추가하고 구성에 위치 태그를 지정합니다. 예: "locationTagNames": ["Report Location” ]
Obscount.png

1.2 코드화 관찰 건수

코딩된 개념의 관찰 수를 사용자가 선택한 코딩 답변별로 분류하여 계산합니다.

codedObsform.png

구성

"nutritionProgram": {
"name": "Nutrition Program - Nutritional status of registered children"
,
"type":
"obsCount",    "config": {      "ageGroupName": "Nutritional Status For Registered Children",      "conceptNames": ["Nutrition, Nutritional Status"],      "locationTagNames": ["Report Location"]
}

}

  • OpenMRS에 “Report location” 위치 태그를 추가하고 구성에 위치 태그를 지정합니다. 예: "locationTagNames": ["Report Location” ]
CodedObscount.png

1.3 불리언 개념 건수

(Boolean Observations Count로 이름 변경 예정) 사용자가 선택한 예/아니요(True/False)별로 불리언 관찰 수를 집계할 때 사용합니다.

예시

BooleanObs.png

구성

"nutritionProgram": {
"name": "Nutrition Program - <5 yrs Children receiving (Deworming)",
"type": "obsCount",  "config": {    "ageGroupName": "All Ages",    "conceptNames": ["Childhood Illness, Albendazole Given"]  }

}

BooleabObsCount.png

2. 코딩된 관찰 기준 코딩된 관찰(건수)

두 개의 코딩된 관찰을 집계하고 서로 교차하는 피벗 테이블로 표시하려면 사용합니다.

예시

CodedVsCoded.png

구성

"safeMotherhoodProgram": {
"name": "Safe Motherhood program - Type of delivery",  "type": "CodedObsByCodedObs",  "config": {    "ageGroupName": "All Ages",    "conceptPair": ["Delivery Note, Method of Delivery", "Delivery Note, Fetal Presentation"],    "rowsGroupBy": ["Delivery Note, Method of Delivery"],    "columnsGroupBy": ["Delivery Note, Fetal Presentation"]  }

}

codedObsByCodedObs.png

3. 진단 건수

Bahmni 시스템에 입력된 모든 진단의 건수를 나열합니다.

구성

"nameOfReport": {
"name": "Name of Report", "type": "diagnosisCount", // Mandatory. Value should be exactly diagnosisCount "config": { "dateRangeRequired": false, // Optional. Used to display reports that do not require a date range in a different section. Default true "applyDateRangeFor": "visitStopDate|diagnosisDate", // Optional. Default value = 'visitStopDate'. Valid only when dateRangeRequire=true "visitsToConsider": "open|closed|all", // Optional field. Default value = 'all' "ageGroupName": "age group name defined in reporting_age_group.report_group_name" //Optional "concept": "concept_set_name", // Mandatory. Three level concept set structure, with a root_concept, header_concepts and leaf_concepts "rowsGroupBy": ["gender|agegroup_name|header_concept_name|leaf_concept_name"], // Optional field but when rowsGroupBy is specified, columnsGroupBy should also be specified. Default value is ["header_concept_name", "leaf_concept_name]
"columnsGroupBy": ["gender|agegroup_name|header_concept_name|leaf_concept_name"], //Optional field but when rowsGroupBy is specified, columnsGroupBy should also be specified. Default value is ["agegroup_name"]

"icd10ConceptSource": "ICD10-BD", // Optional field. Default value = 'ICD 10 - WHO'. If any implementation is using a different concept source for diagnosis coding, it can be set here.

"locationTagNames":["Report Location"] // Optional field. If any location tag is provided, only the encounters associated with the locations with those tags are counted. If this parameter is not set, all the encounters would be counted.

}
}

현재 concept 필드를 지정하면 보고서에 ICD10 코드가 포함되지 않습니다. 진단 보고서가 작동하려면 ICD10 코드를 설정해야 하는지 아직 명확하지 않습니다. 결정되면 모든 보고서가 같은 규칙을 따릅니다.

연령 그룹은 OpenMRS 데이터베이스의 reporting_age_group 테이블에 존재해야 합니다.

예시

Diagnosis Summary report
"OralnDentalReport": {          "name": "Dental and Oral Report",          "type": "diagnosisCount",          "config": {             "concept": "Oral diagnosis",             "ageGroupName": "Age Groups",             "rowsGroupBy": ["header_concept_name","leaf_concept_name"],             "columnsGroupBy": ["gender","agegroup_name"]           } }
diagnosis count sample.png

연령 그룹 없는 진단 보고서

"OralnDentalReport1": { "name": "Dental and Oral Report 1", "type": "diagnosisCount", "config": { "locationTagNames":["Report Location"], "icd10ConceptSource":"ICD10-BD", "rowsGroupBy": [ "header_concept_name", "leaf_concept_name" ], "visitTypes":["IPD","OPD"], "columnsGroupBy": [ "gender", "agegroup_name" ] } },

DiagnosiswithoutAgegroup.png

연령 그룹 포함 진단 보고서

"OralnDentalReport2": { "name": "Dental and Oral Report 2", "type": "diagnosisCount", "config": { "locationTagNames":["Report Location"], "icd10ConceptSource":"ICD10-BD", "ageGroupName": "Registration", "rowsGroupBy": [ "header_concept_name", "leaf_concept_name" ], "visitTypes":["IPD","OPD"], "columnsGroupBy": [ "gender", "agegroup_name" ] } },

DiagnosiswithAgegroup.png

4. 검사 건수

모든 검사, 결과와 건수를 나열합니다.

구성

"name": "Malaria Control Programme - Diagnosis and Result [check for Microscopy= 'PBS for Malaria, Filaria parasite', RDT= SUM('Malaria Ags', 'Malaria Abs')]",    "type": "TestCount"

예시

testcount.png

6. 관찰 템플릿 보고서

지정 기간에 입력된 템플릿의 모든 필드와 값을 보여 주는 보고서입니다.

구성

"vitalsTemplateReport":{
        "name": "Vitals Template Report",
        "type": "obsTemplate",
        "config": {
            "templateName": "Vitals",
            "patientAttributes": ["caste", "education"],
			"locationTagNames": ["Report Location"],
            "applyDateRangeFor": "encounterCreateDate"
        }
    }

name: 보고서 이름

templateName: 보고서를 생성할 관찰 템플릿

patientAttributes: 보고서에서 환자별로 표시할 카스트, 교육 등의 환자 속성

applyDateRangeFor: 날짜 범위 필터를 적용할 기준으로 encounterCreateDate 또는 encounterDate 값을 받는 추가 매개변수입니다. 기본값은 encounterDate입니다.

OpenMRS에 “Report location” 위치 태그를 추가합니다.

구성에 예: "locationTagNames": ["Report Location"]로 위치 태그를 지정합니다.

예시

Vitals_Template_Report.png

7. OPD/IPD 방문 건수 보고서

지정한 기간의 신규/기존 OPD/IPD 환자 수를 나열합니다.

구성

"ipdOPd": {
"name": "OPD/IPD Visit Count",
"type": "IpdOpdVisitCount"

}

예:

opd-ipd-count.png

8. 숫자형 개념 값 보고서

지정한 연령 그룹에 대해 결과 값 범위별 숫자형 개념 관찰 건수를 나열합니다.

구성

"HaemoglobinRange": {
"name": "Haemoglobin Range Based Report
",
"type":
"NumericConceptValuesCount",
"config": {            "rangeGroupName": "Haemoglobin",            "ageGroupName": "Haemoglobin",            "conceptNames": ["Haemoglobin"],            "countOncePerPatient": false
}
}

"countOncePerPatient" 기본값은 false여야 합니다. 이 경우 관찰이 기록된 횟수만큼 집계합니다.

한 진료 사건 안에서는 관찰을 한 번만 집계하며, 같은 사건에서 관찰을 여러 번 변경해도 하나로 봅니다.

"countOncePerPatient"가 true이면 지정 날짜 범위에서 환자별 최신 관찰값만 집계합니다.

예:

numeric-concpet-values-report.png

9. 개념 클래스별 관찰 건수 보고서

지정한 날짜 범위에서 개념 클래스별 관찰 건수를 나열합니다.

구성

"radiologyCount": {
"name": "Radiology(X-Ray) Count",
"type": "ObsCountByConceptClass",
"config": {            "conceptClassNames": ["Radiology"]        }
}

예:

obsCountByConceptClass.png

10. 관찰 값 건수 보고서

지정한 개념 이름의 각 값별 관찰 건수를 나열합니다.

구성

"ObsValueCount": {
"name": "Obs Value Counts for Albumin, MCH, Surgery Date and Posture(blood pressure)",
"type": "ObsValueCount",
"config": {            "conceptNames": ["Albumin","MCH","Date of Surgery","Posture"]        }

}

예:

obsValueCount.png

11. 검사 결과가 있는 환자 보고서

지정한 검사 목록 및 결과 조건(비정상 및/또는 정상)에 따라 검사 결과와 함께 환자를 나열합니다.

구성

"patientsWithLabTest": {
"name": "Patients with labtest results for HIV ELISA, Albumin and MCH",
"type": "PatientsWithLabtestResults",
"config": {            "conceptNames": ["HIV ELISA (Blood)","Albumin","MCH"]
"testOutcome": ["abnormal","normal"]        }
}
patients_with_labtest_results.png

12. IPD 환자 보고서

IPD 환자 목록과 환자 정보, 확정 진단(여러 개면 쉼표 구분), 구성한 개념의 관찰값(여러 개면 쉼표 구분), 환자 속성 목록, 주소 속성 목록을 생성합니다.

구성

"ipdPatients": {   "name": "IPD Patients Report",   "type": "ipdPatients",   "config": {              "addressAttributes": ["address1", "city_village"],              "patientAttributes": ["caste", "education"],              "conceptNames": ["Height", "Weight"],
"locationTagNames": ["Report Location"],
"filterBy": "Date of Discharge"    }}

참고: addressAttributes는 항상 스네이크 표기법을 사용해야 합니다. 예: "cityVillage" 대신 "city_village".

날짜 범위는 "Date of Admission" 또는 "Date of Discharge"에 적용할 수 있습니다. "filterBy" 매개변수로 선택하며 미설정 시 기본값은 "Date of Admission"입니다.

  • OpenMRS에 “Report location” 위치 태그를 추가하고 구성에 위치 태그를 지정합니다. 예: "locationTagNames": ["Report Location” ]
IPD_Patients_Report.png

13. 방문 집계 건수 보고서

지정 날짜 범위에 발생한 입원·퇴원 건수를 방문 유형별로 생성합니다.

구성

"visitAggregateCount": {    "name": "Visit Aggregate Count Report",    "type": "VisitAggregateCount",    "config": {               "type": "VisitAggregateCountReport",
"locationTagNames": ["Report Location"],
"visitTypes": "'IPD','OPD','EMERGENCY'"    }}
  • OpenMRS에 “Report location” 위치 태그를 추가하고 구성에 위치 태그를 지정합니다. 예: "locationTagNames": ["Report Location” ]
visit_aggregate_count.png

14. 환자 프로그램 상태 건수 보고서

프로그램의 각 상태에 들어간 환자 수를 생성합니다.

참고: 프로그램에 상태가 없으면 빈 페이지가 열립니다. "programName"은 OpenMRS에 미리 구성된 프로그램이어야 합니다.

구성

"patientProgram": {    "name": "Patient Program State Count Report",    "type": "programStateCount",    "config": {               "programName": "Patient Overall Status"    }}

예: Patient Overall Status 프로그램을 만들고 ‘Attending Clinic’, ‘Transferred OutOf’, ‘Dead’라는 세 상태를 추가했습니다. 이 보고서는 각 상태에 들어간 환자 수를 보여 줍니다.

지정된 날짜 범위(예: "From 2015-08-01 to 2015-08-13") 내의 값을 집계합니다.

환자가 현재 다른 상태에 있어도 원래 상태가 날짜 범위 안에 있고 삭제되지 않았다면 해당 상태 건수에 포함합니다.

Screen Shot 2015-08-07 at 4.51.36 pm.png

15. 환자 프로그램 상태 전환 건수 보고서

프로그램 상태 전환을 겪은 환자 수를 생성합니다.

참고: 프로그램에 상태가 없으면 빈 페이지가 열립니다. "programName"은 OpenMRS에 미리 구성된 프로그램이어야 합니다.

구성

"malariaProgram": {    "name":"Malaria Program State Transition Report",    "type":"programStateTransitionReport",    "config":{        "programName":"Malaria Program"  }}

예: Malaria Program에 'First State', 'Second State', 'Third State'를 추가하면 상태 전환 환자 수를 표시합니다.

2015-08-02~2015-08-06 기간의 'First State'→'Second State' 및 'Second State'→'Third State' 전환을 집계합니다.

Screen Shot 2015-08-13 at 11.40.21 am.png

16. 환자 데이터 보고서

이 보고서는 다음 필드로 환자 상세 정보를 생성합니다.

- 환자 ID - 환자 이름 - 나이 - 성별 - 생년월일 - 주소 필드 - 환자 속성 - 등록일

참고: 날짜 범위를 지정하지 않으면 모든 환자 데이터를 반환합니다.

구성

"patientInformation": { "name": "Patient Information", "type": "PatientReport" }

Screen Shot 2015-08-10 at 11.00.49 am.png

17. 프로그램 환자 상태 보고서

다음 필드로 환자 상세 정보를 생성합니다.

- 일련번호 - 환자 식별자 - 환자 이름 - 환자 나이 - 프로그램 등록일 - 환자 상태 - 상태 시작일 - 상태 종료일 - 환자 프로그램 종료일 - 환자 결과

구성

"programPatientStateReport":{    "name": "Program Patient State Report",    "type": "PatientProgramReport",    "config": {        "programName": "Malaria Program" }},

18. 프로그램 등록 미리 정의 보고서

Screen Shot 2016-02-12 at 2.10.01 PM.png

구성

"programEnrollmentTemplateReport": {    "name": "Program Enrollments",  "type": "ProgramEnrollmentReport"}

19. 관찰 미리 정의 보고서

image2015-12-11 14:38:22.png

구성

"obsCannedReport": {    "name": "Obs Canned Report", "type": "obsCannedReport", "config": {      "patientAttributes": ["caste", "education"],  "applyDateRangeFor": "ObsRecording",  "addressAttributes": ["postal_code", "city_village"],  "conceptNames": ["WEIGHT","Pulse", "Systolic"],  "visitIndependentConcept": ["HEIGHT"],   "enrolledProgram" :"HIV Program" ,  "showObsOnlyForProgramDuration": false  }}
  • Patient Attributes: personattributetype.name 열에서 가능한 모든 값(예: {"HEIGHT","WEIGHT","Pulse"})입니다(필수). Apply Date Rage For: date 또는 datetime 유형의 "<tablename>.<columnname>"이며, 테이블은 [obs,encounter,patientidentifier,patientprogram,program,concept_view] 중 하나여야 합니다. patientidentifier와 patientprogram은 enrolledProgram이 구성에 명시된 경우에만 조인됩니다(필수). Values, ObsRecording, ProgramEnrollment. Addrress Attributes: person_addrress 테이블의 열 이름(필수). concept names: 최하위 개념 이름만 지원하며 개념 세트는 지원하지 않습니다(필수). visit independent concepts: 방문과 관계없이 가장 최근 관찰을 선택합니다. 최신 관찰이 있는 방문 외의 방문에서는 이 필드 값이 없습니다(필수). enrolled program: 프로그램 이름 하나만 지원합니다(선택 사항이며 필요 없으면 전체 구성 제거). show obs only for program duration: 지정한 프로그램 기간에 기록된 관찰만 필터링합니다(필수).

20. 약품 주문 보고서

지정 날짜 범위에 약물을 처방받은 환자 정보를 표시하며 환자 정보와 약물 정보로 구성됩니다.

구성:

"drugOrderReport":{        "name": "Drug Order report",        "type":"DrugOrder"}

21. 프로그램 관찰 템플릿 보고서

지정 기간에 입력된 템플릿의 모든 필드와 값을 보여 주는 보고서입니다.

구성

"vitalsTemplateReport":{
       "name": "Vitals Template Report",
       "type": "programObsTemplate",
       "config": {
           "templateName": "Vitals",
           "patientAttributes": ["caste", "education"],
           "programAttributes":[ "Doctor","Enrollment","Id","Treatment_Date"],
           "programNames": ["Malaria","Tuberculosis"],
		   "addressAttributes":["city", "state_province"]
	}
}

name: 보고서 이름

templateName: 보고서를 생성할 관찰 템플릿

patientAttributes: 보고서에서 환자별로 표시할 카스트, 교육 등의 환자 속성

programAttributes: 보고서에서 프로그램별로 표시할 의사, 치료일 등의 프로그램 속성

programNames: 관찰을 표시할 프로그램 이름 목록. 미지정 시 모든 프로그램의 관찰을 가져옵니다.

OpenMRS에 “Report location” 위치 태그를 추가합니다.

구성에 예: "locationTagNames": ["Report Location"]로 위치 태그를 지정합니다.

addressAttributes: 표시할 주소 속성 목록. 항상 snake case여야 합니다. 예: "cityVillage"가 아니라 "city_village".

예시

image2016-2-15 12:14:58.png

22. 프로그램별 약품 주문 보고서

지정 날짜 범위에서 활성 프로그램만 고려해 약물 처방과 활성 프로그램의 모든 데이터를 내보냅니다. 표시할 프로그램과 프로그램 속성을 구성할 수 있습니다.

사용 가능한 구성은 아래 코드 조각을 참조하십시오.

예:

image2016-2-24 11:54:58.png

사용자 정의 SQL

고객은 여러 지표를 분석하기 위해 시스템 데이터를 필요로 하지만 미리 정의된 보고서만으로는 한계가 있습니다. 따라서 Bahmni는 구현 담당자가 시스템에서 데이터를 추출할 SQL을 지정할 수 있는 사용자 정의 SQL 보고서를 제공합니다. 다만 완전한 OpenMRS 데이터 모델을 이해해야 하므로 어렵습니다. 이 문제를 해결하기 위해 일반 보고서가 도입되었습니다.

구성

"hospitalActivities": {
"name": "Hospital Activities - Number of Clients Served (New and Total)",    "type": "MRSGeneric",    "config": {      "sqlPath": "/var/www/bahmni_config/openmrs/reports/hmis/number_of_clients.sql"    }

}

MRSGeneric 유형은 SQL 쿼리가 OpenMRS에서 실행됨을 나타냅니다. ElisGeneric 유형은 SQL 쿼리가 OpenELIS에서 실행됨을 나타냅니다. 다음은 한 구현에서 사용한 사용자 정의 보고서의 예이며 참고 자료로 활용할 수 있습니다.관련 문서: The following&nbsp;

Jasper Reports(사용 중단됨)

일부 초기 Bahmni 구현에서는 이 기능을 사용했습니다. Bahmni는 Jasper Report 모듈에 연결할 수 있으며 구현 담당자가 Jasper를 설정하고 이를 사용해 양식과 SQL을 설계해야 합니다. 매우 오래된 방식이므로 새 사이트 구현에는 권장하지 않습니다.

일반 보고서

구현 담당자와 개발자 모두 Reports 모듈 사용에 어려움이 있습니다. 구현 담당자는 분석용 데이터를 추출하는 사용자 정의 SQL을 작성하려면 OpenMRS 데이터 모델을 알아야 합니다. 개발자는 미리 정의된 보고서를 만들고 유사한 보고서의 SQL을 복제해야 하므로 유지 관리 부담이 늘어납니다. 이는 커뮤니티 전체에 어려움을 줍니다.

따라서 Bahmni는 현재 Observations, Visits, Programs 등 OpenMRS의 여러 엔터티를 위한 일반 보고서를 제공합니다. 구현 담당자는 각 엔터티의 데이터를 추출할 수 있으며 Bahmni는 엔터티별 보고서를 제공합니다. 일반 보고서에서는 관련 필드를 포함하고 다양한 필터를 적용할 수 있습니다.

23. 방문 보고서

개선 사항 분석을 위해 방문 정보를 여러 방식으로 추출해야 할 때가 있습니다. 이 기능을 사용하면 구현 담당자가 방문에 필터를 적용하고 출력에 포함할 특정 필드 집합을 구성할 수 있습니다.

출력에는 기본적으로 다음 필드가 포함됩니다.

  • 환자 식별자. 환자 이름(이름 + 성). 나이. 생년월일. 성별. 환자 생성일. 방문 유형. 시작일. 종료일. 입원일. 퇴원일.

사용 가능한 구성은 아래 코드 조각을 참조하십시오.

Sample Config
"nameOfReport":{
    "name": "Report Name",
    "type": "visits",
    "config": {
        "forDataAnalysis": true,
        "patientAttributes": ["caste", "class", "education", "occupation", "primaryContact"],
        "visitAttributes": ["Visit Status", "Admission Status"],
        "patientAddresses": ["address3", "city_village"],
        "applyDateRangeFor": "visitStopDate",
        "visitTypesToFilter": ["PHARMACY VISIT", "OPD"],
		"excludeColumns": ["Patient Name"],
		"additionalPatientIdentifiers": ["National Id"],
		"ageGroupName":"Age group name"
    }
}
KeyDescriptionRequiredDefault
nameOfReportUnique key to identify the reportYes
nameReport name to be shown on reportYes
typeType of reportYesIt has to be "visits"
configIs the section to config what you need in the reportNo
forDataAnalysisIs to fetch the patient_id and visit_id in the reportNoFalse
patientAttributesIs to fetch patient attributes along with the mandatory fieldsNo
visitAttributesIs to fetch visit attributes along with the mandatory fieldsNo
patientAddressesIs to fetch patient address along with the mandatory fieldsNo
applyDateRangeForIs to configure the field which we have to apply the date range for (visitStopDate|visitStartDate)NovisitStartDate
visitTypesToFilterIs to filter the visits by its typeNoAll visit types
excludeColumnsIs to exclude the columns from output.NoDoesn't exclude any columns.
additionalPatientIdentifiersTo display additional identifiers in the reportNoDoesn't show additional patient identifiers
ageGroupNameName of the age group to show in reportAge group configurations can be inserted into the reference table "reporting_age_group"NoDoesn't show age group

예:

Screen Shot 2016-06-06 at 5.22.53 PM.png

24. 관찰 보고서

개선 사항 분석을 위해 관찰 정보를 여러 방식으로 추출해야 할 때가 있습니다. 이 기능을 사용하면 구현 담당자가 관찰에 필터를 적용하고 출력에 포함할 특정 필드 집합을 구성할 수 있습니다.

출력에는 기본적으로 다음 필드가 포함됩니다.

  • 환자 식별자, 환자 이름, 나이, 생년월일, 성별, 위치 이름
  • 개념 이름·관찰값·관찰 일시·상위 개념(encounterPerRow가 false일 때)
  • 프로그램 등록일, 프로그램 종료일, 환자 생성일

사용 가능한 구성은 아래 코드 조각을 참조하십시오.

Sample Config
"nameOfReport":{
    "name": "Report Name",
    "type": "observations",
    "config": {
        "patientAttributes": ["caste", "class", "education", "occupation", "primaryContact"],
        "patientAddresses": ["address3", "city_village"],
        "visitAttributes": ["Visit Status", "Admission Status"],
        "showVisitInfo": true,
        "showProvider": true,
		"programsToFilter": [],
        "conceptNamesToFilter": [],
        "conceptClassesToFilter": [],
        "locationTagsToFilter": ["Login Location"],
        "applyDateRangeFor": "obsDatetime",
        "encounterPerRow": false,
        "forDataAnalysis": true,
        "visitTypesToFilter": ["PHARMACY VISIT", "OPD"],
		"excludeColumns": ["Patient Name"],
		"additionalPatientIdentifiers": ["National Id"],
		"ignoreEmptyValues": false,
		"conceptNameDisplayFormat": "short",
		"ageGroupName":"Age group name"
    }
}
KeyPossible ValuesDescriptionRequiredDefault
nameOfReportAny stringUnique key to identify the reportYes
nameAny StringReport name to be shown on reportYes
typeType of the reportYes"It has to be observations"
configIs the section to configure what you need in the reportNo
patientAttributesAny patient attribute typesIs to fetch patient attributes along with the mandatory fieldsNo
patientAddressesAny patient address fieldsIs to fetch patient address along with the mandatory fieldsNo
visitAttributesAny visit attribute typesIs to fetch visit attributes along with the mandatory fieldsNo
showVisitInfotrue / falseIs to fetch visit information along with the mandatory fields. It fetches visit type, visit start date, visit stop date.NoFalse
showProvidertrue / falseIs to fetch provider of individual observation. NOTE: Since there will be different observation with different provider, Report doesn't show provider name if encounterPerRow is true.NoFalse
conceptNamesToFilterAny FULLY_SPECIFIED concept nameIs to filter observation by any concepts/template/forms. The name you specify should be FULLY_SPECIFIED concept nameYes/NoDefault will be All observation within date range if encounterPerRow is falseDefault will be No observations if encounterPerRow is true
conceptClassesToFilterAny concept classIs to filter observation by any concept classes like Drug, LabTest etc..Yes/NoDoesn't filter. Gives all observation of concepts configured of any class.
locationTagsToFilterAny location tagIs to filter observations by locations.NoAll location's data.
applyDateRangeForvisitStopDate / visitStartDate / programDatetime/ obsDatetimeIs to configure the field which we have to apply the date range for.&nbsp;NoobsDatetime
encounterPerRowtrue / falseIs to fetch one encounter per row. ConceptName will be column and value will be row. If you capture a concept multiple times in an encounter it will show comma separated.NoFalse
forDataAnalysistrue / falseIs to fetch database id's like patient_id, concept_id, observation_id etc.. for analysis purpose.NoFalse
programsToFilterany program nameis to filter observations by programsNo
visitTypesToFilterany visit typeIs to filter the visits by its typeNoAll visit types
excludeColumnsany column namesIs to exclude the columns from output.NoDoesn't exclude any columns.
additionalPatientIdentifiersAny additional patient identifier typesTo display additional identifiers in the reportNoDoesn't display additional patient identifiers
ignoreEmptyValuestrue/falseTo ignore rows with empty observation value.This config is not applicable when encounterPerRow is trueNoFalse
conceptNameDisplayFormatshort / fully_specifiedDisplay format of concept name on the report.NOTE: This option is currently only available for generic observation reportNofully_specified(short)
ageGroupNameAny age group nameName of the age group to show in reportNodoesn't show age group

예:

행마다 하나의 관찰을 표시하는 보고서 예입니다.

Screen Shot 2016-05-11 at 5.22.23 PM.png

행마다 하나의 진료를 표시하는 보고서 예입니다.

Screen Shot 2016-05-11 at 5.23.05 PM.png

모든 기본 필드를 포함하는 보고서 예입니다.

image2016-6-8 16:28:12.png

25. 프로그램 보고서

개선 사항 분석을 위해 프로그램 정보를 여러 방식으로 추출해야 할 때가 있습니다. 이 기능을 사용하면 구현 담당자가 프로그램에 필터를 적용하고 출력에 포함할 특정 필드 집합을 구성할 수 있습니다.

출력에는 기본적으로 다음 필드가 포함됩니다.

  • 환자 식별자, 환자 이름, 나이, 생년월일, 성별, 환자 생성일, 프로그램 이름, 등록일, 완료일, 현재 상태

사용 가능한 구성은 아래 코드 조각을 참조하십시오.

Sample Config
"nameOfReport":{
    "name": "Report Name",
    "type": "programs",
    "config": {
        "patientAttributes": ["caste", "class", "education", "occupation", "primaryContact"],
        "patientAddresses": ["address3", "city_village"],
        "programAttributes": ["Visit Status", "Admission Status"],
        "programNamesToFilter": [],
		"showAllStates": true,
        "forDataAnalysis": true,
		"excludeColumns": ["Patient Name"],
		"additionalPatientIdentifiers": ["National Id"],
		"ageGroupName":"Age group name"
    }
}
KeyPossible ValuesDescriptionRequiredDefault
nameOfReportAny stringUnique key to identify the reportYes
nameAny StringReport name to be shown on reportYes
type&nbsp;"programs"Type of the reportYes"It has to be programs"
configIs the section to configure what you need in the reportNo
patientAttributesAny patient attribute typesIsto fetch patient attributes along with the mandatory fieldsNoNone&nbsp;
patientAddressesAny patient address fieldsIs to fetch patient address along with the mandatory fieldsNoNone
programAttributesAny program attribute typesIs to fetch program attributes along with the mandatory fieldsNoNone
programNamesToFilterArray of program namesIs to filter by programsNoAll programs
forDataAnalysistrue / falseIs to fetch database id's like patient_id, program_id etc.. for analysis purpose.NoFalse
showAllStatestrue / falseIs to show all the states of the programNoFalse
excludeColumnsAny columnIs to exclude the columns from output.NoDoesn't exclude any columns.
additionalPatientIdentifiersAny additional patient identifier typeTo display additional identifiers in the reportNoDoesn't display any additional patient identifier
ageGroupNameAny age group nameName of the age group to show in reportNodoesn't show age group

예:

Screen Shot 2016-05-23 at 6.41.32 PM.png

26. 일반 보고서 집계

관찰 보고서 같은 엔터티 기반 일반 보고서로 데이터를 Excel에 추출하고 매크로를 적용해 통계를 얻을 수 있습니다. 이 기능은 매크로를 작성하는 대신 구성에 피벗 정보를 지정하여 필요한 출력을 만들 수 있는 유연성을 제공합니다.

구성 예는 아래 코드 조각을 참조하십시오.

Sample Config
{
   "nameOfReport": {
       "name": "Blood Pressure",
       "type": "aggregation",
       "config": {
           "report":{
               "type": "observations",
               "config": {
                   "conceptNamesToFilter":["Diastolic Data", "Systolic Data"],
                   "showVisitInfo" : true,
                   "forDataAnalysis": true,
                   "visitAttributes": ["Visit Status", "Admission Status"],
                    "visitTypesToFilter": ["IPD"]
               }
           },
           "rowGroups": [
               "Gender"
           ],
           "columnGroups": [
               "Concept Name", "value"
           ],
           "distinctGroups": [
               "Patient Identifier"
           ],
			"showTotalRow":true,
			"showTotalColumn":true
       }
   }
}
KeyPossible ValuesDescriptionRequiredDefault
nameOfReportAny stringUnique key to identify the reportYes
nameAny StringReport name to be shown on reportYes
type&nbsp;"aggregation"Type of the reportYes"It has to be aggregation"
configIs the section to configure what you need in the reportYes
reportAny existing generic reports(Ex: observations)Is to apply aggregation on that particular report. The config under report option refers to generic report config. If it is observations then config values from observations report will be used here.YesNone&nbsp;
rowGroupsAny column name in the report on which we are doing aggregationIs to include columns to group for rowsYesNone
columnGroupsAny column name in the report on which we are doing aggregationIs to include columns to group for columnsNoNone
distinctGroupsAny column name in the report on which we are doing aggregationIs to do distinct count on given column after grouping rows and columnsYesNone
showTotalRowtrue / falseShows the Total row at the bottom of tableNofalse
showTotalColumntrue / falseShow the Total Column as last column of tableNofalse

예:

image2016-6-20 18:28:18.png

사용자가 위 관찰에 대한 집계를 생성하면 예제 구성에 따라 다음 결과가 만들어집니다. rowGroups를 Gender로, columnGroups를 Concept Name과 Value로 정의했으므로 이완기 및 수축기 값별 남녀 수를 보여 줍니다. distinct Group에 지정된 Patient Identifier를 기준으로 건수를 계산합니다.

image2016-6-20 18:29:9.png

27. 여러 보고서 연결

여러 보고서를 하나로 연결할 수 있습니다. 연결된 보고서는 CSV 형식을 지원하지 않습니다.

구성 예는 아래 코드 조각을 참조하십시오.

KeyPossible ValuesDescriptionRequiredDefault
nameOfReportAny stringUnique key to identify the reportYes
nameAny StringReport name to be shown on reportYes
type&nbsp;"concatenated"Type of the reportYes"It has to be concatenated"
configIs the section to configure all the reports that you want in one report file. Please refer to the individual report description above for configuring themYes

예:

Visit Report와 Obs Canned Report를 연결하면 Excel의 서로 다른 시트에서 각 보고서를 볼 수 있습니다. PDF, HTML 등의 형식에서는 보고서가 위아래로 이어집니다.

Screen Shot 2016-07-08 at 6.06.34 PM.png

28. 검사 결과 보고서

개선 사항 분석을 위해 검사 결과 정보를 여러 방식으로 추출해야 할 때가 있습니다. 이 기능을 사용하면 구현 담당자가 검사 결과에 필터를 적용하고 출력에 포함할 특정 필드 집합을 구성할 수 있습니다.

출력에는 기본적으로 다음 필드가 포함됩니다.

  • 환자 식별자. 환자 이름(이름 + 성). 나이. 생년월일. 성별. 검사 주문일. 검사 이름. 검사 결과. 결과 판정. 결과 최솟값 범위. 결과 최댓값 범위.

사용 가능한 구성은 아래 코드 조각을 참조하십시오.

Sample Config
"nameOfReport":{
    "name": "Report Name",
    "type": "labOrders",
    "config": {
        "patientAttributes": ["caste", "class", "education", "occupation", "primaryContact"],
        "patientAddresses": ["address3", "city_village"],
        "visitAttributes": ["Visit Status", "Admission Status"],
        "showVisitInfo": true,
        "showProvider": true,
		"programsToFilter": [],
        "conceptNamesToFilter": [],
        "conceptValuesToFilter": [],
        "forDataAnalysis": true,
		"excludeColumns": ["Patient Name"],
		"showOrderDateTime": true,
		"additionalPatientIdentifiers": ["National Id"],
		"ageGroupName":"Age group name"
    }
}
KeyPossible ValuesDescriptionRequiredDefault
nameOfReportAny stringUnique key to identify the reportYes
nameAny StringReport name to be shown on reportYes
typeType of the reportYes"It has to be labOrders"
configIs the section to configure what you need in the reportNo
patientAttributesAny patient attribute typesIs to fetch patient attributes along with the mandatory fieldsNo
patientAddressesAny patient address fieldsIs to fetch patient address along with the mandatory fieldsNo
visitAttributesAny visit attribute typesIs to fetch visit attributes along with the mandatory fieldsNo
showVisitInfotrue / falseIs to fetch visit information along with the mandatory fields. It fetches visit type, visit start date, visit stop date.NoFalse
showProvidertrue / falseIs to fetch provider of individual lab result.NoFalse
conceptNamesToFilterAny FULLY_SPECIFIED concept name of a lab testIs to filter lab results by any test name. The name you specify should be FULLY_SPECIFIED concept nameNoDefault will be all lab results within date range the report is run on
conceptValuesToFilterAny test result value or numeric rangesIs to filter lab results by any test result value or numeric ranges.Format for numeric ranges :"10..100" - Specifies a range from 10 to 100 inclusive"..100" - Specifies the maximum value 100 inclusive"10.." - Specifies the minimum value 10 inclusiveNo
forDataAnalysistrue / falseIs to fetch database id's like patient_id, concept_id, observation_id etc.. for analysis purpose.NoFalse
programsToFilterany program nameis to filter lab results by programsNo
excludeColumnsany column names in the reportIs to exclude the columns from outputNoDoesn't exclude any columns.
showOrderDateTimetrue / falseShow full order creation date time in the databaseNoFalse
additionalPatientIdentifiersAny additional patient identifier typeTo display additional identifiers in the reportNoDoesn't dispaly any additional patient identifier
ageGroupNameAny age group nameName of the age group to show in reportNodoesn't show age group

예:

Screen Shot 2016-08-03 at 7.11.55 PM.png

매크로가 포함된 기존 통합 문서 템플릿에 생성된 보고서 삽입

Bahmni에서는 보고서가 내보낸 데이터를, 생성 데이터로 피벗 테이블을 만드는 수식이 포함된 기존 통합 문서 템플릿에 삽입할 수 있습니다. 통합 문서 템플릿은 .xls 형식이어야 합니다.

Home > Reports 화면에서 보고서를 생성할 수 있습니다. 템플릿 수식을 데이터에 적용하려면 형식으로 ‘CUSTOM EXCEL’을 선택하고 필요한 Excel 수식 템플릿을 업로드한 다음 ‘Run Report’를 클릭합니다. 실제 데이터는 ‘Report’ 시트에, 템플릿 수식으로 생성한 데이터는 ‘Sheet1’에 포함됩니다. 보고서마다 업로드하지 않도록 매크로 파일을 구성하는 방법은 아래를 참조하십시오.관련 문서: below

매크로가 포함된 Excel 템플릿을 사용할 수 있습니다. 템플릿의 ‘Sheet1’에 수식을 추가한 후 업로드하여 보고서를 생성할 수 있습니다. 생성된 Excel 보고서를 열면 다음과 같이 동작합니다.관련 문서: template.xls

위 Excel 템플릿에 포함된 매크로가 실제 데이터에 수식을 적용합니다. 따라서 생성된 Excel 보고서를 열 때 ‘Enable macros’를 선택해야 합니다.

수식 예시: =SUM(Report!G9, Report!G10) - 'Report' 시트에는 수식을 적용하지 않은 원시 데이터가 포함됩니다.

참고: 다른 템플릿에 수식을 추가하여 보고서를 생성하면 작동하지 않습니다. 반드시 위에 링크된 템플릿만 사용하십시오.

보고서 생성 시 매번 파일을 업로드하지 않도록 bahmni_config에 macroTemplate xls 파일 구성

구성 절차:

  1. 매크로 수식이 포함된 xls(Microsoft 1997-2000) 파일을 bahmni_config에 복사합니다. report.json에서 아래와 같이 bahmni_config의 xls 파일 경로를 구성합니다. xml
"diabetes":{
        "name": "Diabetes",
        "type": "obsCount",
        "config": {
            "ageGroupName": "All Ages",
            "conceptNames": ["Diabetes, Intake"],
            "visitTypes": ["OPD","IPD"],
            "macroTemplatePath" : "/var/www/bahmni_config/openmrs/apps/reports/macroTemplates/Diabetes.xls"
        }
    },
원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗