Clinical Information Systems from Software Development Perspective

From Clinfowiki
Jump to: navigation, search

Clinical Information Systems from Software Development Perspective

Modern day Clinical Information Systems (CIS) are complex as they are not just limited to patient’s Electronic Medical Record (EMR) but, also possess the capabilities to interact with internal systems by ordering and storing results from:

  • Labs
  • Radiology
  • Pharmacy

They also interact with external systems to provide:

  • Coordination of Benefits (COB)
  • Coordination of Care (COC)
  • Reporting and reimbursement of Claims

In order to accomplish above features, CIS have Interoperability [1] capability. This makes CIS development and support even more complex and complicated.

Modular approach

The CIS developers use modular approach in CIS development. In Modular approach, various components of CIS are designed, developed and tested independently. The customers usually have the choice to buy independent modules per their needs. Within these modules, the functionalities are developed using Modular programming technique. Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules [2]. This technique provides the ability to develop and test functionalities as they are delivered by various teams and integrate them once they are fully capable.

Software Development Life Cycle (SDLC)

In broad terms, System Development Life Cycle is described as a process for planning, creating, testing, and deploying an information system [3]. Software Development Life Cycle (SDLC) is distinct from System Development Life Cycle as it is limited to the software aspect of CIS product. The nuances of Project logistics are dealt at the System level. SDLC goes through the phases as outlined below. The transition from one phase to another is achieved when a set of objectives or phase gates are met. These phase gates are usually determined by the project management team.

Idea / Concept Phase

Idea / Concept phase is when the CIS product idea is conceived. There could be financial or capability offerings driving the need of a new CIS product.

Requirements Phase

In requirement phase, functional and non-functional requirements are identified, documented and reviewed. The sources for these requirements are domain knowledge experts. The IT analysts work closely with these experts to finalize the new/enhanced capabilities of the CIS product.

Design Phase

The IT Architects identify the architecture of the CIS product in this phase. Since modules have to interact with each other within the CIS product, the architecture should support that interoperability. All the interactions are identified, documented and reviewed with different stakeholders. The design documents provide the details on how the requirements identified in the requirements phase will be met or not met. It also highlights the development methodologies and technologies that will be utilized to accomplish the needed functionalities in the CIS module.

Development Phase

A team of computer software developers with the skills in computer languages, develop various features within a module. The development team follows the methodology and technology identified by the IT architect in the design phase. The development teams are divided into sub-teams based on the skill requirements.

Testing Phase

A team of software testers develop test cases to test the functionalities of the module. They validate that the software perform the functions as identified in the functional and non-functional requirements.

Deployment Phase

The deployment team packages the module into a deployable application. They make certain that all the computer software and hardware pre-requisites are met. They also perform post deployment configuration of the application, to ensure it can perform the needed functions as well as interact will other modules of the CIS product.

Training Phase

Depending on the need, the training phase encompasses both the end user training and the system support and configuration training. The end user training is focused on the day to day operations which allows a user to utilize the module to perform his / her duties. The system support and configuration training is provided to the system support personnel to keep the system’s software and hardware up-to-date and operational.

Maintenance Phase

New Software enhancements or fixing of software issues are performed in the maintenance phase. Often, Software development companies have dedicated teams for new enhancements and fixing of issues in the software modules.

Waterfall model

SDLC phases as defined above, are part of most software development processes [5]. Waterfall model is sequential. Successful completion of one phase triggers the start of the next phase.


Agile model

Agile software development is a software development model in which requirements and designs are fluid. It is mostly used in the environment where teams are experimenting with the functionalities and constantly going back to the end user for validity of the solution. It is also useful in the cases where timelines for the delivery of module is aggressive [4]. Although it also go through the software development life cycle phases as outlined above, the phases are compressed or combined with others to achieve shorter timelines, design refinements and requirement.


References

[1] http://clinfowiki.org/wiki/index.php/Interoperability
[2] https://en.wikipedia.org/wiki/Modular_programming
[3] https://en.wikipedia.org/wiki/Systems_development_life_cycle
[4] https://en.wikipedia.org/wiki/Agile_software_development
[5] https://en.wikipedia.org/wiki/Software_development_process

Submitted by Irfan Khawaja