Hospital Software With No Tests?

Is software really responsible without testing it before shipping to production?

An official statistic of 2012 shows that the total number of doctor's appointments, hospitalisations and emergencies in all hospitals in Portugal was 36.933 thousands. Now imagine the damage and the apocalipse of implementing a buggy software! Unthinkable and criminal right? Every software should be tested before it is shipped to hospitals right?!
Well this year a new software was released in all hospitals in Portugal that is buggy and stops working all the time and sometimes for hours! In 2018 it appears that it’s still correct to deliver untested solutions that affect millions of lives with no consequence.

Does Unit testing and creating several environments for executing real tests with QA seem too complex?!

As a software developer I have seen a lot of applications without a testable architecture and the answer I always get is “there was no time to do something better, changing this at this stage is complicated.” and in 90% of the cases I just let it go and try to implement the changes over time but can you really sleep well at night knowing that hospitals use your buggy software that is not tested that sometimes can be the difference between life and death?!

It is my sincere opinion that all software that provide services in sectors that have to deal with life threatening situations should be regulated by the EU.

Here is the complete video of the report:

 

 
Let’s analyse the software that was implemented and its consequences step by step!


User Interface

The user interface doesn’t seem to have been developed by a design team, it is simply not usable, it is ugly and seems extremely complex to operate. We all know hospitals are hard to be in, the design should allow people who use the software to experience less stress when doing boring and complex tasks.

The error messages are inappropriate and do not explain what is the root of the problem, was the database that was down? did you just had an object reference not set to an instance of an object? not even god knows.

 Tests

Not applicable, why? No actual reason, it must have been really a drag to do Test Driven Development and QA.

Customer feedback

The customer feedback is really bad, like national television bad! people are calling the entire company that provided the software as incompetents and irresponsable (I actually agree with them). The hospitals say that the software was not even tested before going to production. 

Responsibilities 

If Portugal was the USA by now the government would have been sued by ~33.933 thousand people, but no responsibilities have been publicly announced, and apparently there are no plans of hiring a better company to replace the software with something that actually works.

 WHAT IS TESTABLE SOFTWARE ANYWAY?!

Testable software implies that all parts of your software can be tested before it is used to integrate other components, even those components when they are fully integrated should also be testable.
1 + 1 = 2 right? That is the logic of Unit Testing in all software layers, you should create at least 90% of all the conditions your logic will have to operate and expect it to have an output that matches your test conditions - this is called in the software world as Test Driven Development (TDD) or common sense.

The Test Driven Development flow should be:
1. Create the logic using interfaces with maximum abstraction;
2. Create several tests to have at least 90% of the input/behaviour conditions
3. Target your logic against all the test conditions and expect it to pass all the tests.

But just testing the software components are not enough, there should always be a team of people doing quality assurance (QA) of all the releases in environments that match production in speed, quantity of information, complexity of information and quality of information.

To do quality assurance it is necessary to have intuitive platforms that provide easy access to maintain and create documentation and workflows that can be used to manage teams and timelines, see Atlassian Confluence if you still use Word in 2018 and expect miracles.