First we got to know the clinics, then we planned the modules
We designed and launched Medbill together with the group's team, step by step:
- Workshops and meetings with the OpenMed team
We learned how the clinics work day to day and what gave the team the most trouble. Only then did we start planning features. - Feature list and user scenarios
We wrote down the system's features and the working scenarios of each type of user, from the front desk to management. That told us who would use each module and what for. - Architecture that fits the budget
We planned the architecture to fit OpenMed's budget without blocking future growth. We left room in it for integrations with external systems. - Development in stages
From the start Medbill was meant to grow in stages, as the group's needs evolved. We add new modules without rebuilding the whole system.
The front desk records sales and the system settles with doctors
At every visit the front desk adds a receipt in Medbill with the doctor, services and price. The sales list shows all receipts for the chosen clinic on a given day, each with the person who added it. Once the day is closed, only administrators can change the sales, so the settlement data doesn't change after the fact. Management tracks sales results in the panel from the same data, in real time.
The sales data also produces a doctor's settlement for a chosen period. Every service has a commission rate, so the system calculates the doctor's amount on its own and lists the visits day by day, with the time of each one. The top of the settlement shows revenue, commission, number of visits, and the costs of services and ZnanyLekarz, and the system saves the whole thing as a PDF.
These settlements used to be done by hand. Now the system calculates them, so the administration department saves time on them and the risk of errors is lower.
The cash desk module shows how much cash each clinic has on hand
The team runs each clinic's cash desk in the same panel as sales. The current cash balance is at the top, with the transactions for a chosen period below, grouped by day. Payments from sales go into the cash desk automatically as cash receipt documents (KP), while payouts and other deposits are added by staff with the "Cash paid out" and "Cash received" buttons. As a result the cash balance updates along with sales, and a statement for any period can be downloaded as a PDF.

The OpenMed team updates the medical price list and doctor profiles on its own
Medbill stores the data patients see on the OpenMed website: each clinic's price list and the doctor profiles. The website pulls them from the app, so the team changes them in one place.
In the price list a staff member picks the clinic and specialty, adds a service, sets a price or a price range and assigns a doctor. They can also add a note, for example that a consultation fee comes on top of the vaccine price. A single toggle decides whether the service is visible on the website.
A doctor's profile holds a photo, specialties, clinics, languages and a description. In the same form a staff member sets the URL of the doctor's page and the description search engines show in results, so they don't need to ask a developer for those SEO elements either. A profile can also be hidden with one click, and the data stays in the system.
When the changes are ready, the staff member clicks "Update openmed.pl" and the new data goes live on the website. Adding a doctor or changing a price now takes a minute and needs no ticket to the IT department.
One panel to manage clinics across the whole network
Medbill has separate roles for the front desk and administrators, and each person's access level follows from their daily duties. Every module starts with choosing a clinic, so the same system covers the work of a single front desk and the management of the whole network.
The team also manages language versions in the same panel. Price list categories, services and doctor descriptions have translations that a staff member fills in on a separate tab. The English version of the OpenMed website uses them, so it doesn't have to be maintained separately.