Giter Site home page Giter Site logo

unolims's Introduction

unolims

Basic Laboratory Information Management System web app for sample testing using two-stage hierarchical pool testing techinque. Built with Django, signals for main logic operation. This app is developped as a monolithic app. However the Signals framework does offer a possibility to develop a loosely coupled Django project. This way decoupling one of the apps should be a fairly easy job.

licence

MIT

motivation

LIMS might be expensive to build. My experience shows that multiple design flaws and over engineerig can geopardize the LIMS adoption and basically screw the whole workflow. The basics of hierarchical pooling is more or less the same and differs in the details. These detail can be added later on. Provided that this software would be relatively easy to deploy and modify this LIMS would be a good tool for the labs.

Two stage hierarchical pool testing

  1. All samples are placed in their respective tubes.
  2. These samples are then amalgamated into a number of pools using pooling tubes.
  3. Pooling tubes are then being tested.
  4. If pool tested negative, the respective individual samples are flagged negative.
  5. If pool tested positive, the respective individual samples are being tested individually.

App design

Structural separation by apps.

common

Constants, signals and other names and objects used throughout the apps.

data_importing

Data import services and logic. For Tubes and Runs.

run

All Run, Run Template, Run Results data models and logic.

tubes

All Tube and Batch data models and logic.

web

The web app UI. A hybrid Django with templates configuration. The ecnhanced UX is built using React Js. Whenever possible basic Template based Django Views are used. The React Js app is being used when UX improvement is evident.

Tubes and Batches

In order to be a bit more universal the word Batch is used. Words Goup or pool might be used as well. Tubes are grouped into batches for different reasons. An example is when they are grouped on a rack for scanning and the data is entered into the system. Or when the samples are run and tested.

Batch

Tags

To run the logic and display the data to the user Batch may hold any number of tags. These could be: 'INDIVIDUAL POOLS AND POOL TUBE', 'POOLING SCAN', 'TEST RUN 123', 'CONFIRMED', 'COMPLETE', 'CANCELLED'. Business logic might interpret tags in one way or another with the subsequent outcome.

Extra data

There might be some extra data that needs to be stored and retreived later on. For this reason the Batch contains a JSON field 'xtra_data'.

Events and handlers

Each main model and step triggers a predefined Django signal:

  • batch_pending_confirmation
  • batch_just_confirmed

to be continued...

unolims's People

Contributors

gagamil avatar

Watchers

 avatar

unolims's Issues

Fix model clean method

Uploading the Tube batch file doesn't work.
The clean method can't pass the correct file to the service.

Run results display & analyst page

Allow view of each sample.
Allow finalization that will create/update and set results values for the sample (if pooling tube then for that one).

Create TubeBatches from imported data

Data is imported from the frontend app form into the data importing app.
Need to send an event so that the tube app would populate the batch using the provided data.

Configure logging

Don't use print. Use logging lib.
Even better - connect to a logging service.

Update tag names

Use the one in const module.
Update the tests + batch list page.

Add JS app support

JS apps will improve UX.
ReactJS library is suitable.
Should be per page js app which hooks when the page is being loaded.
Use web pack to build the app and put to Django static folder the output.

Run creation page

  • pick the configuration (run method)
  • pick the run tube batches
  • set custom run name

When validated allow csv template file to be downloaded

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.