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

Release Version 0.85

Purpose and Benefits

Canned and Custom Reports have their limitations. An implementer needs to know the OpenMRS data model and Custom SQL to extract the data for custom reports. In response to customer requests, developers have to repeatedly create canned reports and duplicate the SQL from a similar report, thus increasing the maintenance. This makes them complex and cumbersome.

To solve this, Bahmni has introduced generic reports for various entities in OpenMRS, for example: Observations, Visits and Programs etc. Generic reports allow an implementer to extract data from the system for each entity, hence Bahmni has a report for each. Generic reports provide options to include related fields and to apply various filters.

Types of Generic Reports

1. Visits Report

This feature allows the implementer to configure a customer-specific way to extract visit information. Using this report, filter(s) can be applied and a specific set of fields can be configured to appear in the output.

The following fields appear by default in the output.

  • Patient Identifier
  • Patient Name (First Name + Last Name)
  • Age
  • Birthdate
  • Gender
  • Patient Created Date
  • Visit type
  • Date started
  • Date stopped
  • Date Of Admission
  • Date Of Discharge
  • New patient visit (When patient created and visit started same day then that visit considered)
KeyDescriptionRequiredDefault
nameOfReportUnique key to identify the reportYes
nameReport name to be shown on reportYes
typeType of reportYesIt has to be "visits"
configThe section to configure what is needed in the reportNo
forDataAnalysisFetches the patient_id and visit_id in the reportNoFalse
patientAttributesFetches patient attributes along with the mandatory fieldsNo
visitAttributesFetches visit attributes along with the mandatory fieldsNo
patientAddressesFetches patient address along with the mandatory fieldsNo
applyDateRangeForConfigures the field which we have to apply the date range for (visitStopDate | visitStartDate | dateOfAdmission | dateOfDischarge)NovisitStartDate
visitTypesToFilterFilters the visits by its typeNoAll visit types
excludeColumnsExcludes the columns from output.NoIncludes all columns.
additionalPatientIdentifiersDisplays additional identifiers in the reportNoNo additional patient identifiers
ageGroupNameName of the age group to show in report. Age group configurations can be inserted into the reference table "reporting_age_group"NoNo age group
Screen Shot 2016-06-06 at 5.22.53 PM.png

Sample Report

2. Observations Report

This feature allows the implementer to configure a way to extract observation information. Using this report, filter(s) can be applied and a specific set of fields can be configured to appear in the output.

The following fields appear by default in the output.

  • Patient Identifier
  • Patient Name (First Name + Last Name)
  • Age
  • Birthdate
  • Gender
  • Location Name
  • Concept Name (If encounterPerRow is false)
  • Observation Value (If encounterPerRow is false)
  • Observation datetime (If encounterPerRow is false)
  • Parent Concept (If encounterPerRow is false)
  • Program Enrollment Date
  • Program End Date
  • Patient Created Date
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"
configThe section to configure what you need in the reportNo
patientAttributesAny patient attribute typesFetches patient attributes and mandatory fieldsNo
patientAddressesAny patient address fieldsFetches patient address and mandatory fieldsNo
visitAttributesAny visit attribute typesFetches visit attributes and mandatory fieldsNo
showVisitInfotrue / falseFetches visit information and mandatory fields. It fetches visit type, visit start date, visit stop date.NoFalse
showProvidertrue / falseFetches providers of individual observation.NOTE: Report doesn't show provider name if encounterPerRow is true.NoFalse
conceptNamesToFilterAny FULLY_SPECIFIED concept nameFilters observation by any concepts/template/forms. It should be a FULLY_SPECIFIED concept nameYes/NoAll observations within date range if encounterPerRow is falseNo observations if encounterPerRow is true
conceptValuesToFilterAny valueFilters observation by any values like coded, range, text. (“underWeight”, “Normal”, “10..100”, “..100”). Format for numeric ranges :- "10..100": A range from 10 to 100 inclusive- "..100": Maximum value 100 inclusive- "10.." Minimum value of 10 inclusiveYes/NoAll observations within date range if encounterPerRow is falseNo observations if encounterPerRow is true
conceptClassesToFilterAny concept classFilters observation by any concept classes like Drug, LabTest etc..Yes/NoDoesn't filter. Gives all observation of concepts configured of any class.
locationTagsToFilterAny location tagFilters observations by locations.NoAll locations' data.
applyDateRangeForvisitStopDate /visitStartDate /programDate /obsCreatedDate / obsDateConfigures the field which we have to apply the date range for. NoobsDate
encounterPerRowtrue / falseFetches one encounter per row. ConceptName will be column and value will be row. If a concept is captured multiple times in an encounter it will appear comma separated.NoFalse
forDataAnalysistrue / falseFetches database ids like patient_id, concept_id, observation_id etc. for purpose of analysis.NoFalse
programsToFilterany program nameFilters observations by programsNo
visitTypesToFilterany visit typeFilters the visits by its typeNoAll visit types
excludeColumnsany column namesExcludes the columns from output.NoDoesn't exclude any columns.
additionalPatientIdentifiersAny additional patient identifier typeDisplays additional identifiers in the reportNoDoesn't display additional patient identifiers
ignoreEmptyValuestrue / falseIgnores rows with no observation value. This config is not applicable when encounterPerRow is trueNofalse
conceptNameDisplayFormatshortNamePreferred/fullySpecifiedName/fullySpecifiedName (shortName)Displays the format of concept name on the report. shortNamePreferred displays the Concept Short Name if available, else the Fully Specified Name. Note: This option is currently only available for generic observation reports.NofullySpecifiedName(shortName)
ageGroupNameName of age groupAge group to be displayed in the reportNoDoesn't show age group
Screen Shot 2016-05-11 at 5.22.23 PM.png

Report with one observation per row

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

Report with one encounter per row

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

Report with all the default fields

3. Programs Report

This feature allows the implementer to extract program information in a variety of ways. Using this report, filter(s) can be applied and a specific set of fields can be configured to appear in the output.

The following fields appear by default in the output.

  • Patient Identifier
  • Patient Name (First Name + Last Name)
  • Age
  • Birthdate
  • Gender
  • Patient Created Date
  • Program Name
  • Date Enrolled
  • Date Completed
  • Current State
KeyPossible ValuesDescriptionRequiredDefault
nameOfReportAny stringUnique key to identify the reportYes
nameAny StringReport name to be shown on reportYes
type "programs"Type of the reportYes"It has to be programs"
configConfigure what is required in the reportNo
patientAttributesPatient Attribute TypeFetches patient attributes and mandatory fieldsNoNone 
patientAddressesPatient address fieldsFetches patient address and mandatory fieldsNoNone
programAttributesProgram attribute typeFetches program attributes and mandatory fieldsNoNone
programNamesToFilterArray of program namesFilters by programsNoAll programs
forDataAnalysistrue / falseFetches database ids like patient_id, program_id etc. for purpose of analysis.NoFalse
showAllStatestrue / falseShows all the states of the programNoFalse
excludeColumnsAny columnExcludes the columns from output.NoDoesn't exclude any columns.
additionalPatientIdentifiersAny additional patient identifier typeDisplays 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

4. Aggregation on generic reports

There are entity-based generic reports, for example, the observations report which extracts data from observations into excel where further macros can be applied. However this report gives the flexibility of providing pivot information in the configuration itself, instead of writing macros that will produce the required output.

KeyPossible ValuesDescriptionRequiredDefault
nameOfReportAny stringUnique key to identify the reportYes
nameAny StringReport name to be shown on reportYes
type "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 
rowGroupsAny column name in the report on which we are doing aggregationIncludes columns to group for rowsYesNone
columnGroupsAny column name in the report on which we are doing aggregationIncludes columns to group for columnsNoNone
distinctGroupsAny column name in the report on which we are doing aggregationPerforms a 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

To generate aggregation for the above observations, use the sample config to produce the following output. This reports shows the number of males and females based on their diastolic and systolic values as we defined rowGroups as Gender and columnGroups as Concept Name and Value. The count is based on Patient Identifier which is specified in the distinct Group.

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

5. Concatenating Multiple Reports

This feature concatenates multiple reports. Concatenated reports do not support CSV format.

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

Example: A concatenated report of Visit Report and Obs Canned Report, will display each report on a different sheet in Excel. For other formats like PDF, HTML, etc., reports will be one below the other.

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

6. Lab Results Report

This feature allows the implementer to configure lab results information in a variety of ways. Using this report, filter(s) can be applied and a specific set of fields can be configured to appear in the output.

The following fields appear by default in the output:

  • Patient Identifier
  • Patient Name (First Name + Last Name)
  • Age
  • Birthdate
  • Gender
  • Test Order Date
  • Test Name
  • Test Result
  • Test Outcome
  • Test Result Min range
  • Test Result Max range
  • Referred Out
  • File Uploaded
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"
configConfigure what is required in the reportNo
patientAttributesPatient attribute typesFetches patient attributes and mandatory fieldsNo
patientAddressesPatient address fieldsFetches patient address and mandatory fieldsNo
visitAttributesVisit attribute typeFetches visit attributes and mandatory fieldsNo
showVisitInfotrue / falseFetches visit information and mandatory fields. It fetches visit type, visit start date, visit stop date.NoFalse
showProvidertrue / falseFetches provider of individual lab result.NoFalse
conceptNamesToFilterFULLY_SPECIFIED concept name of a lab testFilters lab results by any test name. The name you specify should be a FULLY_SPECIFIED concept name.NoAll lab results within specified date range
conceptValuesToFilterAny test result value or numeric rangesFetches lab results by any test result value or numeric ranges. Format for numeric ranges:- "10..100": A range from 10 to 100 inclusive- "..100": Maximum value 100 inclusive- "10.." Minimum value of 10 inclusiveNo
forDataAnalysistrue / falseFetches database ids like patient_id, concept_id, observation_id etc.NoFalse
programsToFilterany program nameFilters lab results by programsNo
excludeColumnsany column names in the reportExcludes the columns from outputNoDoesn't exclude any columns.
showOrderDateTimetrue / falseShows order creation date time in the databaseNoFalse
additionalPatientIdentifiersAdditional patient identifier typeDisplays additional identifiers in the reportNoNo additional patient identifier
ageGroupNameAny age group nameName of the age group to show in reportNoNo age group
showReferredOutTeststrue / falseFilters out referred out tests based on the valueNotrue
Screen Shot 2016-09-07 at 12.35.05 PM.png
원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗