Imaging scans often turn up something nobody was looking for, called an incidental finding, like a small spot on the lung seen on a scan done for another reason. About 6–12% of radiology reports recommend further action like a follow-up scan, which may be due in weeks, months or even years. Nobody owns making sure it happens, and 61% of them are missed in practice. In one study, 44% of the patients whose follow-up was never acknowledged by their doctor were at risk of serious harm, such as a suspected cancer.
Our first product went live 6 months after we started. Then came 2 pilots, and then the first 4 contracts, all from cold outreach, securing $212K in annual recurring revenue at 1 hospital and 3 imaging centers.
Integrating with hospitals and imaging centers
Before software can read a report, it has to receive it. The scanner sends its images to the PACS, the image archive, as DICOM files. The radiologist reads them in the PACS viewer and dictates and signs the report in a reporting system, which passes it to the RIS, the radiology information system that holds orders, the schedule and reports. The images themselves stay in the PACS, though many vendors sell the two together as one RIS/PACS. In hospitals on Epic, the RIS is part of the EHR. Reports leave as HL7 v2 messages through an interface engine (e.g. Mirth Connect or Rhapsody), typically over a secure site-to-site VPN, and every site is set up a little differently. Our software integrated with what each site already had, so nobody had to change systems.
Reading reports before large language models
This was built before generative large language models, using natural language processing (NLP): smaller models each trained for one job, plus fixed rules. Reports are free text full of shorthand. Reading one meant finding each finding and its size while skipping any the report rules out (“no sign of”), translating the wording into standard medical terms (RadLex and SNOMED CT), then applying the published guidelines from the American College of Radiology and the Fleischner Society to decide which follow-up the finding needs and when. It covered ten kinds of incidental finding, among them lung and thyroid nodules, kidney, liver and adrenal masses, pancreatic cysts and abdominal aortic aneurysms. We built our own labelled set from a partner’s messy real-world reports to train and test it.
Closing the loop with care coordination
Each follow-up then had to be tracked and managed until the loop was closed, meaning the next scan actually happened for that patient. The application layer kept a worklist of patients who needed one, watched scheduling to see whether each was booked, matched it to a later exam for the same patient, and reached out to the doctor and the patient by text, email, letter or the doctor’s own systems when it wasn’t.