Chayka Clinics is a network of premium healthcare facilities with top-notch doctors, where you can get help for anything from a broken leg to a toothache.
To manage their operations, they use a custom Electronic Health Record System(EHR), built by a small in-house team of developers.
The client brought us in as consultants: their dev team was slow to deliver new features, hiring new developers was tough, and even when they did hire, the new folks increased payroll without speeding up the delivery of critical business features. The business wanted to know why this was happening and how to fix it.
Adopted a standard data model based on FHIR (Fast Healthcare Interoperability Resources). Beyond the obvious benefit of keeping data in a unified standard, FHIR helped us dive into the medical domain. For example, studying the standard taught us that diagnoses need to be linked to specific body parts (e.g., “caries” on “tooth 22, tongue side”).
Built an event-driven model to allow relaunching the system in parts. For instance, if the business plans to open new clinics in Dubai, we could focus on integrating with local payment systems (mandatory for operations) without rewriting the medical components.
Chayka works with multiple labs, sending patients there and retrieving test results. Naturally, this process needed maximum automation.
Integrations like this are tricky: other systems are built by developers with their own ideas about the domain, data structures, and reliability of data transfer.
In the new architecture, we managed to build this module as a standalone service with a team of 4 developers in 6 months.
Our main goal from the start was to create a user-friendly interface for doctors.
The problem? Doctors had to fill out patient records in a way that mirrored the database structure: select a patient, enter a diagnosis, type observations. Great for developers, terrible for doctors.
Back in the 1960s, a better format for clinical notes was developed—SOAP (Subjective, Objective, Assessment, Plan). Our new interface uses this format, speeding up data entry wherever possible.
Implementing this “live” was tough: patient records are the heart of the MIS. To avoid rewriting the entire working system, we focused on a small but exciting piece—dentistry.
This task was technically tougher than the others. We had to integrate deeply with the old system: add more data to the event stream, tackle technical debt in the streaming setup, and implement cross-authorization so users could switch seamlessly between the old and new systems.
To ensure seamlessness, we figured out how to embed our frontend into the existing one.
There are elegant solutions like micro-frontends, but we needed results fast, so we worked within the current frontend, setting aside our beloved Vue.js to work with React.
This was a blow for us, but we don’t blame the client—it was a force majeure situation.
Could we have hit the big goal faster? Sure. We could’ve taken risks, like starting a major service without testing on a smaller scale, or pushed the product team harder to run more projects in parallel. But those steps would’ve raised risks beyond what we or the client were comfortable with.
Stepping back to our “big hypothesis”—that transforming a business’s tech is easier with a small, highly skilled dev team implementing changes hands-on—we think it mostly held true. Right now, we’re kicking off another similar project, and we hope to see it through this time.
If you need this kind of help or just some awesome development work, ping Samat Galimov.