Three Word NHS Number
So occasionally you have a hairbrained idea and decide to produce a proof of concept. Let’s back up a bit:
The year is 2002 and Connecting for Health (yes “that” £12.4bn white elephant that umbrellaed NPfIT) has just been established, the “new” format NHS Number has existed for 7 years (since 1995) but isn’t seeing much use. There is a campaign to increase adoption and use of the NHS Number to help join-up and underpin the nascent infrastructure of the NPfIT. Fast forward to 2015 and the NHS Number is legally mandated to be used as a single patient identifier across health and care with the introduction of the The Health and Social Care (Safety and Quality) Bill.
And yet here in 2020 the NHS Number is rarely used as the primary identifier for practical purposes in secondary or primary care (but is used where the two interface). The reasons for this are complex.
A problem with adoption
One of the main reasons the NHS Number is passed over for local identifiers (particularly in secondary care) is that local identifiers are usually shorter, easier to enter and remember.
Hospital Number: F456321
NHS Number: 943 476 5870
A hairbrained solution?
There have been similar attempts in the past to encode the NHS Number into a more user friendly format (e.g base36) but while these have shortened the number to the typical length of a local identifier (943 476 5870 encodes to 4C17RXQ) it is questionable if this improves overall usability due to the alphanumeric mix.
In the cryptocurrency world there is an analogous problem of making the entry of and storage of binary keys user friendly. This has been somewhat solved by the BIP39 specification. There is also a well know company that has been pedalling a solution in search of a problem that encodes sets of numbers as words.
A proof of concept
The prototype I have developed uses the BIP39 wordlist (American spelling included e.g. color vs colour). The algorithm of the encoding decoding process is as follows:
The NHS Number is broken down into 11bit chunks in LSB order. Each chunk is mapped to a word from the BIP39 English wordlist. Decoding is simply the reverse.
American spelling of words.
See above the decision was made for the proof of concept to use the BIP39 English wordlist as is, going forward this would need to be altered to use the correct spelling of words and replace some e.g. satoshi)
This sometimes creates four words.
The NHS Number space is divided across the four nations as follows (at my best guess from public sources ):
- 010 101 0000 to 311 299 9999 is allocated to the CHI number in Scotland.
- 320 000 0010 to 399 999 9999 is allocated to Northern Ireland.
- 400 000 0008 to 499 999 9999 and 600 000 0000 to 708 800 0019 are the current issuing ranges in England, Wales and Isle of Man. Legacy numbers in England are also in the ranges 3xx xxx xxxx and 72x xxx xxxx overlapping with the CHI and Northern Ireland allocations.
Within these ranges (up to a number of 708 800 0019) this solution will produce three words. The encoding upper bound is actually 858 993 4591, and theoretically due to the Mod16 check digit it should be possible to encode the whole number space (up to 999 999 9999) as three words but more work to ensure there are no overlaps needs to be done before implementing this.