-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Sebastian Mate
committed
Sep 2, 2024
1 parent
383f6ce
commit e2809ef
Showing
40 changed files
with
7,098 additions
and
1,074 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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 not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.