The situation
florio HAEMO is Class IIa medical software for people living with haemophilia. Doctors use a web dashboard alongside it. Patients can record their treatment even with a weak signal. The job also included the Bluetooth connection to the smart injectors.
What made it hard?
Development of a regulated app had to speed up, and every change still had to be checkable afterwards.
What was I responsible for?
- I was responsible for making patient data work without internet. We used WatermelonDB and RxDB for that.
- I was responsible for the Bluetooth (BLE) modules for the smart injectors, written in Swift and Kotlin.
- I was responsible for building the doctors' dashboard. We used React Server Components, and access was controlled by role.
- I led five mobile developers. We worked from written requirements and tests prepared in advance. Before each release we used Maestro to check that a user could do their tasks from start to finish. We also re-tested features that had worked before.
- I brought four internal web products onto one shared UI foundation.
- I used AI tools to support development, and documented the results of the checks before handover.
Decisions and reasons
- Bluetooth modules built specially
- The data exchange with the injectors needed finer control than the ready-made module allowed.
- Two data stores, two jobs
- WatermelonDB handles saving on the device and RxDB handles syncing, so each job gets its own tool.
- A written requirement before every task
- With a medical device, the auditor works from the written requirements.
Results
- After the injectors began syncing data over Bluetooth, errors from manual data entry fell by 40%.
- The code downloaded to the browser became 45% smaller on the most important web screens.
- The app starts 1.5 seconds faster.
- The pre-release checks now produce a written record that can be looked up later. Before, they were done from a checklist people kept in their heads.
When this matters to you
- If your app connects to a measuring device, a gate, a printer or a sensor, I write the phone-side code that talks to it myself, in Swift and Kotlin.
- If your users do not always have internet, I plan for working offline from the start.
- If you work in a regulated or sensitive field, traceable releases are part of how I work, and I can lead the team that builds them.