GithubHelp home page GithubHelp logo

lab-grid / flow Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 2.0 1.35 MB

An open-source Laboratory Information Management system with a configurable UI

License: MIT License

Shell 0.28% TypeScript 44.95% JavaScript 0.04% PowerShell 0.07% Dockerfile 0.18% Python 31.03% Mako 0.08% HTML 0.32% CSS 0.17% SCSS 22.87%
lims covid-19 swabseq labgrid laboratory

flow's People

Contributors

dependabot[bot] avatar enorms avatar kathryn-explorable avatar robotoer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

robotoer enorms

flow's Issues

Let admin restrict who can log in

It would be fine if this is manual for now, rather than a separate admin console (e.g. how about OSS users manage their own auth via auth0, and hosted users send us a list of emails?)

Change signature/witness to be a block.

Should affect the previous blocks (up to the nearest signature/witness block)

Alternatively, make "sections" for protocols that get optionally signed/witnessed.

The third way to do this would be to provide a way to link protocols/runs

Add unit tests / integration tests.

Robert, if you could pick a framework for this and put in an example, I can work on writing tests as well. My plan is to try to make it as complete as possible, with a focus on our specific protocol and tracking barcodes end-to-end.

These tests will serve as the "validation" suite for regulated labs who need to certify that their LIMS behave as expected.

Fix server API/tests

Currently the server does not properly store data that it has been passed. The server_test.py file should also validate that this basic functionality is working.

  • Fix run CRUD endpoints
  • Fix protocol CRUD endpoints
  • Fix server_test.py

Add file upload for each well plate in sampler run block

This could use an upload modal that:

  • shows a preview of the uploaded file
  • allows re-mapping of columns if necessary (this can be made "smarter" in the future)

Could have a way to configure the required/default file format at the protocol block level

Add database audit-trail.

We should be keeping track of all edits made to all entities in the system.

Add a _version table for each existing entity that stores actual data. Non _version suffixed tables should not contain actual data and instead contain a reference to the current version.

"Review and sign off" flow

A run or a protocol should be able to be "signed" (and optionally, "witnessed" or "reviewed and signed" by a second person). A "signed" run or protocol can't be edited. (Unless it is later "unsigned" and then edited...) For each user who "signs", it needs to record the user's name and the date/time of signing, and then change status to "signed".

Add results section to runs (with export option)

This could be implemented as a new block type, or all runs could be presumed to have a special "results" block type (are intermediate result blocks needed?).

Results section should have a table with the following columns:

  • sample barcode/id
  • sequencing result
  • plate label per step*

This table should also have a button on each row that can "invalidate" that sample. (or make all fields editable)

Add a few frontend protocol widgets

The goal here is to add some variety to the frontend, to demonstrate that it's flexible.

  • Textbox (done example: Run title)
  • Textbox should record date/time that text was entered.
  • Checkbox that records the date/time it was checked.
  • Upload a file (and the file is just stored as part of the "run")
  • Different type of file upload, where the file is stored AND the backend parses that file to produce... how about it just displays the file contents as text for now?
  • Click then scan a barcode into that field (and again, save date/time the field was populated)
  • At the bottom of a "run", a button "sign" that saves the whole run (including the logged-in user) and doesn't let the run change after that.

Additional user role(s)

There should be at least 1 restricted user type, who can run protocols but can't edit protocols. Open to naming ideas for these admin/not user roles... "admin" and "operator"?

  • Add an administrators policy editor UI

Make auth provider pluggable

We need interfaces allowing us to DI a auth provider type into the:

  • web react frontend
  • server api service
  • native client

Additional protocol fields

On the front page, besides protocol ID, Name, Last modified, let's also add:

  • Owner i.e. the user who created it
  • Status example statuses = ["" (default), "signed", "witnessed"].
  • Created date/time similar to "Last modified".

Also need to add:

  • An editable field in <ProtocolEditorPage>

Add optional calculator to add-reagent protocol/run block

The "formula" for the calculation can be configured at the protocol block level using an excel-macro like language.

The run block should show the calculation as one of the following:

  • A mad-lib style fill-in-the-blank
  • The formula followed by a list of variable inputs

Add a UI for results

  • Give me a report of all protocols and runs that have happened, with all user/date/signature details. This could be a db dump to .csv plus the ERD or schema. i.e. all tables. (This dump would satisfy the CLIA requirement for audit trail.)
  • Give me all runs with status todo/in-progress or signed-but-not-witnessed. (This query is run by the supervisor to track work, and also witness as needed.) (ok for v1 if technicians have this same level of read access.)
  • I have 1 run ID and want to get all sample barcodes and all sequencing results for that run. (This is the query for the data that gets returned to patient-facing portal.)

Also useful:

  • I have 1 sample and want to get the results for its sequencing
  • I have 1 sample and want to get all data from all runs associated with it (useful for debugging why a result is not as expected)
  • I have a reagent ID and want to get the runs associated with it (useful for debugging bad reagent batches)

Design a plugin model

We'd like to have the following product areas be fully customizable:

  • Home-page/dashboard widgets
  • Protocol/run steps
  • User authentication/authorization

Additional run fields

On the front page, besides run ID, Name, Last modified, let's also add:

  • Owner i.e. the user who created it
  • Status example statuses = ["in progress" (default), "signed", "witnessed"].
  • Created date/time similar to "Last modified".

Also need to add:

  • An editable field in <RunEditorPage>

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.