Click or drag to resize
Integration with Context Manager

[This is preliminary documentation and is subject to change.]

It is possible to use TOPICA to build modules, that run "inside" existing (clinical) applications. The applications in question typically contain the following functionality:

  • organization administration

  • user administration

  • patient administration

  • log in, security, etc.

  • managing context - CCOW = "Clinical Context Of Work", e.g. current user, current patient, current encounter, ...

  • some mechanism for adding extra modules, especially web pages

This kind of applications are called Context Managers.

TOPICA pages (and framesets) may run in "Context Manager" mode. When TOPICA pages / framesets run inside a "Context Manager", there is no main menu (no way to change current patient), and no hyperlinks "out of context". It is the responsibility of the "Context Manager" to handle navigation, so any hyperlinks in the TOPICA module that might change context, would ruin the context maintained by the "Context Manager".

Tasks involved in integrating into a Context Manager

Front-end integration

The Context Manager starts a module developed in TOPICA by showing a web browser control, and setting the URL to a page in TOPICA. This URL must meet follwing criteria:

  • Refer to the page ContextManagerEntry.aspx in the framework.

  • Pass any context information in the querystring. As a minimum, this context information should contain user identification. Often it will also contain information abount current patient, current encounter, etc.

  • The querystring must contain the name of a configuration created in the addressed instance of the framework.

The framework page ContextManagerEntry.aspx gets the name of a start-up page from the .config-file parameter DynamicForm.ContextManagerMainPageUrl, and redirects to this a page of this name in the configuration folder, passing any context information in the querystring along.

The application developer must implement an .ASPX with the name specified by .config-file parameter DynamicForm.ContextManagerMainPageUrl (placed in the configuration folder - refer to Configuration folder structure) This .ASPX should handle log-in into TOPICA, initiate any back-end integration, for example synchronization (see below), and finally display the required user inteface.

This is done by writing one or more .ASPX-files (see Custom webforms).

Note Note

TODO: add example.

Back-end integration

The "Context Manager" application and/or other modules embedded in it has each own database(s) holding organization, users, patients, encounters, etc. A module constructed with TOPICA cannot access these database(s) directly - it uses a TOPICA format database for this data.

Therefore, there typically will be a need to synchronize data between the databases before the TOPICA module is launched. Examples:

  • The "Context Manager" passes patient identification. Obviously this patient wiil be created in the database managed by the "Context Manager". But it might not be created yet in the TOPICA database - or it might be created, but the properties of this patient may be outdated (changed in the "Context Manager" since last time it was accessed by this module).

  • When working with healthcare records, it is common to organize data according to encounters. In order to display this information in the TOPICA based module, the encounters must be created in TOPICA's database.

To implement any necessary synchronization, the application developer may use any of the techniques described in the Extensibility chapter. The most obvious choice is to use one or more custom webforms (.ASPX'es) to read data from the database managed by the "Context Manager" (using webservices etc. defined by the external system), compare with what is currently created in the TOPICA database, and perform any neccesary insert/updates in the TOPICA database to make the two database match.

Note Note

TODO: add example.

Display initial user interface

Redirect to a configuration-specific start page ("home page" for the module). This start page could by one of the following types:

Note Note

TODO: add example.