Back to portfolio

PySTRIPA

1 / 2

The project

PySTRIPA (Python Systematic Tool to Reduce Inappropriate Prescribing Assistant) is a clinical decision support system designed to help general practitioners make safer medication decisions for older adults who use multiple medicines. Polypharmacy can lead to harmful drug interactions, unnecessary prescriptions, or missing treatments, making medication reviews both time-consuming and complex. Our project aimed to provide healthcare professionals with a practical tool that supports these decisions while keeping the doctor in full control. The system analyzes patient information and compares it against the validated START/STOPP prescribing criteria to generate personalized medication recommendations. General practitioners can review each suggestion, see which medical rule triggered it, approve or reject individual recommendations, add decision notes, switch between Dutch and English, and export the finalized treatment plan. Our solution transforms an existing proof of concept into a more polished and user-friendly application that is closer to real-world deployment. By improving usability, transparency, performance, and accessibility, PySTRIPA reduces the effort required for medication reviews while helping healthcare professionals make informed prescribing decisions.

Building software for healthcare taught us that the best solutions come from clear communication, careful planning and just the right amount of coffee.

The customer

Our client was Dr. Marco Spruit, Professor of Advanced Data Science in Population-Based Healthcare at Leiden University. He is affiliated with both the Department of Public Health & Primary Care (PHEG) at the Leiden University Medical Center (LUMC) and the Leiden Institute of Advanced Computer Science (LIACS). His expertise in healthcare data science and clinical decision support systems guided the continued development of PySTRIPA.

Throughout the project, we held regular meetings to discuss progress, demonstrate new features, and receive feedback. Communication became increasingly efficient as the project progressed, allowing us to better understand the client’s priorities and adapt our plans when necessary. This close collaboration helped us make informed design decisions and deliver a product that aligned with the client’s vision while remaining practical for future development.

The team

Our team consisted of six, each taking ownership of a different part of the project while working together using the Scrum framework. Myriam acted as Product Owner, managing requirements and client communication, while Thijmen served as Scrum Master, organizing sprints and maintaining the development workflow. The remaining team members focused on specialized areas: frontend development and testing, backend optimization, explainability features, security, and file processing, allowing us to make steady progress while reviewing each other’s work. We collaborated through weekly sprint meetings, GitHub project boards, pull requests, and regular client discussions. Tasks were divided according to individual strengths but were continuously refined through code reviews and team feedback. When challenges arose, such as the proposed implementation of an additional rule engine,we discussed the issue internally, consulted our client, and collectively decided to replace it with a more practical explainability trace feature that better met the project’s goals. One of our biggest challenges was understanding a large existing codebase while extending it with new functionality and adapting to evolving requirements. Through clear communication, structured planning, and regular retrospectives, we successfully overcame these obstacles. What we are most proud of is transforming a proof of concept into a polished and user-friendly application with multilingual support, explainability features, improved usability, automated testing, and a modern interface that brings PySTRIPA closer to real-world use.

The technologies

Languages

  • Python – Implementation of the rule engine, backend logic, patient file processing, and API endpoints.
  • JavaScript (React) – Development of the interactive frontend for medication review, multilingual support, and user workflows.
  • JSON – Storage of START/STOPP medical rules, translations, and patient data structures.

Frameworks

  • Flask – Lightweight backend framework used to expose the rule engine through a REST API.
  • React – Component-based frontend framework used to build a responsive and maintainable user interface.

Testing

  • Jest & React Testing Library – Automated frontend tests covering key general practitioner workflows and interface functionality.
  • pytest – Backend unit tests validating rule evaluation and core system behavior.

Deployment

  • Docker – Containerization of the application to provide a reproducible environment and simplify local deployment for future users and developers.