Diagnosis Manager Documentation

Web utility to assist doctors, nurses, technicians and other medical staff access standard-issued medical diagnosis easily and quickly.

Last updated for version 1.0.0.0 - 10/05/2017.

Table of contents

Introduction

Hello and welcome to Diagnosis Manager, abbr. DiagMan throughout this document and application-related media. My aim, developing this application, is to assist doctors, nurses and other medical staff access medical diagnosis easily and with efficiency. The application is client-based, meaning that besides the initical load-time, there is no really loading time while operating the application, which allows for much faster workflow.

About

My name is Itay Asayag and I'm a developer. I've worked on many projects before, which you can reade about later. I develop in the .NET framework and in PHP and web. My work includes community projects, such as helping medical staff, police forces, and young students who live science and computers. My hobbies include programming, photography, writing and playing the guitar. I hope this application will help you help other with more easily, and perhaps even enjoying your job.

Users' Manual

The application structure

The application is built of multiple screens.

The Main Screen

You first meet the main screen upon entering the application. It consists of two parts: the header and the body.

The Header

The header consists of the search bar, class-selection dropdown, number-of-results field and source selection.

Search Bar
Responsive image Updating the results upon each keypress, the Search Bar allows for sifting through the diagnosis, searching in the description field. Some diagnosis collections allow for short description and long description. The searching field can be selected in the code.

The Body

The body includes the result table.

Result Table Header
The result table header shows the type and name of the field of each table column.
Result Table Rows
Upon searchig in the search-bar above, table row results will appear here with a neat animation. You can click on a row to select it and press Ctrl C and a small pop-up will appear, letting you press the key combination again to copy the selected diagnosis.
Note: Upon pressign the key combination, the selected diagnosis will be sent to the Intelligent Search feature for processing. Besides the selected entry, no other information is submitted to the server.

Settings Dialog

Customize your experience for maximum efficiency with DiagMan.

Number of Results
The number of results to display in the result table. A lower number means less lag and loading time.
Data Source / Collection Selection
Allows the user to select a data source from an available selection.
Result Row Size
If you're interested in seeing more compact results, select "small" from the list and the row height will be reduced. Might required refreshing the page in order to take effect.

Developer Documentation

Introduction

The code is divided into two ends:

Front End Back End
Intro.js diagPrio.php
Settings.js
CopyDiag.js
Settings.js
The Front End files sit in the root folder. The Back End files sit in ./resources/js.

Front-End

Intro.js

Intro.js starts with a declaration of the available data sources, i.e. ICD-9 and other collections. This decleration will be removed somewhere in the future versions replaced by a source-managment dialog, with the data stored in CSV.


    window.$datasource = {}; // data sources dictionary
    window.$datasource[0] = "resources/data/CMS32_DESC_LONG_SHORT_DX.csv";
    window.$datasource[1] = "";
    window.$datasource[2] = "";
        

Currently, results are being registered to a CSV file. This data is not used yet because I first want to see if this feature is even required.


     window.resultsuggestion = "resources/data/searches.csv";
            

Settings.js

Settings.js is used to handle getting and setting the settings in the application. The data is saved in the form of cookies set to expire after 30 days.


    var settingCollection = "settingCollection";
    var settingNumResults = "settingResult";
    var settingRowSize = "settingRowSize";
        

Following some low-level cookie-managment code there are definitions of two main functions: loadSettings() and saveSettings().

loadSettings()

Receives no paramers.
Description: Checks the settings. If saved settings exist in the cookie cache, then load them into the application and set the Setting Dialog's controls to match the saved values. Otherwise, save the values as the defaults.


    function loadSettings() {
        if (checkSetting(settingCollection)) {  // data collection
            window.selectedDataSource = 0;
            setSetting(settingCollection, 0);
            document.getElementById("source").value = window.selectedDataSource;
        } else {
            window.selectedDataSource = parseInt(getCookie("settingCollection"));
            document.getElementById("source").value = window.selectedDataSource;
            console.log("Loaded new setting 'settingCollection' as " + window.selectedDataSource);
        }

        [...]
        

saveSettings()

Receivs parameters: numResults, selectedCollection, rowsize.
Description: Called upon clicking the "save" button in the settings modal, this function recieves the values from the modal fields and saves them.


    // collection
    setSetting("settingCollection", selectedCollection);
    window.selectedDataSource = parseInt(selectedCollection);

        [...]