openEHR : General Overview

Interested in exploring an open-source standard created for management of electronic health records? This article educates users on openEHR, a platform providing framework for the representation of health data. OpenEHR uses multiple components working together to offer the ideal framework of electronic health data.

OpenEHR (open Electronic Health Record) is an open-source standard for the representation and management of electronic health records (EHRs). It is designed to provide a flexible and interoperable framework for the collection, storage, retrieval, and exchange of health data, regardless of the system or application used to generate or consume it.

The OpenEHR specification consists of several core elements that work together to provide a comprehensive framework for the representation and management of health data. These elements include:

  1. Reference Model (RM): The reference model is the core data structure in openEHR. It defines a set of generic data types that can be used to represent any clinical concept. The RM provides a foundation for other openEHR models, including archetypes and templates.
  2. Archetype: An archetype is a structured definition of a clinical concept that is based on the reference model. Archetypes are used to define the structure and content of clinical data, and they can be combined to create more complex data models.
  3. Template: A template is a pre-defined structure for clinical data that is based on one or more archetypes. Templates can be used to define the structure of electronic health records (EHRs) and other clinical data sets.
  4. Composition: A composition is an instance of a template that contains actual clinical data. Compositions are used to represent clinical information in a standardized way, and they can be stored, queried, and analyzed by clinical applications.

Now let’s look at each one of them in detail.

Reference Model

“Reference Model” provides a foundation for the development of more specific and detailed data models, such as archetypes and templates, which can be used to represent a wide range of clinical concepts and use cases. It defines a set of generic data types that can be used to represent any clinical concept, regardless of the specific clinical domain.

Here is a simple example of the openEHR Reference Model (RM) in action:

Suppose we want to store information about a patient’s blood pressure. We would start by defining a composition, which is an instance of a template that represents a particular type of clinical information (such as a blood pressure reading).

The composition would contain a number of data elements, each of which is defined using the RM’s generic data types. For example, we might define the following data elements:

  • systolic: an integer representing the systolic blood pressure reading
  • diastolic: an integer representing the diastolic blood pressure reading
  • timestamp: a timestamp representing the date and time when the reading was taken

Each of these data elements would be defined using a generic data type from the RM, such as DvQuantity for the blood pressure readings and DvDateTime for the timestamp.

Using the RM’s generic data types, we can represent clinical information in a standardized and technology-independent way. This allows the same data model to be used across different clinical domains and applications, and it enables interoperability between different healthcare systems.

Archetypes

You can access a wide range of archetypes for different clinical scenarios from the Clinical Knowledge Manager (CKM) on the OpenEHR website. The CKM is a web-based platform that provides a central repository of open, freely available, and clinically validated archetypes for use in electronic health records (EHRs).

To access the CKM, you can go to the following website: https://ckm.openehr.org/ckm/

Once you have registered and logged in, you can browse the available archetypes by category, search for specific archetypes by name, or explore the latest additions and updates to the repository.

The CKM includes archetypes for a wide range of clinical domains, such as cardiology, oncology, pediatrics, mental health, and more (907 archetypes). Some of the commonly used archetypes include:

  • Blood Pressure
  • Body Mass Index (BMI)
  • Body Weight
  • Blood Glucose

You can download the archetypes in ADL (Archetype Definition Language) format, which is a structured markup language used to define and represent clinical content models in a machine-readable format. Once you have downloaded the archetype, you can integrate it into your EHR system or use it as a template for developing custom clinical content models that meet your specific needs.

Blood Pressure Archetype

To access the Blood Pressure archetype from the Clinical Knowledge Manager (CKM), you can follow these steps:

  1. Go to the OpenEHR CKM website: https://ckm.openehr.org/ckm/
  2. If you do not already have an account, create one by clicking on “Register” and following the instructions.
  3. Once you have logged in, click on the “Browse” tab at the top of the page.
  4. In the “Browse by category” section on the left side of the page, select “Archetypes”.
  5. In the “Search for archetypes” field, type “Blood Pressure” and click on “Search”.
  6. The search results should include the Blood Pressure archetype. Click on the archetype name to view its details.
Blood Pressure Archetype

The “Blood Pressure” archetype in OpenEHR is a standardized definition of the structure, content, and semantics of blood pressure measurements in electronic health records (EHRs). It specifies the data elements or fields required to capture and represent blood pressure information and provides a common way of representing this information across different EHR systems and applications.

It includes the following data elements:

  1. Systolic blood pressure (SBP): the pressure exerted by the blood against the walls of the arteries when the heart beats or contracts.
  2. Diastolic blood pressure (DBP): the pressure exerted by the blood against the walls of the arteries when the heart is at rest or between beats.
  3. Mean arterial pressure (MAP): the average pressure in the arteries during one cardiac cycle.
  4. Pulse pressure (PP): the difference between SBP and DBP.
  5. Body position: the position of the patient during the blood pressure measurement (e.g. sitting, standing, lying down).
  6. Cuff size: the size of the blood pressure cuff used for the measurement.
  7. Device used: the type of device used to measure the blood pressure (e.g. manual sphygmomanometer, automatic blood pressure monitor).
  8. Date and time of measurement.

The Blood Pressure archetype can be used to represent blood pressure measurements taken in different clinical contexts, such as routine office visits, emergency situations, or home monitoring. It is designed to be flexible and adaptable to different healthcare settings and requirements and can be customized and extended to meet the specific needs of different healthcare providers and organizations.

Templates

A template is a pre-defined structure for clinical data that is based on one or more archetypes. It can be created by combining one or more archetypes, which define the individual components of the template. The archetypes specify the data elements, data types, and constraints for each component.

Now lets create a custom template for a clinic to capture the following vital information when the patient visits for general checkup

  1. Blood Pressure
  2. Body Temperature
  3. Pulse/Heart beat

The above-mentioned vitals are already defined as standard archetypes in CKM. As a first step, download all the archetypes from CKM using the “Bulk Export” option as show below

Bulk Export of Archetypes

Use the Archetype Designer tool to create a custom vitals template. As a first step, create an account and log into the tool.

Archetype Designer (openehr.org)

Archetype Designer Tool

Once you log into the tool, create a empty repository

Create Repository

Select the repository and upload all the archetypes exported from the CKM

Upload Archetype

Create a new template

Create Template

Choose the archetype to be added to the template and customize as required by removing all the fields and leaving only the one that is required for the clinic to capture.

Custom Template with Archetype added

Later, download the template for use in a clinic.

Download Template

We can use the template to create an application in which the doctor or nurse enters the details and composes a composition. In the following section, we will use the openEHR toolkit to create a Composition instance of this template.

Complete Demo

Below is the link to a complete demo of the steps involved in creating a custom template.

Composition

A composition is an instance of a template that contains actual clinical data. The template defines the structure and content of the composition, and ensures that the data is structured, coded, and represented in a consistent and interoperable way.

When a healthcare professional creates a clinical document, they typically use a template to ensure that the document is complete, accurate, and follows established conventions. The template may include pre-defined sections for different types of information, such as history, physical exam, diagnosis, and treatment plan.

Once the template is populated with the actual clinical data, it becomes a composition, which is a complete and structured clinical document that can be shared, stored, and analyzed in a standardized way.

The composition may be stored in an electronic health record (EHR) system or other clinical information system, where it can be accessed by authorized healthcare professionals as needed.

A composition consists of several components, including:

  1. Context: The context of a composition provides metadata about the clinical context in which the information was created, such as the patient, time, and location. This metadata helps to establish the context and provenance of the clinical information, making it easier to assess its accuracy and relevance..
  2. Content: The content of a composition represents the actual clinical information, such as signs, symptoms, diagnoses, medications, and procedures. The content is represented using archetypes, templates, and other standardized models, which ensure that the information is structured, coded, and represented in a consistent and interoperable way..
  3. Composer: The composer of a composition is the person or system that created or authored the document. The composer is also a key piece of metadata that helps to establish the context and provenance of the clinical information, so that its authenticity, accuracy, and completeness can be assessed.
  4. Category: The category of a composition specifies the type or class of the document, such as progress note, discharge summary, or medication prescription

Now let’s create a composition for the template created above by following the below steps

Create an account and login to openEHR toolkit

https://toolkit.cabolabs.com

openEHR toolkit

Upload the template, downloaded from previous section

Upload the custom template

Once the template is uploaded, you can view the dependencies and the archetypes involved.

Template Detail

In addition you can generate a composition for the uploaded template

Composition

Sample Composition data for the template uploaded

{
"_type": "COMPOSITION",
"name": {
"_type": "DV_TEXT",
"value": "vitals.0"
},
"archetype_details": {
"archetype_id": {
"_type": "ARCHETYPE_ID",
"value": "openEHR-EHR-COMPOSITION.encounter.v1"
},
"template_id": {
"_type": "TEMPLATE_ID",
"value": "vitals.0"
},
"rm_version": "1.0.2"
},
"archetype_node_id": "openEHR-EHR-COMPOSITION.encounter.v1",
"language": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "ISO_639-1"
},
"code_string": "en"
},
"territory": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "ISO_3166-1"
},
"code_string": "UY"
},
"category": {
"value": "event",
"defining_code": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "openehr"
},
"code_string": "433"
}
},
"composer": {
"_type": "PARTY_IDENTIFIED",
"external_ref": {
"id": {
"_type": "HIER_OBJECT_ID",
"value": "2551b0ca-b6fa-482c-ad8d-f3ff28367502"
},
"namespace": "DEMOGRAPHIC",
"type": "PERSON"
},
"name": "Dr. House"
},
"context": {
"start_time": {
"value": "2023-03-07T14:12:55.342Z"
},
"setting": {
"value": "emergency care",
"defining_code": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "openehr"
},
"code_string": "227"
}
}
},
"content": [
{
"_type": "SECTION",
"name": {
"_type": "DV_TEXT",
"value": "Vitals"
},
"archetype_details": {
"archetype_id": {
"_type": "ARCHETYPE_ID",
"value": "openEHR-EHR-SECTION.adhoc.v1"
},
"template_id": {
"_type": "TEMPLATE_ID",
"value": "vitals.0"
},
"rm_version": "1.0.2"
},
"archetype_node_id": "openEHR-EHR-SECTION.adhoc.v1",
"items": [
{
"_type": "OBSERVATION",
"name": {
"_type": "DV_TEXT",
"value": "Body temperature"
},
"archetype_details": {
"archetype_id": {
"_type": "ARCHETYPE_ID",
"value": "openEHR-EHR-OBSERVATION.body_temperature.v2"
},
"template_id": {
"_type": "TEMPLATE_ID",
"value": "vitals.0"
},
"rm_version": "1.0.2"
},
"archetype_node_id": "openEHR-EHR-OBSERVATION.body_temperature.v2",
"language": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "ISO_639-1"
},
"code_string": "en"
},
"encoding": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "IANA_character-sets"
},
"code_string": "UTF-8"
},
"subject": {
"_type": "PARTY_SELF"
},
"protocol": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "Protocol"
},
"archetype_node_id": "at0020",
"items": []
},
"data": {
"_type": "HISTORY",
"name": {
"_type": "DV_TEXT",
"value": "History"
},
"archetype_node_id": "at0002",
"origin": {
"value": "2023-03-07T14:12:55.366Z"
},
"events": [
{
"_type": "POINT_EVENT",
"name": {
"_type": "DV_TEXT",
"value": "Any event"
},
"archetype_node_id": "at0003",
"time": {
"value": "2023-03-07T14:12:55.369Z"
},
"data": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "Tree"
},
"archetype_node_id": "at0001",
"items": [
{
"_type": "ELEMENT",
"name": {
"_type": "DV_TEXT",
"value": "Temperature"
},
"archetype_node_id": "at0004",
"value": {
"_type": "DV_QUANTITY",
"magnitude": 102.8,
"units": "[degF]"
}
}
]
},
"state": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "State"
},
"archetype_node_id": "at0029",
"items": []
}
}
]
}
},
{
"_type": "OBSERVATION",
"name": {
"_type": "DV_TEXT",
"value": "Blood pressure"
},
"archetype_details": {
"archetype_id": {
"_type": "ARCHETYPE_ID",
"value": "openEHR-EHR-OBSERVATION.blood_pressure.v2"
},
"template_id": {
"_type": "TEMPLATE_ID",
"value": "vitals.0"
},
"rm_version": "1.0.2"
},
"archetype_node_id": "openEHR-EHR-OBSERVATION.blood_pressure.v2",
"language": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "ISO_639-1"
},
"code_string": "en"
},
"encoding": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "IANA_character-sets"
},
"code_string": "UTF-8"
},
"subject": {
"_type": "PARTY_SELF"
},
"protocol": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "Tree"
},
"archetype_node_id": "at0011",
"items": []
},
"data": {
"_type": "HISTORY",
"name": {
"_type": "DV_TEXT",
"value": "History"
},
"archetype_node_id": "at0001",
"origin": {
"value": "2023-03-07T14:12:55.386Z"
},
"events": [
{
"_type": "POINT_EVENT",
"name": {
"_type": "DV_TEXT",
"value": "Any event"
},
"archetype_node_id": "at0006",
"time": {
"value": "2023-03-07T14:12:55.386Z"
},
"data": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "blood pressure"
},
"archetype_node_id": "at0003",
"items": [
{
"_type": "ELEMENT",
"name": {
"_type": "DV_TEXT",
"value": "Systolic"
},
"archetype_node_id": "at0004",
"value": {
"_type": "DV_QUANTITY",
"magnitude": 617.8,
"units": "mm[Hg]"
}
},
{
"_type": "ELEMENT",
"name": {
"_type": "DV_TEXT",
"value": "Diastolic"
},
"archetype_node_id": "at0005",
"value": {
"_type": "DV_QUANTITY",
"magnitude": 954.6,
"units": "mm[Hg]"
}
}
]
},
"state": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "state structure"
},
"archetype_node_id": "at0007",
"items": []
}
},
{
"_type": "INTERVAL_EVENT",
"name": {
"_type": "DV_TEXT",
"value": "24 hour average"
},
"archetype_node_id": "at1042",
"time": {
"value": "2023-03-07T14:12:55.388Z"
},
"data": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "blood pressure"
},
"archetype_node_id": "at0003",
"items": []
},
"width": {
"value": "PT30M"
},
"math_function": {
"value": "mean",
"defining_code": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "openehr"
},
"code_string": "146"
}
}
}
]
}
},
{
"_type": "OBSERVATION",
"name": {
"_type": "DV_TEXT",
"value": "Pulse/Heart beat"
},
"archetype_details": {
"archetype_id": {
"_type": "ARCHETYPE_ID",
"value": "openEHR-EHR-OBSERVATION.pulse.v2"
},
"template_id": {
"_type": "TEMPLATE_ID",
"value": "vitals.0"
},
"rm_version": "1.0.2"
},
"archetype_node_id": "openEHR-EHR-OBSERVATION.pulse.v2",
"language": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "ISO_639-1"
},
"code_string": "en"
},
"encoding": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "IANA_character-sets"
},
"code_string": "UTF-8"
},
"subject": {
"_type": "PARTY_SELF"
},
"protocol": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "List"
},
"archetype_node_id": "at0010",
"items": []
},
"data": {
"_type": "HISTORY",
"name": {
"_type": "DV_TEXT",
"value": "history"
},
"archetype_node_id": "at0002",
"origin": {
"value": "2023-03-07T14:12:55.406Z"
},
"events": [
{
"_type": "POINT_EVENT",
"name": {
"_type": "DV_TEXT",
"value": "Any event"
},
"archetype_node_id": "at0003",
"time": {
"value": "2023-03-07T14:12:55.407Z"
},
"data": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "structure"
},
"archetype_node_id": "at0001",
"items": [
{
"_type": "ELEMENT",
"name": {
"_type": "DV_TEXT",
"value": "Rate"
},
"archetype_node_id": "at0004",
"value": {
"_type": "DV_QUANTITY",
"magnitude": 146.1,
"units": "/min"
}
}
]
},
"state": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "List"
},
"archetype_node_id": "at0012",
"items": []
}
},
{
"_type": "INTERVAL_EVENT",
"name": {
"_type": "DV_TEXT",
"value": "Maximum"
},
"archetype_node_id": "at1036",
"time": {
"value": "2023-03-07T14:12:55.411Z"
},
"data": {
"_type": "ITEM_TREE",
"name": {
"_type": "DV_TEXT",
"value": "structure"
},
"archetype_node_id": "at0001",
"items": []
},
"width": {
"value": "PT30M"
},
"math_function": {
"value": "maximum",
"defining_code": {
"terminology_id": {
"_type": "TERMINOLOGY_ID",
"value": "openehr"
},
"code_string": "144"
}
}
}
]
}
}
]
}
]
}

Complete Demo

Other Tools

Below are some tools used in the openEHR platform for designing, sharing, and implementing archetypes, templates, and clinical data models

Clinical Knowledge Manager(CKM)

CKM is a web-based repository for archetypes and templates. It allows clinicians, researchers, and developers to search for, view, and download clinical content from a global library of openEHR artifacts. CKM also provides a platform for collaborative development and review of clinical models, with features such as version control, change tracking, and commenting.

https://ckm.openehr.org/ckm

Archetype Designer

Archetype Designer is a tool for creating, editing, and validating archetypes and templates. It provides a graphical user interface (GUI) for designing the data elements, constraints, and terminology bindings of archetypes and templates, and can generate ADL (Archetype Definition Language) code that can be used in implementation. Archetype Designer also includes a validation engine that can check archetypes and templates for conformance to openEHR specifications.

Archetype Designer (openehr.org)

openEHR Toolkit

The openEHR Toolkit is a set of software libraries and tools that support the implementation of openEHR systems. It includes libraries for working with openEHR data structures, such as compositions, archetypes, and templates, as well as tools for working with openEHR services, such as querying, storing, and retrieving clinical data.

CaboLabs openEHR Toolkit

Conclusion

This was a general overview of the components involved in openEHR. We will see a similar overview for FL7 FHIR in the next article.

Knowledge is wasted when not shared!

Happy Knowledge Sharing!!

Subheader 1
Text Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna.Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna.


Subheader 2
Text Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna.

Subheader 3
Text Lorem Ipsum Dolor Sit Amet, Consetetur Sadipscing Elitr, Sed Diam Nonumy Eirmod Tempor Invidunt Ut Labore Et Dolore Magna Aliquyam Erat, Sed Diam Voluptua. At Vero Eos Et Accusam Et Justo Duo Dolores Et Ea Rebum. Stet Clita Kasd Gubergren, No Sea Takimata Sanctus Est Lorem Ipsum Dolor Sit Amet. Lorem Ipsum Dolor Sit Amet, Consetetur Sadipscing Elitr, Sed Diam
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna.

Rajesh Vinayagam
Distinguished Architect

Share this Article

Latest Insights

Tag Cloud

Share this Article