Code Monkey home page Code Monkey logo

donorcheck's Introduction

About

DonorCheck is a tool developed by the Division of Computational Pathology at the University of Minnesota, Twin Cities, to minimize data entry errors related to organ transplant.

This tool was created to address the workflow disconnect between organ donor typing data and the UNOS DonorNet system. DonorNet is a web interface into which all organ donors must be entered, with their HLA typing. But typing data can come from a variety of sources, which have no knowledge of DonorNet (and vice versa). Although the raw reports can be uploaded and attached to a donor's typing, ultimately all processing and interpretation is performed by a human. This presents the possibility for mistakes, which could pose serious risk to transplant recipients.

To address this risk, DonorCheck has two primary goals:

  1. To standardize the different formats of typing data, unifying instrument reports and DonorNet data into a common format for software-based comparison
  2. To create a user interface/experience facilitating consistent, reproducible comparison

Download and Installation

We currently provide pre-built installers for Windows only.

Code use

This project is open source, distributed under the GPL v2 license. The application is free for use and redistribution.

Code Style

We use Google's java code format. Current version: 1.6

Support

Please join our Google group to keep up on the latest news and updates.

You are welcome to use GitHub issues and/or our Google group to:

  • Report bugs
  • Discuss feature requests
  • Contribute new donor formats

Building DonorCheck

Building / Running DonorCheck in Eclipse:

  1. Java 21 must be on the module path
  2. JavaFX must be added as a user library to the classpath

Building a DonorCheck release / installer:

  1. Requires a Java 21 SDK
  2. Maven goals are clean install
  3. Maven profiles are jar-with-dependencies jfx-installer
  4. WiX 3 must be installed
    1. JPackage doesn't work with WiX 4/5 - Java 24 will support WiX 4/5
  5. The release installer will be created in target/jpackage/

donorcheck's People

Contributors

hinerm avatar kaitlinrenee avatar rcoleb avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

donorcheck's Issues

Check Haplotypes in Integration Tests

Our integration test currently checks type assignments, but does not check that haplotypes are consistently called - because for a given patient, two different analysis methods may legitimately produce different haplotypes.

Haplotype regressions (parses that used to work, but don't after an update) are a common issue we run into. To mitigate this, we should at least ensure that the haplotype for each file is parsed consistently.

Steps:

  1. For our current collection of integration test patients, for each PDF and XML file with Haplotype data, cache the Multimap<RaceGroup, Haplotype> from the ValidationModel parsed by the appropriate DonorFileParser. This is our baseline haplotype data.
  2. Create a map of source files to cached baseline haplotype multimap.
  3. In the parsing section of our IT, if a file has an entry in the haplotype map, run a method that checks if the parsed's haplotype multimap matches up with the cached version for that file.

Note: the haplotype check should only compare parsed to cached haplotypes if the haplotype frequeny tables are present, i.e. the HLAProperties.get().getProperty(NMDP_DRDQ_PROP) and HLAProperties.get().getProperty(NMDP_CB_PROP) properties are set

Add Help Menu

Desired menu entries:

  • About - show app version, link to comp path, link to github
  • Report an issue - link to google group

Wrap pop up windows in scroll panes

Currently these windows don't respect screensize and thus go off screen.

Wrapping them in scroll panes should be sufficient to get them to display properly

Add support for new SureTyper PDF

Our lab is switching to a new SureTyper PDF format that we need to validate.

  • After seeing that spaces are inconsistently distributed throughout typings (hooray) but whitespace is never a delimiter for alleles, before splitting into tokens, let's remove all whitespace. Then we can split on , and ; to look for alleles.

  • Instead of skipping tokens that start with the locus, let's just remove the locus text from the token. Then if the token is empty we can skip it, otherwise parse it normally.

  • I can't find the code line to reference because GitHub is not cooperating at the moment, but to accommodate the HLA-DR replacing HLA-DRB1 in the haplotype area, you can just add another mapping in the haplotype map, from HLA-DR to the same map mapped to by HLA-DRB1... I think? that way you don't need explicit checks for HLA-DR in the parsing logic

Add support for LinkSeq XML

Referenced here.

XML Sections to parse

It looks like the XML has an labAssignmentSection block at the top which includes the assigned typings. These can be read and passed to a ValidationModelBuilder to populate the core typing data.

For haplotype information, there is a testResultsSection that has all the possible alleles for each locus, which will be used to populate haplotype information.

Implementation Notes

Goals

  • Assigned typing parsing works
  • Haplotype parsing works

Clarify download instructions

  • The XML download steps have changed - we need to confirm them and update the tutorial. (From donor summary first tab?)
  • HTML instructions need to specify: from donor summary, select crossmatch and then hla subtab
  • Firefox/chrome clarifications need to be clearer
  • Clarify that xml is only available after typing

Suretyper PDF not loading properly

Suretyper PDF missing C, DQA, DPB, DRB and DPA Loci when attempting to build.

  • Identify reason they are missing
  • Fix reason they are not being parsed
  • Test fix on given samples
  • Add sample to integration test
  • Create new development installer

PDF download

SureTyper PDF file will not import. Error message appears (see below)

Error message: Could not read donor data from PDF. Please notify the developers as this may indicate the data has changed.

New version is leaving undefined as empty for serologicalCombinations

New Score6 version is missing an indicator for undefined. This causes results that vary from old results as in the case of:
new set:

<alleleCombination1>
DQA1*01:03:01:01, 01:03:01:02-01:03:01:09, 01:10, 01:14, 01:15N, 01:17, 01:24
</alleleCombination1>
<serologicalCombination1>Null</serologicalCombination1>

vs old set:

<alleleCombination1>
DQA1*01:03:01:01, 01:03:01:02-01:03:01:09, 01:10, 01:14, 01:15N, 01:17, 01:24
</alleleCombination1>
<serologicalCombination1>-, Null</serologicalCombination1>

Need to:

  • Find cause for dqa1 being missed
  • Find solution to work for all cases: empty, only "Null", and partially "Null"
  • Test solution for samples give to us
  • Add to integration testing
  • Build new development installer with issue fixed

Validation Model API Refinements

  • Split "assigned types" and "haplotypes" to defined components instead of lumping them all together in one class
  • Document the Builder methods to better explain what should be passed as input

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.