Skip to content

Overview

Kurt Symanzik edited this page Jan 27, 2015 · 5 revisions

The Midwife-EMR system is a NodeJS web application that uses a MySQL database for data storage. It is designed to run on a server, preferably as a service if in a production setting. Users access the system via web browsers from laptops/desktops or tablets using connections secured by SSL.

NodeJS and Major Third-party Modules

  • Express 3.x
    • A great way to make a NodeJS web application.
  • Bookshelf
    • An nice ORM using promises.
  • Passport
    • Authentication made simple.
  • PdfKit
    • Report output in PDF format easily.
  • Jade
    • A nice way to work (not work) with HTML.

Of course, there are many other modules than these (see package.json). See Installation for installation details.

MySQL Changes are Logged

For tables involving patient information, all changes are stored in separate log tables preserving the following information:

  • Who made the change
  • What was changed in each record
  • At what time the change was made
  • If the user is in the attending role, who the supervisor was

All changes are preserved indefinitely and allow the reconstruction of historical changes made to a patient's records over time.

At the current time, the user interface to access and view/print these historical changes is partial and rudimentary at best - there is a lot more work that needs to be done to allow the users in the supervisor role convenient access to the information. In spite of this, the historical information is being preserved even if the access to it is not yet convenient.

NodeJS Clusters

NodeJS runs in a cluster configuration using the Recluster module. This allows issues/bugs/failures in a user's request to be handled gracefully without affecting other users or taking down the system. Requests that end in failure are logged and the thread that managed the request is stopped and recreated. In addition, the number of clusters employed will correspond to the number of CPU cores that are available. The result is a stable application.

i18n

The application is i18n capable using i18n-abide by Mozilla. Currently there are no other languages set up except for an extremely inaccurate and out of date Cebuano translation (which is a minority language spoken in the Philippines). But the foundation has been laid for other languages should the application be needed in a different or even multiple language context. In fact, if some users wanted to use one language while others another, that is no problem because each user can specify the language of their choice in their profile.

Tests

Currently there are 145 tests using Mocha though there really should be more.

Clone this wiki locally