Advanced Health & Care – Mobile point-of-care application

As technical lead for a team at Advanced Health and Care, I was responsible for the architecture and implementation of a new project, with the direct aim of providing a mobile offering that could integrate with existing products, and the longer term objective of introducing a service oriented back-end to allow the existing product to be re-architected into a more maintainable form and integration with other products.

This team had been working with the same technology stack for a long time – in this case Windows Forms – and part of my remit was to coach the team in the technologies and patterns of client/server development and service orientation. I ran workshops on subjects like test driven and behaviour driven development, and arranged for every member of the team to present a topic to the rest of the team, such that they all had an area to champion, covering things like Clean Code, SOLID principles, Git, and MVVM/MVC patterns. To further encourage adoption of a more inquisitive approach, I also started things like a “cool tech forum” for the team to share things they’d found interesting.

The product itself was to be a cross-platform mobile application, delivered as HTML5 content. I led an initial design sprint, where the sole objectives were to evaluate different options and find their strengths and limitations in our context. This allowed us to launch into the actual features with a confidence that we had a suitable foundation, and some patterns in place, which we then refined as and when we found reason to do so.

The application was primarily to provide staff in a care facility to schedule and record what assistance they had provided to each patient; this task is conventionally done with pen and paper, and typed up at the end of a shift. By delivering this capability electronically, we are able to provide and capture much more valuable information. For example, some patients will have preferences about how things are done, which can be noted electronically but would be overlooked on paper, and details about how a task was completed allowed a feedback loop in updating care plans.

The original design for this software had been a series of similar but separate workflows, initially about a dozen, which would be hard-coded. I worked closely with the product owner in breaking down these requirements to capture the future intent, and established that we could build a data-driven model to capture any task definition, which would allow each customer to build their own custom workflows. We used a document database to power this particular feature, with a rich UI that would build dynamically based on template content. We offered capabilities such as calculated values, via JavaScript expressions in the template, which were far beyond what had been considered possible with the original approach, and made a product that is currently winning new business based on this feature alone.