Skip to content

Commit

Permalink
Add files
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Mate committed Sep 2, 2024
1 parent 383f6ce commit e2809ef
Show file tree
Hide file tree
Showing 40 changed files with 7,098 additions and 1,074 deletions.
796 changes: 398 additions & 398 deletions .gitignore

Large diffs are not rendered by default.

1,348 changes: 674 additions & 674 deletions LICENSE

Large diffs are not rendered by default.

49 changes: 47 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,47 @@
# Miracum-Mapper
multi-user application for collaboratively creating mappings to medical terminologies, such as LOINC
# MIRACUM Mapper

MIRACUM Mapper is a multi-user application for collaboratively creating mappings to medical terminologies, such as LOINC.

The manual mapping of local codes to standard terminologies specific to an organization or institute can be a tedious task. Aligning such codes requires not only fundamental terminological knowledge but also a good understanding of the local context, necessitating constant information exchange with colleagues. Manually maintaining code lists in spreadsheets (e.g., Excel) and communication via email or phone is not particularly efficient. This leads to both a potential "data chaos" and the challenge of colleagues not always being available.

The tool MIRACUM Mapper has been developed to simplify and expedite the mapping process. The tool has already proven its effectiveness at Uniklinikum Erlangen, where around 10,000 laboratory codes had been mapped to the LOINC standard. A conference paper and an associated PowerPoint presentation (which is actually a self-playing video) can be found in the "publication" directory.

The tool is a small Windows application that runs locally on a Windows PC. It connects to central PostgreSQL database, where it stores user authentication data and the mappings.

![MIRACUM Mapper GUI](images/MIRACUM-Mapper-GUI.png)
*MIRACUM Mapper GUI*

## Key Features

- **Generic Mapping Tool:** Not limited to a specific standard terminology (e.g., LOINC).
- **Collaborative Mapping:** Asynchronous creation and editing of mappings with full multi-user support. Users can work on mappings at their convenience.
- **Customizable Workflow:** Fine-grained mapping workflow with customizable user roles and state transitions (see image below).
- **Versioning and Revision Security:** All edits are traceable recorded by the system.
- **LDAP Authentication:** Facilitates easy integration into Windows environments.
- **Implementation in C#:** Eases deployment in Windows environments.

## User Interface Features

- **Seamless Window Scaling:** Provides an ergonomic working experience over extended periods.
- **Multilingual Support:** Supports both German and English.
- **Integration Options:** Allows integration of visualization components (e.g., MIRACUM LabVisualizer) or terminology searches (e.g., for LOINC).

![MIRACUM Mapper State Machine](images/MIRACUM-Mapper-State-Machine.png)
*MIRACUM Mapper State Machine*

## Getting the Code Running

- Open the source code in Visual Studio (VS) Community 2022 or a later version.
- If you encounter problems with the VS Form Designer in connection with the custom class TransparentPanel, see: https://stackoverflow.com/a/29247115.
- You may also need to manually add some dependencies to the "source/packages" directory: Npgsql.2.0.11, System.DirectoryServices.4.0.0, and System.DirectoryServices.AccountManagement.4.5.0. (Note: It is true that Npgsql should be updated, but this is a bigger challenge as this library was recently rewritten and is no longer fully compatible, at least out-of-the-box, with MIRACUM Mapper.)

## Configuration & Startup
### Config.dat File

When you run the program for the first time, it should not start as it still requires a correctly configured configuration file (Config.dat). This file stores the connection to the PostgreSQL database and the LDAP server. Note that the file is encrypted when it is processed by the program the first time, even if it has not yet been configured. It is a good idea to configure this file correctly in a binary distribution folder (which can be downloaded from the GitHub artifacts on the right) and instruct VS during development to also execute the temporary builds in this folder.

### Database Schema

This repository contains a sample database dump of a PostgreSQL schema (see "schema" directory) that can be used with MIRACUM Mapper. However, it does not yet include any medical terminology, such as LOINC. Contact the developer if you need assistance loading a terminology.

To support the new function with local passwords, you must update the supplied example schema according to the SQL file (also included in the "schema" directory).
Binary file not shown.
Binary file added documentation/MIRACUM Mapper Changelog.docx
Binary file not shown.
Binary file not shown.
Binary file added images/MIRACUM-Mapper-GUI.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/MIRACUM-Mapper-State-Machine.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file added schema/Database Schema (without LOINC).zip
Binary file not shown.
15 changes: 15 additions & 0 deletions schema/Migrate Schema 01-02.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
DROP TABLE public.schemaversion;

CREATE TABLE public.schemaversion (
schemaversion int4 NULL -- The current schemaversion.
);
COMMENT ON TABLE public.schemaversion IS 'Tells the version number of the DB schema for DB schema versions greater 1.';

-- Column comments

COMMENT ON COLUMN public.schemaversion.schemaversion IS 'The current DB schema version.';

INSERT INTO public.schemaversion (schemaversion) VALUES(2);

ALTER TABLE public.userids ADD local_password_md5 varchar NULL;
COMMENT ON COLUMN public.userids.local_password_md5 IS 'Local password MD5 hash. If this is set, LDAP authentication is not used. Introduced with version 1.8.0.';
25 changes: 25 additions & 0 deletions source/MIRACUM Mapper.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.421
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MIRACUM Mapper", "MIRACUM Mapper\MIRACUM Mapper.csproj", "{0AD7B0F7-0659-4A68-8D38-6CA70FDA80EB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0AD7B0F7-0659-4A68-8D38-6CA70FDA80EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AD7B0F7-0659-4A68-8D38-6CA70FDA80EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AD7B0F7-0659-4A68-8D38-6CA70FDA80EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AD7B0F7-0659-4A68-8D38-6CA70FDA80EB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {12460DED-FE77-4CC4-99B1-F6662F603E69}
EndGlobalSection
EndGlobal
65 changes: 65 additions & 0 deletions source/MIRACUM Mapper/Browser.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

61 changes: 61 additions & 0 deletions source/MIRACUM Mapper/Browser.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// MIRACUM Mapper, a program for mapping local medical codes to a standard teminology.
// Copyright (C) 2019-2020 The MIRACUM Project, Universitätsklinikum Erlangen.
// Implemented by: Sebastian Mate (Sebastian.Mate(at)uk-erlangen.de)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UKER_Mapper
{
public partial class webBrowser : Form
{
public webBrowser()
{
InitializeComponent();
}

internal void showUrl(string v)
{
this.webBrowser1.Navigate(v);
}

private void webBrowser_Load(object sender, EventArgs e)
{

}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{

}

private void webBrowser_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
Hide();
}
}
}
}
Loading

0 comments on commit e2809ef

Please sign in to comment.