Clinical data exchange PoC
We delivered a PoC of a Flutter-based application for ambulance doctors and paramedics to securely store and exchange clinical data, which has passed the beta testing phase and attracted 30+ new clients.
Context
Our customer is a provider of software solutions for the healthcare industry. They had a clinical data exchange application intended to help ambulance doctors and paramedics quickly assess patients’ complaints and react to them by adding all the clinical data (including cardiograms from ECG devices) to the patient information form on their devices during patient examination.Â
The app was developed for medical centers, hospitals, and other health institutions and was available only for Windows tablets. The company planned to expand and increase the number of users, so they wanted to build a solution for all platforms to reach a wider audience. The solution would also have secure record access and storage features to safeguard patient privacy and comply with HIPAA. To help bring their vision to life, the customer hired Itransition to develop their medical app.
Solution
Discovery phase
To identify the project’s context, validate requirements, and choose the right tech stack, we offered the customer to start with a discovery phase. The customer provided us with access to the current system and additional materials to get a better understanding of the project, like .zol files from ECG, anonymized insurance card samples, etc. We also conducted discovery interviews. Based on this information, we prepared a vision and scope document with all the solution requirements, such as:
- Functionality for attaching files (e.g., files from ECG devices, photos of OCR insurance cards) and transferring these files from/to any device regardless of the OS they are stored at
- Strong text and images encryption/decryption to protect solution against data leaks
- Location determination features so that paramedics don’t have to input manually the address of the medical examination
The customer prioritized optimized TCO, simplicity of system maintenance and support, stable performance, and flexibility in the future solution. Having considered all these aspects, we recommended opting for cross-platform application development. Due to the industry and technology specifics, we suggested PoC development to evaluate the solution's technical feasibility and test the idea and then gradually scale the solution’s functionality. We opted for Flutter as it is the most suitable option for PoC development and other cross-platform technologies cannot be used for web app development.
Clinical data exchange PoC
Itransition delivered a clinical data exchange PoC available on iOS, Android, and Windows devices.
We chose the BloC (Business Logic Component) Pattern with a Clean Architecture approach, which allowed us to build a flexible solution with easily customizable platform-specific functionality. The solution also proved easier to test because of the separation between the business logic and key features.
Parsing .zol files from the ECG device
As the customer wanted to attach files from ECG devices, we had to implement parsing .zol files and used Zoll SDKs for each platform. To deliver custom platform-specific functionality, we built the layer with Flutter plugins and then a layer of calls from the Flutter application. We also customized Android, iOS, and Windows source code to ensure smooth file transferring to Flutter plugins.
Data encryption and decryption
We created a solution for data encryption and decryption to ensure the app’s HIPAA compliance. To be encrypted and decrypted, attached files should first be uploaded to the local data storage, so we used Hive as key-value storage with a built-in encryption mechanism.
To encrypt data, we used a crypto library with a unique device ID/value that was generated by the backend as a private key. The encrypted file is securely transferred to the other device, and then the file is decrypted with the Hive tools. Then the app shows a preview (if it is possible) or just the icon and name of the file, which can be opened with the standard OS functionality.
We also prepared steps and instructions for secure information extraction from iOS-, Android-, and Windows-operated devices with broken screens. For example, when users know the private key and the data from the iOS device is synchronized with iTunes and Mac, they can access and recover the necessary data.
Attaching files and taking photos
We used Flutter capabilities to enable onsite doctors to take photos and upload related documents in one click. For selecting images from the Android and iOS image library and taking new pictures, we implemented the Flutter Camera plugin.
Flutter has no limitations or restrictions for attaching files of any size and for any platform. Thus, we utilized Flutter’s packages to simplify finding files in the device's file system and creating attachments.
Data transfer with BLE
For file transfer, we used BLE as it consumes far less battery power than classic Bluetooth and offers a connection that is both robust and reliable. To transfer data between two devices, one should be acting as a Bluetooth central and the other as a peripheral. But since there is no solution in Flutter for switching the device to the peripheral mode, we used a native development layer for all the platforms. After that, the data was proxied to the FlutterBlue plugin and transferred using BLE directly to another device.
Medical records recognition
The customer wanted to develop functionality that would read a patient’s name and medical number from the insurance card, take a photo of the card, detect the necessary data, and add it to patient info. The customer provided us with various insurance card samples and we recognized the following implementation challenges:
- Horizontal alignment problem (e.g., if there are no visible edges of the card, the alignment quality drops)
- Dataset problem (patient name can be placed differently on patient cards)
- Model quality problem (with a significant horizontal shift, the text may turn upside down and decrease the quality of recognition)
To overcome them, we implemented an ML model using PyTorch. First, with the CRAFT text detector, the model detects the text area by exploring each character's place and affinity between characters, finding the bounding box of the text, and recognizing the text location based on the coordinates calculated on the grounds of analyzed insurance cards. To recognize text from its placement on the image, we used SATRN. After that, the ML model adds recognized data to the relevant field in the app.
Geolocation
The Flutter Location plugin handles identifying a location on Android and iOS and provides callbacks when the location is changed. With the Flutter Location plugin, the app:
- Determines user location with latitude and longitude
- Allows a user to adjust the map to point at the exact spot where they picked up the patient
- Calculates and displays the address based on the determined latitude and longitude
For obtaining coordinates and then saving them, we also used Hive as a local data storage for creating a NoSQL database.
Dynamic UI
The customer wanted to show the first version of the app to their clients and let them test it on their devices. Thus, we offered Dynamic UI implementation to allow clients to customize the app’s UI based on the definition of an existing page or Java portlet definition. We have generated an example JSON file that allows us to arrange UI elements using certain rules in Flutter.Â
To create a fully dynamic UI, we implemented features that allow for applying masks to certain fields and displaying field validation error messages. The customer also shared with us their style guidelines, which we used to create wireframes with a screen map and clickable menu items.
Results
Itransition delivered a PoC of a Flutter-based application for ambulance doctors and paramedics to securely store and exchange clinical data. The solution has successfully passed the beta testing phase and helped the customer attract 30+ new healthcare institution clients. Our developers have become an integral part of the customer’s in-house team, and after the PoC delivery phase, they continue working with us on developing a full-featured app.
Services
Healthcare software development solutions & services
Entrust your medical software development to a company with 25+ years of experience in healthcare IT. Compliance and security guaranteed.
Services
Healthcare mobile app development
Turn to our mobile medical app development experts to get a custom solution for convenient, on-the-go healthcare delivery and optimization of medical workflows.
Case study
Custom database development for a healthcare charity
Learn how Itransition’s custom database development provided healthcare professionals with accurate data on defibrillators within their areas.
Case study
Oncology treatment platform
Learn how we developed an oncology treatment platform that streamlines therapy order creation and facilitates evidence-based patient treatment decisions.
Case study
Medical equipment management software
Learn how Itransition developed seven versions of TOME blood data collection and management software for Terumo.
Case study
A remote patient monitoring and mobile telehealth suite
Learn how Itransition developed a remote patient monitoring and telehealth platform for sexual assault victims for a US research center.
Case study
Asthma monitoring software suite
Discover the tips and tricks behind asthma monitoring software developed by Itransition’s team to help asthma patients self-manage their condition.