Best approach for having Patient ID card in OpenMRS 2x and RefApp 2x

@dkayiwa: Which version of tomcat do you use in test servers?

We use tomcat 7

@dkayiwa: what is the minor version?

I faced another issue with XReports

SEVERE [http-nio-8080-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [module_servlet] in context with path [/openmrs] threw exception [Servlet execution threw an exception] with root cause java.lang.NoClassDefFoundError: org/openmrs/module/reporting/dataset/definition/DataExportDataSetDefinition

I checked your github commits (Fixing NoClassDefFoundError - DataExportDataSetDefinition) and I found that you have already fixed it in v1.6 but it is released in Modules.

I failed to log in at modulus. You can download it from jfrog at

Remember to rename the downloaded file to xreports-1.6.omod before installing.

How can i have a dedicated link for ID card in Patient dashboard. When i click, it should directly open the Patient ID Card in PDF format and also i should have patient summary link which will print a report with detailed information about patient.

Go to the settings page as here: and set the value of the reportId for “Patient Summary Report Id” You can copy the reportId value from the url for the manage reports page as here:

I have also just uploaded the module to modulus. This time i was able to login.

Thank you @dkayiwa. With XReport v1.6, I can design the report without any problem.

If I set the reportId of any report for “Patient Summary Report Id”, then that report will be desplayed when i click on “Patient Summary”.

But I want to keep the existing “Patient Summary” as it is and add a new menu item/link for “Patient ID Card” just above the “Patient Summary”.

Do you want to print this for a group of patients? Or for one patient at a time?

For one patient at a time. So the link to print the ID should be in patient dashboard.

Here I have created a sample of Patient ID card (It may help another implementor to do less work to desing)

Data Set Definition (SQL Query)

SELECT GROUP_CONCAT(patient_identifier.identifier SEPARATOR ‘,’), (SELECT identifier FROM patient_identifier WHERE patient_identifier.patient_id = person.person_id AND identifier_type=1 AND voided=0 AND preferred=1) AS identifier1, (SELECT identifier FROM patient_identifier WHERE patient_identifier.patient_id = person.person_id AND identifier_type=2 AND voided=0 AND preferred=1) AS identifier2, (SELECT identifier FROM patient_identifier WHERE patient_identifier.patient_id = person.person_id AND identifier_type=3 AND voided=0 AND preferred=1) AS identifier3, DATE(person.date_created) AS register_date, given_name, family_name, birthdate, gender FROM person, person_name, patient_identifier WHERE person.person_id = 7 AND person.person_id=person_name.person_id AND person.person_id=patient_identifier.patient_id AND person.voided=0 AND person_name.voided=0 AND patient_identifier.voided=0 AND person_name.preferred=1 AND patient_identifier.preferred=1 AND patient_identifier.identifier_type=3 LIMIT 1;

XReport Patient-ID-Card.xml.txt (3.9 KB)

@hpardess i have updated the documentation at with how to add more custom reports to the patient dashboard. You can see it in action on this page where the Patient Summary report is different from the ID Card one.

You will need to use version 1.7 of the module which you can get from this download url:

After downloading , you will need to rename the file “xreports-omod-1.7.jar” to “xreports-1.7.omod” before you can install it.

By the way, i like your desire to share what you have done with other implementers. Please keep it up. :smile:

Thank you so much @dkayiwa .

Thanks for a very useful thread. Have you considered including a barcode on the id card?

@mafrica was that meant for @hpardess?

@dkayiwa: I did not understand bellow line in wiki:

To display more reports on the patient dashboard, for each report you would like to display, go under manage reports and give it an extension like below:

where is manage reports? i found one option in Reports>Manage Reports but i do not think you mean this place.

Go to home -> XReports -> Manage Reports -> Then choose a report.

Thanks were for all contributors and the query was also intended for anyone that could help.

At the risk of overburdening this thread. I have recently learned that there is a true type font that willproduce a code 39 barcode. I can now generate adequate barcodes easily in most text editors.

I got my font from

I would like to have tried this using xreports but have not as yet been able to find any documentation on what governs the available fonts (Arial, Verdana etc). Can you advise if it is possible to add this font?

@mafrica can you send me those fonts and i try them out locally?

@mafrica for how to register custom fonts, take a look at the Font Family property on this page:

You would need to use version 1.8 of the module which you can download from: Rename the file from “xreports-omod-1.8.jar” to “xreports-1.8.omod” before you can update the module.

Thanks so much for this.

I have installed xreports-1.8.omod and set the xreports.pdf.fonts property as in the jpg, but unfortunately the font family (code39) is not detected when applying the widget property to a label. Could it be that the colon in the windows path is confusing?