Skip to content
filak edited this page Sep 21, 2023 · 115 revisions

Welcome

Medical Subject Headings (MeSH) is a controlled vocabulary (thesaurus) for biomedical fields produced by the National Library of Medicine (NLM, Bethesda, USA).

MTW stands for Medical Subject Headings Translation Workflow

Why the MTW application ?

NLM has deprecated its legacy MeSH Translation Maintenance System (MTMS) by the end of 2018 leaving the translating organizations virtually empty-handed. Fortunately NLM provides a linked data representation of the MeSH vocabulary - so a open source application for supporting the MeSH translation has been developed for the National Medical Library (NML, Prague, Czech Republic). The MTW app has been used in production in NML since January 2019.

Advantages of using RDF

  • implementation of MeSH complex structures & relations without tables/schemas mapping
  • SPARQL endpoints for data access
  • ability to extend the official data model (custom namespaces for the translations)
  • efficient handling of the annual data updates
  • possibility to publish the translation as linked data

Design goals

  • web application with no proprietary software or components - open source stack
  • no special hardware - app running even on a PC/laptop
  • cross-platform (though developed on Windows)
  • easy datasets management - updates, backups, migrations
  • basic approval process/workflow
  • clean and intuitive interface - see some screenshots

Features

  • MeSH tree browsing & filtering
  • fulltext searching with *, ? and phrase "" and boolean support
  • statistics & todo lists, clipboard
  • compare & diff descriptor versions
  • custom concepts support
  • complete audit & changes approval
  • reporting & user management
  • user roles based workflow: viewer, contributor, editor, manager
  • duplicate terms checking & other data consistency checks
  • exports to UMLS TSV, JSON, XML, MARC21 etc.

Stack

Development of MTW has been possible thanks to many open source projects, notably:

  • SPARQL server: Apache Jena Fuseki
  • Web framework - Python: Flask & Jinja2 templates
  • WSGI server - Python: Waitress
  • Frontend: Bootstrap & Bootswatch
  • Database: SQLite

Getting started

  1. Follow Installation on Windows (On Linux - follow README)

  2. Load MeSH datasets into Apache Jena

  3. Run Fuseki server

  4. Setup a web server with a reverse proxy - see web server config examples

  5. Start MTW services & Enjoy MTW at https://<HOST_LINK>/mtw

Deployment & Production

  • The MTW Compare/Diff feature requires server-side connection to https://id.nlm.nih.gov/mesh/sparql
  • Annual MeSH updates
  • Backups
  • MTW Upgrades
    • download the newest release MTW-X.Y.Z
    • check the release notes on breaking changes (if any)
    • stop the MTW services
    • backup <MTW_HOME_DIR> directory
    • rewrite binaries and static, templates, tools dirs in <MTW_HOME_DIR>
    • start the services
  • Apache Jena/Fuseki upgrades
    • do not reuse old data - always make last backup to restore as new version
  • Manual/FAQ #TBD...

Support

Please use the Issues.

License

MIT

Clone this wiki locally