Sunday, 14 February 2021

EF Core 5 data migration in .NET 5 : in a separate library and automatic deployment

I have been thinking to write this topic for some time. I did a project in the past with EF data migration, but things have changed and its library dependencies have changed as well. Now, moving forward to January 2021, I will do this in  .NET 5 project and with EF Core 5 (5.0.3)

The source code of this project can be accessed from Github.

Sunday, 7 February 2021

NHS MIM and DMS tools: Code generation, schema and validation

1. Introduction

When working with the NHS projects, I need to deal with a large number of linked schemas, particularly with domains that use the NHS Messaging Implementation Manual or the NHS Domain Messaging Specification. The MIM or DMS is pretty much the same, except MIM covers multiple domains while DMS only covers just one domain. MIM was firstly introduced to cover domains like EPS, Referral (Choice and Book), GP2GP, and PDS. Later one NHS agency chose to publish specification per domain thus DMS was introduced. MIM or DMS contains specification artifacts which are the output from HL7 V3 modelings such as interaction and messaging specification within a domain or multiple domains.

Saturday, 14 November 2020

C# Code Generator from Schema

When you work in the back end, once in a while, you will need to generate code from XML schema. Many applications define their data model using XML schema. Particularly when working with NHS projects and working with the integration with legacy NHS services, which is based on HL7 V3 MIM (Manual Implementation manuals) or DMS (Domain Message Specifications). I need a library in C# to work with the data models. In the past, when I was still working for a primary NHS GP provider, we used a modified version of CodeXS, which is not available anymore publicly. 

Sunday, 27 October 2019

Hackathon: Healthcare Interopen

Here is my week in Interopen hackathon 14 -15 October 2019, and it has been a while ago now. The hackathon is a demonstration of how Healthcare IT Suppliers can interoperate with each other, particularly using FHIR data standards. There were two teams from EmisHealth, and I was represented EmisHealth from GPConnect as a technical lead for this hackathon. Our team focused on Medication Reconciliation workstream. During the course of the two days, I built the API to aggregate Medication data from different suppliers, Orient, Better Health, and Ascribe and they were consumed by the UI developed by our second team, and also consumed within the EMIS Web product.

Wednesday, 25 September 2019

NET Core 3.0: SDK, Runtime and Set up for Development

1. Introduction

.NET Core 3 was just released recently, along with C# 8, with poweful features and improvements. As I am planning to write a couple of articles about .NET Core and its interactions with different kinds of software packages, this is a good time to do so. This is likely to be the first of many articles about the .NET Core in my blog.

I will concentrate first on the topic of the .NET Core SDK and Runtime Versioning, and the Set up on a development machine in this article. .NET Core evolution has gradually resulted in many SDK and runtimes and installing the latest SDK and Runtime sometimes is not sufficient in my experience. Without a strong foundation and a good understanding of various things, a little hiccup is likely to throw us into confusion. This article is my attempt to demystify this kind of experience through many trials and errors and hopefully put us in a strong foot to start a .NET Core journey going forward. Potentially there are many things I may have missed along the way, please free to comments and I am happy to rectify after some double-checking.

Sunday, 15 September 2019

Working in an agile Team

When I first joined my current company, as a software developer, I worked in a waterfall engineering process environment. I had a team lead which would give some job to do, and for the rest of the time, I could spend a number of days without interaction with other people. Working in those days was soul-sucking, draining my energy and motivation bit by bit. Things improved a little bit when I was moved to a larger team, and the situations were pretty much still the same, but with harder and complex problems to solve and this gave me a bit more motivation to work.

FHIR Path Validation with SpecFlow

I worked on a project related to FHIR (Fast Health Interoperability Resources), and I was temporarily moved to the test automation team to help them with their workload. I learned soon that they wrote a lot of validators code to interrogate and validate different part of FHIR resources. For example there were ObservationValidator, ImmunizationValidator and the list went on.

I was thinking this was not effective as it did not conform DRY (Don’t Repeat Yourself) principles. I did my research and considering different alternative ways to replace the framework such as using JSON path, XPath and lastly FHIR Path. FHIR Path seems to be no brainer solution to choose from as it is written especially for navigating FHIR resources.

The full specification of the FHIR Path can be found here . Here is some snippet from the web page explaining what FHIR Path is.