Skip to content
Mohamed TRIKI
Back to internships & projects
Prescription creation form in e-Santé.net

e-Santé.net — Pharmacy E-Health Platform & QA Automation

  • Date : 2026
  • Software Engineering
  • Completed

Built a pharmacy e-health web app (ASP.NET Core, Blazor), then its QA: Selenium + Pytest UI tests, REST API and xUnit security tests, SonarQube analysis — 67 test cases.

Overview

e-Santé.net is a pharmacy-oriented e-health web application built at IIT Sfax in a team of two. It centralises patients, doctors, pharmacists, pharmacies, medicines, stock and prescriptions, which are often scattered across tools in a pharmacy.

The platform uses a layered architecture: a Blazor Server front end, an ASP.NET Core REST API secured by tokens, a business layer and Entity Framework Core repositories on SQL Server. A pharmacist dashboard built with Radzen.Blazor shows activity, prescriptions and stock levels.

In the Software Testing & Quality module, we then tested the same application end to end: UI automation, API integration tests, security and performance tests, and static analysis, organised in four Scrum sprints.

Key figures

traceable test cases
67
traceable test cases
functional modules covered
9
functional modules covered
API resources tested
7
API resources tested
defects fixed
5
defects fixed

Technologies

Problem

Prescriptions, patient records and stock are often scattered in a pharmacy, which makes their history hard to use and increases the risk of errors when dispensing medicines.

Solution

A web platform with secure sign-in and role-based access, CRUD pages for every entity, prescriptions checked against each pharmacy’s stock, and a dashboard; its quality was then verified with automated UI, API, security and static tests.

My contribution

As a team of two: development of the platform (Blazor pages, REST API, repositories, stock rules), then the whole test effort — UI automation framework, API test suite, xUnit security and performance tests, SonarQube analysis and test documentation.

Results

Delivered 67 traceable test cases across 9 functional modules and 7 API resources. The security tests exposed unhandled 500 errors on unauthenticated and malicious requests, and 5 defects were fixed.

Features

  • Sign-in and registration with token-based authentication and role-based access (administrator, pharmacist)
  • CRUD for patients, doctors, pharmacists, pharmacies, medicines and stock
  • Prescriptions with medicine lines, quantity and dosage, checked against the pharmacy’s stock (explicit 400 error when stock is missing or insufficient)
  • Pharmacist dashboard with Radzen.Blazor charts and indicators
  • Selenium + Pytest UI automation framework (Page Object Model) with logging, priority markers and screenshots on failure
  • REST API integration tests in Pytest with a JWT-authenticated session
  • Security and performance tests in C#/xUnit (access control, SQL injection, XSS, response time)
  • SonarQube static analysis followed by targeted refactoring

Screenshots

Creating a prescription: patient, pharmacist, doctor and medicine lines with quantity and dosage, checked against the pharmacy’s stock.

Pharmacist dashboard built with Radzen.Blazor: key figures, prescriptions and stock at a glance.

Prescription details: date, patient, doctor, pharmacist and the medicines dispensed.

Patient management: the same List / Create / Edit / Details pages are used for every entity.

Sign-in page: access to the application is protected by token-based authentication.

Automated UI tests (Selenium + Pytest, Page Object Model): results of the Patients module, one of the 9 modules covered.

Swagger documentation of the REST API, used as the reference for the Pytest integration tests.

xUnit security test: an anonymous request to a protected endpoint returned a 500 error instead of 401/403 — a defect found by testing.

SonarQube static analysis: high-severity issues such as excessive cognitive complexity, then refactored.