Medical guideline portal Onkopedia.com relaunched - on top of Plone 5.2 and Python 3.7
The Deutsche Gesellschaft für Hämatologie und medizinische Onkologie (DGHO) e.V., known in English as the German Society for Haematology and Medical Oncology, is a medical association whose goals include the training and education of doctors and medical personnel and the drafting and publication of medical guidelines. Its members include scientists and doctors specializing in the research, diagnosis and treatment of blood diseases and malignant tumors.
Together with other medical societies and associations from Germany, Austria and Switzerland, the DGHO operates the online guidelines portal “Onkopedia”. In addition to providing medical guide- lines, it serves a source of important specialist information for patients and carers.
The guidelines portal was developed by Andreas Jung and ZOPYX on behalf of the DGHO in 2010. It is based on the Produce & Publish authoring environment from ZOPYX and the open source content management system Plone.
The guidelines portal revolutionized the work of the DGHO. In structuring and accelerating the editorial workflow, it has helped to ensure that doctors, patients and carers can obtain quick, easy, any-time access to the latest guidelines and information. Thanks to the portal, the DGHO has been able to intensify the exchange of specialist expertise and to provide clinical practitioners with an indispensable tool for quality assurance.
The doctors and scientists responsible for formulating the medical guidelines were not required to change their way of working. They continue to write the guidelines using Microsoft Word. A DGHO employee then checks the documents for technical suitability and feeds them into the CMS, where they are converted to HTML and - for printing purposes - to PDF.
Migration of onkopedia.com from Plone 4.3 to Plone 5.2
Port of underlaying XML-Director infrastructure to Plone 5.2 and Python 3.6/3.7
Port of Produce & Publishing stack to Plone 5.2 and Python 3.6/3.7
Resign and reimplementation of the Onkopedia look & feel
All content available across all mobile devices
The migration to Plone 5.2 and Python 3 was a large step. Plone 5.2 on top of Python 3 was first demonstrated at the Plone conference 2018 in Tokyo and it was clear that we wanted to go directly to a Python 3 directly rather to migrate to Plone 5.2 on top of Python 2.7 first. In the first phase we had to upgrade the complete XML Director and Produce & Publish stack which is the foundation of our XML based publishing solutions for many years. Fortunately the implementation of most modules have a good design and porting them to Python 3 was more about changing imports than doing any reimplementation work. The standard migration problems were related to encoding and IO issues - things which are handled different in Python 2 and Python 3. We intentionally dropped support for Python 2 rather than making the code base compatible with Python 2 and 3. Python 2 is dead and it does not make sense for our own business cases to support Python2 in the future.
Porting the onkopedia.com itself to Plone 5.2 and Python 3 was almost pretty easy since it was already based on Dexterity.
Some efforts went into the implementation of xmldirector.connector as an updated version of xmldirector.plonecore. xmldirector.connector is now based on Python 3 and based on PyFilesystem 2 and therefore ready for future challenges.
The responsive frontend is a complete redesign and was implemented using Diazo and Bootstrap.
The content migration was implemented on the Plone side using our own migration process with is basically a full export/full import solution over plone.restapi which was developed over the last years as part of other Plone migration projects for our own customers. Onkopedia used to use the XML database eXistDB for storing all the XML related content. For technical reasons we abandoned eXistDB and moved over to a filesystem based storage. This change was painless because the onkopedia.com application and the underlaying XML-Director implementation allowed us to abstract the storage layer and basically change the storage location by just switching the storage URL - no further code changes necessary! In the mid-future we plan to use FusionDB as storage layer for XML-based publishing solutions. FusionDB is based on the ideas and partly on the code base of eXistDB but with a modern storage layer based on RocksDB.
The Onkopedia contents is also available through the Onkopedia Apps ((iOS, Android). The apps are backed by the original Onkopedia content. For technical reasons we export the Onkopedia content several times a day and make them available to the apps over a small REST API. The Onkopedia apps allow the users to access the content offline which is needed e.g. in hospitals which thick walls, underground offices with limited or no network connectivity.