Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

A lot happens when you startup KenyaEMR so this page is an attempt to explain the details to help developers and admins debug any problems that might arise.

...

  • KenyaEMR is still operational (i.e. we don't prevent the KenyaEMR module from loading)
  • A warning message is displayed to users to tell them to contact an admin 
  • Admins can login see information relating to the problem
    • If problem is a missing requirement (e.g. CIEL) they'll see this on the home page of the Admin app
    • Due to When TRUNK-4267 is fixed, we haven't yet implemented a way to display any exception thrown, so they may 'll send admins an alert with whatever exception occurred. For now they have to consult the log files

...

All of the existing content managers gather up components defined in the application context. This makes it easy for add-on modules to provide new content to KenyaEMR. An add-on module can even provide new content managers, and by configuring the value returned by ContentManager.getPriority(), determine when in the loading process those content managers will be refreshed. 

The existing content managers are as follows (listed in the order in which they are refreshed)

ManagerPriorityManagesOn refresh
RequirementManager0External requirementsChecks each requirement, throws UnsatisfiedRequirementException if one fails
MetadataManager10Metadata bundlesInstalls all registered bundles
LabManager20Lab test catalogsLoads all lab test catalogs
RegimenManager30Regimen definitionsLoads all regimen definitions from XML resource
IdentifierManager40Identifiers 
CalculationManager50Calculation classes and patient flags 
ProgramManager60Programs 
FormManager70FormsSaves form resources for XML content of all forms and registers custom tags
ReportManager80Reports and their buildersBuilds and persists all report definitions
ChoreManager90ChoresPerforms all chores not already performed

Performance

Startup time is dependent on the state and size of the database.

  • Metadata loading includes synchronization of all locations with a copy of the MFL. If locations in the database are up to date then no database updates are required so this will only take a few seconds. On a clean database, it will require the saving of ~9500 new locations which may take 1-2 minutes.
  • Chores are only one performed once, so none of these will be performed on a up to date database. 

...