More resources to treat illnesses, increasing costs of medication, and medical specialists spread around the globe are all reasons for demanding fast, reliable, and convenient information exchange to support collaboration in the healthcare environment. Information exchange between institutions, businesses, and even across continents is a problem not only in the healthcare environment, but also in any environment having the need to collaborate.
Building applications that support collaboration requires technologies that enable the exchange of information in common, standardized formats. These agreed formats are often created by governments, industry consortia, and standards-developing organizations, such as Health Level 7 (HL7) in the healthcare area. One specification of HL7 in particular, the Clinical Document Architecture (CDA), is designed for standardized exchange of patient information.
Increasingly, patient information is represented, stored, and exchanged electronically utilizing healthcare formats, such as HL7 CDA, typically implemented using the Extensible Markup Language (XML). Having patient information available electronically allows the use of modern and well-established technologies such as instant messaging. Instant messaging is already present in the healthcare environment, but the prototype described in this article is based on an end-to-end XML architecture. In an end-to-end XML architecture, information encoded in HL7 CDA XML documents is stored in the same format in an IBM DB2 pureXML database, exchanged in the same format utilizing Web services, and visualized in the same format using IBM Lotus Sametime Connect Client.
This article introduces a healthcare scenario and the principles of an end-to-end XML architecture. It explains how a prototype Sametime plug-in for instant messaging clients can be used to access and display XML patient data stored in a database. The access is triggered by the particular text that is typed into an instant messaging exchange between two or more parties. All parties in the instant messaging session can see the displayed patient data, provided they have the plug-in installed. This article explains how to install and configure the plug-in, and how to re-configure the plug-in for another scenario. The plug-in configuration file settings in the article examples are suitable for accessing the pureXML industry formats demonstration but can easily be altered to access other Web services. This article ends with a summary of related areas that can be explored further.
Sametime applications provide real-time interfaces to unified communications and collaboration services. Such interfaces can be part of business process definitions in areas where human communication (or the lack of) may cause the business process to slow down or stop. In other words, the purpose of a Sametime application is to give humans the means to reduce or, if possible, eliminate human latency from a business process. Business processes whose definition includes unified communications and collaboration services are known as Communications-Enabled Business Processes, or CEBPs. Solutions that automate business processes using CEBP definitions are known as CEBP-Based solutions. The scenario described in this article is an example of a CEBP.
To demonstrate the ability of instant messaging to support collaboration, the following example, illustrated in Figure 1, is introduced. The patient Sully Van has visited Doctor Durenda Flor at the local hospital due to a painful and ongoing headache. After being released by the hospital, the doctor Durenda Flor adds the new information, gathered by examining Sully Van, to Sully Van's Electronic Health Record. Sully Van was also told to meet again with his local practitioner one week after being released from the hospital for a final check-up. So one week passes by, and Sully Van visits his local practitioner Chuck Smart and tells him about the incident. It would be helpful if the local practitioner Chuck Smart could see the findings his colleague Durenda Flor had recorded a week earlier.
Figure 1. Healthcare collaboration for sharing patient information between medical professionals
According to the example situation, there are different options for how Chuck Smart may request information from Durenda Flor. Chuck could simply call Durenda and ask her to describe the results of her examination. Another option could be that Chuck asks Durenda to fax the patient record to Chuck's institution. A third alternative might be to request patient information through instant messaging such as Lotus Sametime Connect. The prototype described in this article illustrates a plug-in for Lotus Sametime Connect, allowing the retrieval of HL7 CDA XML documents stored in a DB2 pureXML database. While Chuck and Durenda are connected through instant messaging using Lotus Sametime Connect, Chuck can send an instant message to Durenda asking about the patient Sully Van. Behind the scenes, the plug-in in Chuck's Lotus Sametime Connect client analyzes the message and accesses the patient's information in Durenda's system, making the data available to Chuck.
The initial purpose of HL7 CDA XML documents was to provide a standardized format to exchange patient information. However, HL7 CDA XML documents are also used for storing patient information in this example. The approach described here also uses HL7 CDA XML documents in combination with existing XML processing technology to visualize patient information to users of an application. Using HL7 CDA XML documents for storing, exchanging, and visualizing implements an end-to-end XML architecture, as illustrated in Figure 2:
Figure 2. End-to-end XML architecture for supporting healthcare collaboration
The end-to-end XML architecture contains three layers — the data layer, the Universal Services layer, and the user interaction layer:
-
Data: The data layer represents a DB2 pureXML database using
the native XML storage capabilities of DB2. Native XML storage means
that XML may be stored directly in the database without the need to
split information encoded in the elements and attributes of an XML
document into relational tables. Therefore, the database serves as a
data store for HL7 CDA XML documents. The database was created using
so-called industry bundles, which are an easy and convenient approach
to create and populate a database. These industry bundles are
available for free for a variety of industry formats including the HL7
CDA. For more information on industry bundles, refer to the
Resources section of this
article.
-
Universal Services: The Universal Services are a simple but
fixed set of operations, including insert, update, delete, and query,
allowing the exposure of any XML column of a DB2 pureXML database
through Web service operations. The latter allows accessing the HL7
CDA XML documents stored in the database through simple Web services
requests. The Universal Services, containing all the necessary
components to successfully set up and configure the services, are
available for free. For more information on the Universal Services,
refer to the Resources section of this
article.
- User interaction: The user interaction layer allows a user to interact with an application (for example, visualizing information stored in the database). In this case, the plug-in for the Lotus Sametime Connect Client allows access to the database through the Universal Services to retrieve appropriate patient information and viewing of the information retrieved. More details regarding the plug-in functionality, such as how patient information may be retrieved through the Lotus Sametime Connect Client, are described in the following sections.
Lotus Sametime Connect Client has been extended by implementing a prototype plug-in that allows the retrieval of HL7 CDA XML documents, representing patient information, stored in a DB2 pureXML database. This section describes the implementation of the plug-in, illustrated in Figure 3. The description of the functionality is based on the assumption that a medical practitioner launches Lotus Sametime Connect Client (from now on simply referred to as a client) with the intention of requesting patient information from another practitioner.
Figure 3. Implementation of the plug-in providing the functionality to retrieve and view XML
As indicated in Figure 3, the client loads a customizable initialization file while launching (1). The initialization file (see Listing 1 for an example initialization file) contains parameters to configure the client, such as the endpoint of the Universal Services to access HL7 CDA XML documents stored in the database. The endpoint, for example, is used by the client to submit Web service requests to access the HL7 CDA XML documents stored in the database. Note that all parameters in the initialization file are described along with the description of the functionality throughout the following paragraphs. After loading all the configuration parameters and launching, the client is ready to receive and process messages entered by the user.
Listing 1. pureXML plug-in initialization file
<collaboration>
<regexpr>patient\s([^\s]++)\s([^\s<]++)</regexpr>
<keysQuery>
XQUERY declare default element namespace "urn:hl7-org:v3";
for $patient in db2-fn:xmlcolumn('DB2ADMIN.CDA.DOCUMENT')/ClinicalDocument
where ($patient/recordTarget/patientRole/patient/name/given/text() = "${1}"
and $patient/recordTarget/patientRole/patient/name/family/text() = "${2}")
return <entry id="{$patient/id/@root}" label="{$patient/title/text()}"/>
</keysQuery>
<documentQuery>
XQUERY declare default element namespace "urn:hl7-org:v3";
for $doc in db2-fn:xmlcolumn('DB2ADMIN.CDA.DOCUMENT')/ClinicalDocument
where ($doc/id[@root = "${key}"])
return $doc
</documentQuery>
<serverURL url="http://purexml.dyndns.org:9080/DB2pureXMLDemo/cda/cda.dadx"/>
<xsl url="file:/C:\st_purexml\ibm-cda.xsl"/>
</collaboration> |
Triggering the client to request information from the database (2 in
Figure
3) is controlled through
particular keywords contained in the text entered by the user into the
chat window. The pattern that the text message must correspond to is
defined through a regular expression defined through the
<regexpr> element in the
initialization file. The regular expression in the current example is
defined as the word "patient", followed by two additional words,
representing the name of a patient. An example for a corresponding text
pattern would be "patient Sully Van".
If the practitioner enters a message containing the pattern, the client is
triggered to query the database for HL7 CDA XML documents for the
particular patient (3 in Figure 3). The XQuery
expression to query the database for appropriate HL7 CDA XML document is
also defined in the configuration file through the element
<keysQuery>. The query is
designed to return a set of unique identifiers for each of the records
found in the database as well as a description of the XML document itself.
The unique identifiers returned by the query are needed by the plug-in
itself for processing the different XML documents. The description, also
returned by the query expression, is used for providing the practitioner
with a list of HL7 CDA XML documents that matched the input parameters (2
and 3 in Figure 3); for example, patient name Sully
Van.
After the practitioner chooses one of the HL7 CDA XML documents, the client
queries the database for the particular XML document selected (4). To
retrieve the particular XML document, the client utilizes the XQuery
expression defined through the
<documentQuery> element in the
initialization file as well as one of the keys returned through the
previous XQuery expression. The key used matches the key selected by the
user.
Once the XML document is received by the client, it is, before being
displayed, transformed using an XML stylesheet (5 in
Figure 3). The stylesheet to be used is defined
through the <xsl> element in the
initialization file. Once the plug-in transforms the HL7 CDA XML document
retrieved from the database using the XML stylesheet, it displays the
transformation result to the user (6).
After reading about the goal of an end-to-end XML architecture and the functionality of the plug-in, let's see the plug-in for IBM Lotus Sametime Connect Client in action. Again, the plug-in enables the client to access XML stored in a DB2 pureXML database.
For better understanding, the example situation described in the "Introduction" section of this article is used. To recap, it would be helpful for the practitioner Chuck Smart to view information of a particular patient recorded by his colleague Durenda Flor one week earlier. Therefore, the practitioner Chuck Smart launches the IBM Lotus Sametime Connect Client. Through the client Chuck can see that his colleague Durenda is available, which is indicated by green icon next to Durenda's name, as illustrated in Figure 4:
Figure 4. Contact list in the IBM Lotus Sametime Connect Client
Since Durenda is available, Chuck initiates an instant messaging conversation with Durenda. You can achieve the latter, as typical for instant messaging environments, by double-clicking on Durenda's name, opening a chat window The chat window enabling Chuck to communicate with Durenda is illustrated in Figure 5:
Figure 5. Chat window of the IBM Lotus Sametime Connect Client
Having the chat window available, Chuck initiates the conversation by entering and submitting the message, "Hello Durenda, can you please provide me with information on our patient Sully Van ?", illustrated in Figure 6:
Figure 6. Entering a message into the chat window of the IBM Lotus Sametime Connect Client
Remember that the instant messaging client was extended to analyze and scan the messages for particular key phrases, as specified through a regular expression in the initialization file. Looking at the text message entered in previous step, the keyword used in this scenario, the word "patient", is contained in the message. Therefore, the plug-in uses the two words following the keyword in Chuck's message, which are "Sully" and "Van", representing the patient's name, and queries Durenda's database for corresponding healthcare information.
The chat window is then extended to provide the user, Chuck, with a list of information available regarding his patient Sully Van, as illustrated in Figure 7:
Figure 7. Extended chat window displaying the patient information found in the database
To view the information found for Sully Van, Chuck double-clicks on the entry available in the search results, causing a separate window to open, illustrated in Figure 8:
Figure 8. Patient information displayed as part of the instant messaging chat
The ability to view details on Sully Van's visit at Durenda's practice allows Chuck to view and discuss the patient's health status with Durenda.
Plug-in installation and configuration
You can install the DB2 pureXML plug-in using the IBM Lotus Sametime Connect Manage Updates User Interface. Before beginning the installation process, you need to download the archive file named sametime_purexml_plugin.zip (see Downloads) and extract the archive file into a local, temporary, working directory. The local, temporary, working directory used throughout the instructions below is C:\temp\sametime_plugin.
To launch the wizard, open the menu item Tools in the main window of the client. From the Tools menu, select Plug-ins > Install Plug-ins.... The wizard then allows you to choose between the option to update the plug-ins currently installed and the option to install new plug-ins. Choose the option Search for new features to install, and click Next, as illustrated in Figure 9:
Figure 9. Choose to install new features
The next step is to choose the location where the installation files are located, which is the directory where the archive file has been extracted to. Therefore, click on Add Folder Location... and choose the directory used, as illustrated in Figure 10. (In the current article, the directory chosen is C:\temp\sametime_plugin.)
Figure 10. Specify the local, temporary, working directory
The wizard then lists all the plug-ins available for installation at the local directory specified. Since the archive file provided in this article contains one plug-in, there is also only one plug-in listed. Select the plug-in, as illustrated in Figure 11, and click on Finish:
Figure 11. Choose the plug-in to be installed
Every plug-in consists of a set of features, hence the wizard allows you to choose the features to be installed. Select the pureXML Collaboration Demo 0.0.1, as illustrated in Figure 12, then click on Next to continue:
Figure 12. Choose the feature pureXML Collaboration Demo 0.0.1
The wizard then requires you to accept the License agreement, as illustrated in Figure 13. Select I accept the terms in the license agreements, and click on Next to continue.
Figure 13. Accept license agreement
Before finalizing the installation, the wizard provides an overview of the features to be installed, illustrated in Figure 14. Click on Finish to complete the installation process.
Figure 14. Summary of features to be installed
To finalize the installation, you need to restart IBM Lotus Sametime Connect Client. The client automatically offers you the option to restart the client, illustrated in Figure 15:
Figure 15. Restart the client to finalize the plug-in installation
Furthermore, you need to provide the client with the initialization file to support healthcare collaboration. To do so, copy the folder named st_purexml to the root of your local hard drive (for example,. C:\). The folder to be copied may be found in the directory C:\temp\sametime_plugin\DB2pureXMLDemo\sampleConfig, assuming that the archive file sametime_purexml_plugin.zip has been extracted to C:\temp\sametime_plugin. After the initialization files are copied, you need to restart the client for all settings to load properly.
Using the plug-in in other industries
As described in previous sections, the plug-in loads all artifacts needed during runtime from an initialization file while the client is launching. An example of an initialization file was illustrated in the "Plug-in functionality" section. Enabling the client for another scenario consists of creating another initialization file and the configuration of the client to utilize the initialization file.
This section describes creating an initialization file with the goal of
extending the IBM Lotus Sametime Connect Client for use with the US IRS
Tax 1120 e-file format. The initialization file is encoded using XML,
having a root element named
<collaboration>.
Listing 2. Beginning of the initialization file
<collaboration> |
Within the root element, all parameters are described for configuring the
application. The first parameter is described using a regular expression
and represents the keyword triggering the client to retrieve XML documents
from the database. The regular expression is described utilizing the
<regexpr> element.
Listing 3. Definition of the keyword using a regular expression
<regexpr>taxdocuments</regexpr> |
The next step is to define an endpoint of the Web service that is used by
the client to access the database. The endpoint is described using the
attribute url of the element
<serverURL>.
Listing 4. Definition of the Web service endpoint to be used to retrieve XML documents
<serverURL url="http://purexml.dyndns.org:9080/DB2pureXMLDemo/tax1120/tax1120.dadx"/> |
The next element is named
<keysQuery> and represents an
XQuery expression for retrieving a set of XML documents from the database
that match particular criteria.
Listing 5. Definition of the XQuery expression to retrieve a set of XML documents
<keysQuery>
XQUERY declare default element namespace "http://www.irs.gov/efile";
for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT')
return <entry id="{$doc/Return/ReturnHeader/ReturnId/text()}"
label="{$doc/Return/ReturnHeader/PreparerFirm
/PreparerFirmBusinessName/BusinessNameLine1/text()}"/>
</keysQuery> |
The XQuery expression to retrieve a set of XML documents is followed by
another XQuery expression that is used to retrieve one specific XML
document from the database. The second XQuery expression is represented
using the element
<documentQuery>.
Listing 6. Definition of the XQuery expression to retrieve a specific XML document
<documentQuery>
XQUERY declare default element namespace "http://www.irs.gov/efile";
for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT')
where ($doc/Return/ReturnHeader/ReturnId[text() = "${key}"])
return $doc
</documentQuery> |
Once the client has retrieved a particular XML document from the database,
an XML stylesheet is needed to transform the raw XML document into a more
user-friendly representation of the information. Therefore, the XML
stylesheet to be used for the transformation is specified using the
attribute url of the element
<xsl>.
Listing 7. Definition of an XML stylesheet used to transform XML documents
<xsl url="file:/C:\st_purexml\ibm-tax1120.xsl"/> |
Having configured the client parameters for another scenario, it is
necessary to add the closing element
</collaboration> to ensure the
initialization file is well-formed. For purposes of better understanding,
the entire initialization file is illustrated in
Listing 8:
Listing 8. Entire initialization file for the IRS 1120 e-file format
<collaboration>
<regexpr>taxdocuments</regexpr>
<serverURL
url="http://purexml.dyndns.org:9080/DB2pureXMLDemo/tax1120/tax1120.dadx"/>
<keysQuery>
XQUERY declare default element namespace "http://www.irs.gov/efile";
for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT')
return <entry id="{$doc/Return/ReturnHeader/ReturnId/text()}"
label="{$doc/Return/ReturnHeader/PreparerFirm
/PreparerFirmBusinessName/BusinessNameLine1/text()}"/>
</keysQuery>
<documentQuery>
XQUERY declare default element namespace "http://www.irs.gov/efile";
for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT')
where ($doc/Return/ReturnHeader/ReturnId[text() = "${key}"])
return $doc
</documentQuery>
<xsl
url="file:/C:\st_purexml\ibm-tax1120.xsl"/>
</collaboration> |
After creating the initialization file, it is also necessary to configure the client to utilize the file. To do so, open the menu item named File in the main window of the client and select Preferences, which opens an additional window. In that window, choose the entry DB2 pureXML Demo, as illustrated in Figure 16:
Figure 16. Initialization files to be used
The preferences for the DB2 pureXML Demo can be used to specify references to additional initialization files or to remove references to existing initialization files.
This article illustrated the ease and simplicity of extending the IBM Lotus Sametime Connect Client to support collaboration while utilizing an end-to-end XML architecture. The benefits of storing, exchanging, and visualizing information while utilizing the same format of information include simpler design and speedier development, resulting in a powerful prototype that can be improved as feedback is received.
In healthcare systems, sensitive information must not be accessible without the consent of the patient, the treating practitioner, or both. Security is definitely a topic for further work to improve the idea of supporting collaboration through instant messaging. Placing the plug-in configuration files on server systems is another area for further development. Integration of forms-based displays, enabling the modification of data, in addition to data display are other areas of great interest. Using an instant messaging client as a friendlier interface into database systems, where one of the parties in the exchange is a database agent rather than a human, is yet another possibility.
This article has shown the advantages of enabling the IBM Lotus Sametime Connect Client to fully utilize an end-to-end XML architecture. The included plug-in may help kick-start further prototypes and solutions.
Thank you very much to Carlos Caballero Grolimund and to Jessica Ramirez, who implemented the plug-in, illustrating the role of an end-to-end XML architecture in instant messaging. Thanks also to Craig Reichenbach for his support.
| Description | Name | Size | Download method |
|---|---|---|---|
| Sametime pureXML plug-in | sametime_purexml_plugin.zip | 1.7MB | HTTP |
| Demo of Sametime plug-in scenario | 8.5MB | HTTP | |
| Transcript of demo | sametimetranscriptFeb2009.pdf | 63KB | HTTP |
Information about download methods Get Adobe® Reader®
Learn
-
Industry Formats and
Services with pureXML:
Download a variety of examples, such as ones for the Health Level 7 (HL7)
Clinical Document Architecture (CDA), for free! Each example illustrates
how to work with XML-based Industry Formats and pureXML. The examples show
how to register an XML schema, how to perform validation of XML instance
documents, how to query XML data using XQuery or SQL/XML and much
more.
-
"Universal
Services for pureXML using Data Web Services"
(developerWorks, August 2008): Get started with configuring, testing, and
modifying the Universal Services, a simple but fixed set of database
operations that allow the querying and modification of XML
data.
-
"Build a
DB2 pureXML application in a day"
(developerWorks, December 2008): Build a complete DB2application in a day
using an end-to-end XML architecture through the Universal
Services.
-
DB2 skill kit: Increase your knowledge and skills whether you are a database administrator or an application developer. Learn how to install, configure, and administer IBM DB2 Universal Database. Topics covered include: Overview, installation, configuration, database creation, and administration.
-
IBM Information Management and XML technology area on developerWorks:
Get the resources you need to advance your skills on using XML technology
with DB2 and other IBM products.
- developerWorks Information Management zone:
Learn more about Information Management. Find technical documentation,
how-to articles, education, downloads, product information, and
more.
- Stay current with
developerWorks technical events and webcasts.
- Technology bookstore:
Browse for books on these and other technical topics.
Get products and technologies
-
DB2
Express-C:
Now you can use DB2 for free. Download DB2 Express-C, a free version of
DB2 Express Edition for the community that offers the same core data
features as DB2 Express Edition, and provides a solid base to build and
deploy applications.
- Build your next
development project with
IBM trial software,
available for download directly from developerWorks.
Discuss
- Participate in
developerWorks blogs
and get involved in the developerWorks community.

Susan Malaika is a senior technical staff member in the IBM Information Management Group (part of IBM Software Group). Her specialties include XML, the Web, and databases. She has developed standards that support data for grid environments at the Global Grid Forum. In addition to working as an IBM product software developer, she has also worked as an Internet specialist, a data analyst, and an application designer and developer. She has also co-authored a book on the Web and published articles on transaction processing and XML. She is a member of the IBM Academy of Technology.

Christian Pichler is a junior researcher at Research Studios Austria where he is working on different projects around eGovernment and eBusiness. He holds a master's degree in Computer Science and is currently also a candidate for a PhD degree in Computer Science at the Technical University of Vienna in Austria focusing on Inter-Organisational Systems.
Comments (Undergoing maintenance)





