Wiki Spaces

Documentation
Projects
Resources

Get Help from Others

Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack

Documentation

Page tree
Skip to end of metadata
Go to start of metadata

What this module does

This adds the ability to scheduling patients for appointments then manage their flow through a clinic once they arrive for appointments. In simple terms, the module allows implementations to do the following:

    1. Create a schedule of when providers are available to see patients
    2. Schedule appointments for patients based on provider schedule
    3. Manage the patient queue through the clinic when the patients arrive for their appointments.

Documentation / How-To

Adding appointments on this module can be confusing for first time users of this module as it's not straightforward. So, to help you get started using this module, here are the steps you need to take in order to add an appointment -

  1. Inside Appointment Scheduling Module, click on Manage Provider Schedules. You should see a calendar. 
  2. Click on a date, select a location, add a provider (optional), select service type, start time and end time for the appointment. Save your entry. It should now be visible on the calendar when you have the right location selected.
  3. On the module home page, click on Manage Appointments and search for the patient whose appointment you want to add.
  4. After clicking on the patient's info, under Schedule a New Appointment, select the service type that you previously added appointment for and search.
  5. Select your appointment and save.


In January 2015, a demo was given on the OpenMRS Developers call showcasing the latest features of the module. Links to a recording of that call can be found here:

2015-01-08 Developers Forum


Below an OpenMRS University how-to on YouTube (below) that explains how to use an earlier version of the module. This video explains the basics of the module from version 0.2.


Capabilities

The Appointment Scheduling Module uses OpenMRS's User Capabilities to control access to the module for individual users.  These capabilities can be modified under System Administration → Manage Accounts.

By default, Admin users will have all available capabilities. Many capabilities provided by OpenMRS do not affect the Appointment Scheduling Module. Below you will find a list of all capabilities which affect

access to this module, and the functionality they provide to the user.


The following capabilities provide access to the associated pages inside the module - 

CapabilitiesPages
Schedules Appointments
  • Manage Appointments
  • Daily Appointments
  • Appointment Requests

Configures Appointment Scheduling

  • Manage Service Types
 Manages Provider Schedules
  • Manage Provider Schedule 
Schedules and Overbooks Appointments
  • Manage Appointments
  • Daily Appointments
  • Appointment Requests
Sees Appointment Schedule
  • Manage Appointments
  • Daily Appointments


Here's a brief description of what each page does:

PageFunction
 Manage Service TypesView, add, edit and remove types of services that are provided in an appointment. 
Manage Provider ScheduleView, add, edit and delete appointment blocks of providers.
 Manage AppointmentsSearch for a patient by ID or name and add or remove appointment(s) for him/her.
 Daily AppointmentsView scheduled appointment for the specified date and location. 
 Appointment RequestsAccept appointment requests made by others. 


Requirements

  • OpenMRS 1.9 with visits enabled

Downloads

https://addons.openmrs.org/#/show/org.openmrs.module.appointmentscheduling

Screenshots

Manage Service TypesManage Provider SchedulesManage AppointmentsDaily AppointmentsDaily Appointments - Scheduling New AppointmentsDaily Appointments - Viewing Scheduled AppointmentsAppointment Requests

Release Notes

About

This module was developed by Ben Gurion University of the Negev students Tobin Greensweig (medicine), Yonatan Grinberg, and Adam Lauz (both Information Systems Engineering) in collaboration with MigrantHealth:IL and the Tel Aviv Refugee Clinic. The OpenMRS community contributed to the design and early development. The module was built based on the specifications and input from all parties involved so we hope it will be generalizable and usable by many organizations!

If you have any questions or would like to contribute to the project, please don't hesitate to ask!

The OpenMRS Project page:  Appointment Module

  • No labels

9 Comments

  1. If you are upgrading from v0.2: First delete the module, then run this SQL script, then reinstall the v0.3 or later.

    ALTER TABLE appointment RENAME TO appointmentscheduling_appointment;
    ALTER TABLE appointment_block RENAME TO appointmentscheduling_appointment_block;
    ALTER TABLE appointment_block_type_map RENAME TO appointmentscheduling_block_type_map;
    ALTER TABLE appointment_status_history RENAME TO appointmentscheduling_appointment_status_history;
    ALTER TABLE appointment_type RENAME TO appointmentscheduling_appointment_type;
    ALTER TABLE appointment_time_slot RENAME TO appointmentscheduling_time_slot;

    DELETE FROM `openmrs`.`liquibasechangelog` WHERE `ID`='10000000-1000-appointment-appointment' and`AUTHOR`='yony258' and`FILENAME`='liquibase.xml';
    DELETE FROM `openmrs`.`liquibasechangelog` WHERE `ID`='10000000-1000-appointment-block' and`AUTHOR`='yony258' and`FILENAME`='liquibase.xml';
    DELETE FROM `openmrs`.`liquibasechangelog` WHERE `ID`='10000000-1000-appointment-block-type-map' and`AUTHOR`='dkayiwa' and`FILENAME`='liquibase.xml';
    DELETE FROM `openmrs`.`liquibasechangelog` WHERE `ID`='10000000-1000-appointment-status' and`AUTHOR`='yony258' and`FILENAME`='liquibase.xml';
    DELETE FROM `openmrs`.`liquibasechangelog` WHERE `ID`='10000000-1000-appointment-time-slot' and`AUTHOR`='yony258' and`FILENAME`='liquibase.xml';
    DELETE FROM `openmrs`.`liquibasechangelog` WHERE `ID`='10000000-1000-appointment-type' and`AUTHOR`='dkayiwa' and`FILENAME`='liquibase.xml';

    DELETE FROM `openmrs`.`global_property` WHERE `property`='appointment.started';
    DELETE FROM `openmrs`.`global_property` WHERE `property`='appointment.mandatory';
    DELETE FROM `openmrs`.`global_property` WHERE `property`='appointment.phoneNumberPersonAttributeTypeId';
    DELETE FROM `openmrs`.`global_property` WHERE `property`='appointment.defaultTimeSlotDuration';
    DELETE FROM `openmrs`.`global_property` WHERE `property`='appointment.manageAppointmentsFormTimout';
    DELETE FROM `openmrs`.`global_property` WHERE `property`='appointment.defaultVisitType';

  2. Tobin, is there where i need to make some further configurations for Appointment scheduling module.. For the visit type.

    1. The configuration of the module is done on the "Settings" page that can be found on the administration page in OpenMRS. The appointment types (different from visit types) are configured from the Appointment types page in the module. Visits are part of OpenMRS and can be found on the OpenMRS administration page.

  3. user-2d00b

    Is this wiki referencing to the same module as in Appointment Module? If not, how do they differ?
    I am looking for a module which provides REST API that I can call from a telephony application. Which one should I use?

     

  4. user-115d7

    How does a module like this compare with an appointment scheduling system like BookMyCity? (https://www.bookmycity.com/online-schedule-maker)

  5. user-15209

    I got 

    java.text.ParseException: Unparseable date: "11/27/2014 12:00 ��"

    errors when using this module.Any workaround?

    1. user-35feb

      did you find a work around? We have the same problem.

      org.springframework.validation.BeanPropertyBindingResult: 2 errors
      Field error in object 'appointmentBlock' on field 'endDate': rejected value [2015-03-18 PM06:00]; codes [typeMismatch.appointmentBlock.endDate,typeMismatch.endDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [appointmentBlock.endDate,endDate]; arguments []; default message [endDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endDate'; nested exception is java.lang.IllegalArgumentException: java.text.ParseException: Unparseable date: "2015-03-18 PM06:00"]
      Field error in object 'appointmentBlock' on field 'startDate': rejected value [2015-03-18 AM06:00]; codes [typeMismatch.appointmentBlock.startDate,typeMismatch.startDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [appointmentBlock.startDate,startDate]; arguments []; default message [startDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'startDate'; nested exception is java.lang.IllegalArgumentException: java.text.ParseException: Unparseable date: "2015-03-18 AM06:00"]
      1. user-35feb

        Find the solution myself.

        If you choose a Locale other then english, the system will add the the AM or PM or other things to the time string. It will mess up the parsing.

        Change your locale to english, it solved our problem. Cost me a day.

  6. user-35feb

    I have a provider who is in my clinic everyday from 9:00-5:00. Is there a way to add provider schedule monthly to the same time slot?

    I tried adding, i.e. Feb 17-March 3, then the provider available time slots have midnight slots.