<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2374388455287292795</id><updated>2012-01-30T19:58:53.138-05:00</updated><category term='Usability'/><category term='Architecture'/><category term='Consent'/><category term='EHR'/><category term='Semantic Web'/><category term='HIE'/><category term='Security'/><category term='SOA'/><category term='Healthcare'/><category term='Enterprise Architecture'/><category term='OSS'/><category term='cds'/><category term='software development'/><category term='Quality'/><category term='NIST'/><category term='CDA'/><category term='XQuery'/><category term='Aviation'/><category term='Privacy'/><category term='OWL'/><category term='DDD'/><category term='XMLDB'/><category term='Clinical Decision Support'/><category term='XSLT'/><category term='Web3.0'/><category term='RDF'/><category term='cloud computing'/><category term='HL7'/><category term='patterns'/><category term='di'/><category term='checklists'/><category term='aop'/><category term='HealthIT'/><category term='HL7 Healthcare'/><category term='hitech act'/><category term='NoSQL'/><category term='XProc'/><category term='NIEM'/><category term='SCORM'/><category term='hipaa'/><category term='Agile'/><category term='S1000D'/><category term='RIF'/><category term='orm'/><category term='design'/><category term='Schematron'/><category term='CMIS'/><category term='Meaningful Use'/><category term='Gov 2.0'/><category term='Media'/><title type='text'>Adventures in Computing</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://efasoft.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>70</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3512304736516713843</id><published>2011-12-11T19:44:00.020-05:00</published><updated>2011-12-18T18:10:12.947-05:00</updated><title type='text'>The New Economics of Healthcare and What It Means for Health IT</title><content type='html'>Healthcare expenditures represented 17.6% of US GDP in 2009 and continue to rise. In a recently released report titled "&lt;a href="http://www.cdhowe.org/pdf/Benefactors_Lecture_2011.pdf"&gt;&lt;span style="font-style:italic;"&gt;Therapy or Surgery? A Prescription for Canada's Health Systems&lt;/span&gt;&lt;/a&gt;", Don Drummond, former chief economist at TD Bank warned that "&lt;span style="font-style:italic;"&gt;assuming total program spending and revenues grow at the nominal GDP growth rate of 4 percent, healthcare would comprise 80 percent of the Ontario budget by 2030, up from 46 percent today.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;To address quality and costs challenges, the concept of a value-based healthcare system is gaining significant ground. Articles on the subjects have recently appeared in prestigious publications such as the New England Journal of Medicine (NEJM) and Health Affairs. There is no clear consensus among industry experts that initiatives such as the Accountable Care Organization (ACO) and the Patient Centered Medical Home (PCMH) will lead to dramatic improvements in quality and costs reductions. However, everyone seems to agree that the ultimate goal of a healthcare system should be to maximize positive patient health outcomes per dollar spent. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Measuring Healthcare Value&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Michael Porter is arguably the leading thinker on the subject of healthcare value. In an article titled "&lt;a href="http://www.nejm.org/doi/full/10.1056/NEJMp1011024"&gt;&lt;span style="font-style:italic;"&gt;What Is Value in Health Care?&lt;/span&gt;&lt;/a&gt;" that appeared in the New England Journal of Medicine, he wrote:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;"Value should always be defined around the customer, and in a well-functioning health care system, the creation of value for patients should determine the rewards for all other actors in the system."&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;Current process measures and the regulatory requirements to report them are necessary but not sufficient. It seems like the healthcare industry has escaped the business process reengineering and quality improvement movements that have permeated many industries in the nineties. Fortunately, thanks to the hard work of visionary leaders like Donald Berwick, former Administrator of the US Centers for Medicare &amp; Medicaid Services (CMS) and co-founder of the Institute for Healthcare Improvement (IHI), quality measures reporting is now an essential component of incentive programs such as Meaningful Use and the ACO model. Healthcare transformation during the next few years will be focused on the migration from a paradigm based on the volume of services delivered to one that is based on measuring value (patient-centered outcomes) as well as the total costs incurred throughout the care cycle to achieve those outcomes.  &lt;br /&gt;&lt;br /&gt;Patient-centered outcome measures include essential metrics such as mortality, functional status, time to recovery,  severity of side effects, and remission (e.g. depression remission at six and twelve months). These measures should take into account the values, goals, and wishes of the patient. Therefore patient-centered outcome should also include the patient's own evaluation of the care received. One important implication of this shift from fee-for-service to value is the growing importance of wellness, prevention, early screening, and disease and population management. In short, the elimination of waste and the optimization of healthcare delivery through the standardization of care pathways and treatment protocols based on the latest scientific evidence will become a top priority.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Measuring Healthcare Costs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The total costs incurred throughout the care cycle represent the assets used to achieve those outcomes such as: employees, consumables, facilities, medical devices, equipment, energy, and computing resources such as software and hardware. Measuring these costs would appear intuitive and straightforward at first. However, in the US healthcare system, Medicare reimbursement is based not on the actual usage of resources, but on so called relative value units (RVUs). Service charges are calculated based on formula that includes three RVUs:  one for physician work, one for practice expense, and one for malpractice expense. Similar reimbursement schemes are used in other developed countries as well.&lt;br /&gt;&lt;br /&gt;In an article titled "&lt;a href="http://hbr.org/2011/09/how-to-solve-the-cost-crisis-in-health-care/ar/1"&gt;&lt;span style="font-style:italic;"&gt;The Big Idea: How to Solve the Cost Crisis in Health Care&lt;/span&gt;&lt;/a&gt;", Michael Porter and Robert Kaplan proposed time-driven activity-based costing (TDABC) as a more accurate methodology for measuring costs in healthcare. Bundled Payment (using episodes of care as a basis for payment and value measurement) is emerging as a solution to contain healthcare costs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Implications for Healthcare Information Technology &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The trend toward bundle payments and other cost containment schemes will put an increasing pressure on providers to maximize the value of the assets involved in the care cycle. This will be achieved by optimizing the decision making process with software that can analyze large data sets and make specific and accurate recommendations faster than humanely possible.&lt;br /&gt;&lt;br /&gt;In the clinical domain in particular, the following are examples of health IT solutions that will make a big difference in maximizing value for patients:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Automated execution of Clinical Practice Guidelines (CPGs), Care Pathways (CPs), and treatment protocols using technologies such as business rules, predictive analytics, and Business Process Management (BPM).  &lt;br /&gt;&lt;br /&gt;&lt;li&gt;Creation of disease registries as well as secondary use of EHR data to track patient outcomes, compliance with CPGs, Comparative Effectiveness Research (CER), and Patient-Centered Outcome Research (PCOR). Advanced analytics will play an important role in providing important insights into clinical data on the effectiveness of various treatment options based on the clinical profile of a specific patient or subpopulation of patients. Personalized Medicine leveraging advances in genomics will play an important role here as well. This will require computing power to handle the large data sets involved in making clinical decisions based on genomic data.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Applications of Knowledge Representation, Reasoning, Natural Language Processing (NLP), Speech Recognition, Information Retrieval, and Machine Learning to enable next generation Clinical Question Answering (CQA).&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Clinical Knowledge Management (CKM) to support a learning health system. The Institute of Medicine (IOM) released a report earlier this year titled "&lt;a href="http://www.iom.edu/Reports/2011/Digital-Infrastructure-for-a-Learning-Health-System.aspx"&gt;&lt;span style="font-style:italic;"&gt;Digital Infrastructure for the Learning Health System: The Foundation for Continuous Improvement in Health and Health Care&lt;/span&gt;&lt;/a&gt;". The report describes the learning health system as:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;"delivery of best practice guidance at the point of choice, continuous learning and feedback in both health and health care, and seamless, ongoing communication among participants, all facilitated through the application of IT."&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Social Health Enterprise tools that allow clinicians to communicate and collaborate beyond email.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Leveraging mobile devices and tablets to provide information and cognitive support to clinicians, patients, and care givers while enforcing strict security.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Healthcare interoperability standards. As Doug Fridsma, Director of the Office of Standards and Interoperability puts it in a recent blog post: "&lt;a href="http://www.healthit.gov/buzz-blog/from-the-onc-desk/standards-optional-2/"&gt;&lt;span style="font-style:italic;"&gt;standards are not optional&lt;/span&gt;&lt;/a&gt;". Standardization at the data, security, and transport level is necessary. However, care should be taken to ensure that these standards can be widely implemented by health IT vendors. Adopting healthcare profiles of cross-industry standards and creating Open Source reference implementations using the tools and techniques developers are familiar with (as was done by the ONC-sponsored Direct Project) can help meet that objective.&lt;br /&gt;&lt;br /&gt;On the other hand, over-standardization in areas that are going through a rapid rate of technological innovation could have a negative impact.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Applications of human factors research to enable the effective use of technology in clinical settings. Examples include: implementation of usability guidelines to reduce alert fatigue in clinical decision support (CDS) and the use of speech recognition, checklists, simulation, Visual Analytics, and disease-specific documentation templates or Smart Forms. &lt;br /&gt;&lt;br /&gt;There are many lessons to be learned from other mission-critical industries that have adopted automation. Following several incidents and accidents related to the introduction of the "&lt;a href="http://en.wikipedia.org/wiki/Glass_cockpit"&gt;Glass Cockpit&lt;/a&gt;" about 25 years ago, human factors training known as Cockpit Resource Management (CRM) is now standard practice in the aviation industry.  &lt;br /&gt;&lt;br /&gt;&lt;li&gt;Lastly, Cloud Computing and Service-Oriented Architecture (SOA) will allow health enterprises to reduce costs and share computing resources while focusing on their core competency: medical care.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3512304736516713843?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3512304736516713843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3512304736516713843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3512304736516713843'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/12/new-economics-of-healthcare-and-what-it.html' title='The New Economics of Healthcare and What It Means for Health IT'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-8890927991867073932</id><published>2011-11-12T21:55:00.019-05:00</published><updated>2012-01-13T12:18:01.103-05:00</updated><title type='text'>Thoughts on the Query Health Initiative</title><content type='html'>I have been following the Query Health Initiative of the ONC Standards and Interoperability Framework with great interest. The following are key goals of the Query Health Initiative:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Identify standards and services for distributed population health queries to EHRs, HIEs, and other clinical data sources such as registries.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Define a framework to allow partners to create their own distributed query networks (with or without intermediaries called "Network Data Partners"). I believe that the solution should not mandate a specific implementation in order to foster innovation in the field.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Support a number of use cases such as quality measures reporting, public health surveillance, comparative effectiveness research (CER), and patient centered outcome research (PCOR).&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Support queries over a common and extensible &lt;a href="http://wiki.siframework.org/TOC+Clinical+Information+Model"&gt;Clinical Information Model&lt;/a&gt; (CIM).&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Support security, audit trails, privacy, patient consent directives, and other policy and legal requirements. Techniques such as the de-identification of data will be essential to maintaining privacy.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create a solution that can be implemented with a financially sustainable model. I think there are many lessons to be learned here from failed or struggling Health Information Exchange (HIE) initiatives.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The Query Health Initiative supports a distributed model as a opposed to a centralized model. This allows data to be kept in the originating systems and securely queried and aggregated. &lt;br /&gt;&lt;br /&gt;Previous initiatives to create such a distributed query health network include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://www.i2b2.org/"&gt;i2b2&lt;/a&gt; (Informatics for Integrating Biology and the Bedside) and SHRINE (Shared Health Research Information Network) - a scalable informatics framework that will enable clinical researchers to use existing clinical data as well as genomic data for research and discovery.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.projecthquery.org/"&gt;hQuery&lt;/a&gt; - an open source project by MITRE which leverages the ability of certified EHRs to produce C32 or CCR documents. hQuery is based on a MongoDB document database and uses JavaScript Map and Reduce functions.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.popmednet.org/Home.aspx"&gt;PopMedNet&lt;/a&gt; – a multi-purpose distributed networks for secondary use of EHR, administrative, claims, and registry data.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In addition, large health enterprises are investing considerable efforts and resources in building clinical data warehouses and analytics capabilities for their own internal needs. Examples are the Enterprise Data Trust at Mayo Clinic and the STRIDE (Stanford Translational Research Integrated Database Environment) project at Stanford University. These existing systems may have to eventually participate in distributed population health query networks. Most of these systems are based on SQL databases which have reached a high level of maturity in terms of scalability, performance, and the availability of data processing and analytics techniques and tools. &lt;br /&gt;&lt;br /&gt;However, NoSQL and alternatives based on Big Data Analytics (e.g. Hadoop and Hive) are currently making significant inroads into the enterprise. Emerging NoSQL databases include key-value stores, document databases, graph databases, and triple stores such as those based on the SPARQL query language for RDF. In some cases, these NoSQL databases provide superior scalability when compared to SQL databases. They are increasingly popular with developers because they simplify the application development process by eliminating the need for Object Relational Mapping (ORM). For example, in document-oriented databases such as MongoDB (which is used in hQuery), objects are persisted as JSON documents.&lt;br /&gt;&lt;br /&gt;So, I believe that the technical choices that are made for the Query Health Initiative should be grounded in that current reality of enterprise data management.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;First, I think that queries should be formulated in a declarative as a opposed to a procedural manner. This rules out an approach based on JavaScript.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Second, I believe that queries should be formulated in an established query language. By established query language, I mean a standard like SQL, SPARQL, or XQuery that was design specifically for the purpose of querying data stores. This rules out standards such as the HL7 Health Quality Measures Format (HQMF) or any implementation of the HL7 CDA. In fact, quality measures reporting is just one of many use cases in Query Health. In my opinion, in a value-based healthcare system, patient-centered outcome measurement is even more important than quality measures which are essentially process measures and do not necessarily correlate with improved patient outcomes.&lt;br /&gt;&lt;br /&gt;By the way, I believe this same principle should extend to other ONC Standards and Interoperability efforts such as the Data Segmentation Initiative which is trying to define an interoperable approach to implementing privacy policies, consent directives, and authorizations. The Data Segmentation Initiative should embrace the approach taken by the OASIS Cross-Enterprise Security and Privacy Authorization (XSPA) which consists in defining healthcare profiles for well established and recognized standards such as SAML, XACML, and WS-Trust. This contrasts with an approach that would consist in creating a CDA implementation for patient consent directives. This discussion on patient consent directives is relevant to the Query Health Initiative.&lt;br /&gt;&lt;br /&gt;i2b2 which is one of the projects considered by the Query Health Initiative uses SQL. i2b2 is a well engineered, robust, and proven architecture. The i2b2 data model is based on the "star schema" which has a central "fact" table where each row represents an observation about a patient. The current implementation of the clinical research chart (CRC) in i2b2 is based on the Oracle and Microsoft SQL Server databases.&lt;br /&gt;&lt;br /&gt;The maturity of SQL-based tools could be a deciding factor.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Third, the adopted solution should leave the door open to innovation, by giving participants the choice of embracing alternative and emerging solutions such as SPARQL or &lt;a href="http://www.unqlspec.org/display/UnQL/Home"&gt;UnSQL&lt;/a&gt;, a newly proposed query language for NoSQL document databases. Erik Meijer and Gavin Bierman from Microsoft Research wrote a paper titled "&lt;a href="http://queue.acm.org/detail.cfm?id=1961297"&gt;&lt;span style="font-style:italic;"&gt;A co-Relational Model of Data for Large Shared Data Banks&lt;/span&gt;&lt;/a&gt;" where they propose a new common query language for both SQL and noSQL databases called coSQL. &lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;In the era of Clinical Question Answering (CQA), Natural Language Processing (NLP) and ontologies will play a critical role in clinical data repositories. SPARQL-based queries when combined with the use of ontologies could offer significant advantages over traditional SQL-based systems (see my previous post titled "&lt;a href="http://efasoft.blogspot.com/2011/08/why-do-we-need-ontologies-in-healthcare.html"&gt;&lt;span style="font-style:italic;"&gt;Why do we Need Ontologies in Healthcare Applications&lt;/span&gt;&lt;/a&gt;"). Furthermore, standard vocabularies (such as SNOMED CT) and value sets are essential components of clinical data repositories. These terminologies are often derived from ontologies, so a solution that integrate well with ontologies will be important. I believe that the CTS2 specification satisfies all the vocabulary and value set requirements for Query Health. CTS2 is also currently being implemented by commercial vocabulary tool vendors and various open source projects.&lt;br /&gt;&lt;br /&gt;The W3C R2RML (RDB to RDF mapping language) specification allows existing applications to provide an RDF view other relational databases. The SPARQL 1.1 query language supports key Query Health requirements such as aggregates, grouping, and subqueries, while the SPARQL 1.1 Federation Extensions specification supports federated queries.&lt;br /&gt;&lt;br /&gt;The Translational Medicine Ontology is designed as a unifying ontology for the integration of EHR, genomic, treatment, drug, and other types of clinical data. This allows the creation of knowledge bases that can be queried with SPARQL to answer important questions related to clinical research as well as patient care. If you are interested in this topic, I highly recommend these two papers:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.jbiomedsem.com/content/pdf/2041-1480-2-S2-S1.pdf"&gt;&lt;span style="font-style:italic;"&gt;The Translational Medicine Ontology and knowledge Base: driving personalized medicine by bridging the gap between bench and bedside&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2755818/pdf/1471-2105-10-S10-S10.pdf"&gt;&lt;span style="font-style:italic;"&gt;A journey to Semantic Web query federation in the life sciences&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-8890927991867073932?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=8890927991867073932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8890927991867073932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8890927991867073932'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/11/thoughts-on-query-health-initiative.html' title='Thoughts on the Query Health Initiative'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3693318700947807048</id><published>2011-08-27T16:46:00.129-04:00</published><updated>2011-11-12T10:39:20.155-05:00</updated><title type='text'>Why Do We Need Ontologies in Healthcare Applications</title><content type='html'>There is an ongoing thread in the HL7 mailing list about "what can OWL do?" in the wake of Grahame Grieve's recent post titled: &lt;a href="http://www.healthintersections.com.au/?p=476"&gt;&lt;span style="font-style:italic;"&gt;"HL7 needs a fresh look because V3 has failed"&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This post is my answer to "what can OWL do?".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Ontology vs. Information Model&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ontologies are our conceptualization (understanding) of the world while information models (of data structures) describe and constrain how the data is stored and transmitted in messages. Thomas Gruber popularized the notion of ontology in the nineties when he wrote in a paper titled &lt;a href="http://tomgruber.org/writing/ontolingua-kaj-1993.pdf"&gt;&lt;span style="font-style:italic;"&gt;"A Translation Approach to Portable Ontology Specifications"&lt;/span&gt;&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;A conceptualization is an abstract, simplified view of the world that we wish to represent for some purpose. Every knowledge base, knowledge-based system, or knowledge-level agent is committed to some conceptualization, explicitly or implicitly.&lt;br /&gt;&lt;br /&gt;An ontology is an explicit specification of a conceptualization. The term is borrowed from philosophy, where an ontology is a systematic account of Existence. For knowledge-based systems, what "exists" is exactly that which can be represented.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;When people ask me to explain how ontologies are relevant to healthcare, I often use this quote from a report titled &lt;a href="http://www.semantichealth.org/DELIVERABLES/SemanticHEALTH_D6_1.pdf"&gt;&lt;span style="font-style:italic;"&gt;"Semantic Interoperability Deployment and Research Roadmap"&lt;/span&gt;&lt;/a&gt; by Alan Rector, an authority in the field of biomedical ontologies:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;Ontologies are about the things being represented – patients, their diseases. They are about what is always true, whether or not it is known to the clinician. For example, all patients have a body temperature (possibly ambient if they are dead); however, the body temperature may not be known or recorded. It makes no sense to talk about a patient with a "missing" body temperature.&lt;br /&gt;&lt;br /&gt;Data structures are about the artefacts in which information is recorded. Not every data structure about a patient need include a field for body temperature, and even if it does, that field may be missing for any given patient. It makes perfect sense to speak about a patient record with missing data for body temperature.&lt;/span&gt; &lt;/blockquote&gt;&lt;br /&gt;Hence, at the practical level, ontologies can help us verify the soundness of statements in messages based on our conceptualization of the world. Information models in healthcare often take the form of an XML schema, a Schematron schema, or a relational database schema.  One distinguishing characteristic of ontologies is that they are based on an Open World Assumption (OWA) which is based on the AAA slogan or Anyone can say Anything about Any topic. Statements that are not included in an ontology are considered unknown as opposed to false. In contrast, information models of data structures such as XML messages and relational databases are based on a Closed World Assumption (CWA) which holds that any statement that is not known to the message or database to be true is false (this is also referred to as "negation as failure" or NF). &lt;br /&gt;&lt;br /&gt;The OWA principle recognizes that our understanding of the world is incomplete, evolving, and that new knowledge can be discovered and added at any time. To return to Alan Rector's example, one cannot assume that because there is no mention of a patient's body temperature in an electronic health record message, that the patient does not have a body temperature. Another distinguishing characteristic of ontologies is the Nonunique Naming Assumption as opposed to the Unique Name Assumption (UNA) in CWA-based systems. People do use different labels to represent the same concept. This discussion of OWA vs. CWA is not just academic. The reality is that data about a patient can exist in multiple systems, organizations, jurisdictions, and even countries using different vocabularies and XML data structures. Concepts such as longitudinal or lifelong health record and medication reconciliation will soon reveal the limits of healthcare systems based on a CWA.&lt;br /&gt;&lt;br /&gt;OWL2, a W3C Recommendation, is an expressive ontology language and provides reasoning and inferencing capabilities to software applications. Logical axioms specify restrictions through property domains and ranges. OWL2 also support negation and disjunction. OWL2 reasoning capabilites can be enhanced with a rule language such as the Semantic Web Rule Language (SWRL). Given the complexity and scale of medical knowledge today, the use of ontology-based reasoning will become essential in applications such as medical terminologies, clinical knowledge management for automated decision support, and even automatically verifying the accuracy of messages exchanged between healthcare applications.&lt;br /&gt;&lt;br /&gt;Unfortunately, ontologies are not widely used in software engineering today. They are not well understood by the majority of developers. Undergraduate computer science programs don't usually teach ontologies. There is an urgent need to educate a new generation of ontology-savvy healthcare application developers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Model Consistency&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For obvious reasons, healthcare applications require a high degree of model quality and consistency. This is not always possible or easy to do with traditional approaches such as object-oriented design (the HL7 RIM is based on the UML) and data structures such as XML and relational database schemas.  &lt;br /&gt;&lt;br /&gt;A clear and clean separation of concerns is needed between the semantic model (the ontology) and the information model (the model of how the data is structured in an XML message or the health application's data store). The ontology can be used to verify that the content of a message is accurate in regard to our conceptualization of the world, while the information model is used to validate the data structure in the data stores and XML messages exchanged with other applications.&lt;br /&gt;&lt;br /&gt;The HL7 RIM is definitely not an ontology and has been plagued by consistency issues. Futhermore, a consequence of the RIM model refinement process that is used to derive XML message exchange schemas from the RIM is that data structure concerns have leaked into what was touted as the semantic model. This lack of separation of concerns has led to an unwieldy information model and very complex XML message structures (in the CDA and other V3 messages) that are difficult to learn and implement in software applications. The GreenCDA is a possible answer to the message structure simplification challenge (see my previous post on the &lt;a href="http://efasoft.blogspot.com/2011/02/greening-of-hl7-cda.html"&gt;Greening of the HL7 CDA&lt;/a&gt;). However, it is not enough to solve the semantic interoperability challenge.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ontologies and Medical Terminologies&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In a paper titled &lt;a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2585532/"&gt;&lt;span style="font-style:italic;"&gt;"Why Do It the Hard Way? The Case for an Expressive Description Logic for SNOMED"&lt;/span&gt;&lt;/a&gt;, Alan Rector and Sebastian Brandt argued in favour of using the OWL ontology language for SNOMED which is currently based on a Description Logic semantics known as EL++. The availability of computing power (particularly the elasticity and massive scalability of the cloud), reasoners, and tools have now made such a migration possible.&lt;br /&gt;&lt;br /&gt;In a recent paper published in the Journal of the American Medical Informatics Association (JAMIA) and titled &lt;a href="http://jamia.bmj.com/content/18/4/432.abstract"&gt;&lt;span style="font-style:italic;"&gt;"Getting the foot out of the pelvis: modeling problems affecting use of SNOMED CT hierarchies in practical applications"&lt;/span&gt;&lt;/a&gt; (subscription required), Alan Rector, Sam Brandt, and Thomas Schneider used an OWL representation of SNOMED CT to unearth errors in SNOMED CT hierarchies for such common conditions as myocardial infarction, diabetes, and hypertension. This has significant practical implications for the use and interpretation of SNOMED codes in electronic health records (EHRs), post-coordination, and queries in software applications.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bmir.stanford.edu/file_asset/index.php/1611/BMIR-2010-1426.pdf"&gt;ICD-11&lt;/a&gt; is being developed using OWL to allow consistency checking and linking to other biomedical terminologies and ontologies.&lt;br /&gt;&lt;br /&gt;In addition to OWL, the Simple Knowledge Organization System (SKOS) specification can also used to represent thesauri, classification schemes, taxonomies, controlled vocabularies, and other concept schemes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Overlap between the HL7 RIM and SNOMED CT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;HL7 V3 messages like the CDA typically carry codes from SNOMED CT and other terminologies such as CPT, ICD9, and LOINC. However in certain cases such as family history, an observation can be expressed through a single SNOMED CT code or by using the RIM. To ensure model consistency, HL7 has released an implementation guide on using SNOMED CT in HL7 Version 3 documents such as the HL7 CDA (I refer to this implementation guide as Terminfo). In addition, HITSP C80 specifies vocabularies and terminologies to be used in various sections of a C32 document.&lt;br /&gt;&lt;br /&gt;However, these guidelines have been difficult to enforce in practice due to the lack of automated validation tools. In a paper recently published in the Journal of Biomedical Semantics titled &lt;a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3152505/"&gt;&lt;span style="font-style:italic;"&gt;"Semantic validation of the use of SNOMED CT in HL7 clinical documents"&lt;/span&gt;&lt;/a&gt;, Stijn Heymans, Matthew McKennirey, and Joshua Phillips described an approach using OWL ontologies to automatically validate Terminfo guidelines. The approach consisted in using the OWL representation of SNOMED CT, lifting (with XSLT) CDA XML instances into OWL individuals based on a CDA OWL ontology, and by expressing Terminfo guidelines as OWL integrity constraints. The latter were validated with the Pellet Integrity Constraint validator or Pellet-ICV.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Clarifying the relationship ("interface") between Ontologies, Coding Systems, and Information Models&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I mentioned the need for a clean separation of concerns between the ontology and the information model. So what is the relationship between ontologies, coding systems (like SNOMED CT), and information models? I have long been intrigued by that question. In a paper titled &lt;a href="http://www.cs.man.ac.uk/%7Erector/papers/Terminology-binding-final-revision-embedded-single-rector%20copy.pdf"&gt;&lt;span style="font-style:italic;"&gt;"Binding Ontologies &amp;amp; Coding systems to Electronic Health Records and Messages"&lt;/span&gt;&lt;/a&gt;, Alan Rector, Rahil Qamar, and Tom Marley write:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;We contend that codes are also data structures – or more precisely symbols to be used in data structures – and that the model of codes is also at the level of the information model.&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;Although coding systems are derived from ontologies, we also need a separation of concerns between the coding system and the ontology. Remember that ontologies are based on an "Open World Assumption" (which means essentially that Anyone can say Anything about Any topic or the AAA slogan). Coding systems in contrast contain an enumerated list of codes to choose from.&lt;br /&gt;&lt;br /&gt;In the same paper, the authors propose a code binding interface based on OWL DL between the model of meaning (i.e., the ontology), the model of codes (i.e., the terminology) and the information model.&lt;br /&gt;&lt;br /&gt;To summarize our findings so far:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;We first create an ontology to describe our conceptualization (or understanding) of the world.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;We derive an enumerated list of codes called code system (itself a data structure) from the ontology.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;We used the codes in EHR applications databases and messages which are data structures.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;We can validate the binding between the ontology, the information model, and the code system (using the approach proposed by Alan Rector, Rahil Qamar, and Tom Marley).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Ontology Alignment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An ontology represents a specific world view that reflects the perspective of its origin (application, domain, people, or organization). Alignment consists in mapping concepts across ontologies. For example, in translational medicine, there could be a need to map an ontology used in biomedical research to an ontology used for clinical purposes. Several techniques can be used to achieve Ontology Alignment between two ontologies including:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Mapping each ontology to a third shared ontology called a foundational ontology&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Mapping the two ontologies directly.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;OWL facilitates ontology alignment through constructs such as &lt;span style="font-style:italic;"&gt;owl:sameAs&lt;/span&gt;, &lt;span style="font-style:italic;"&gt;owl:equivalentClass&lt;/span&gt;, and &lt;span style="font-style:italic;"&gt;owl:equivalentProperty&lt;/span&gt;. These OWL constructs can be enhanced with a rule-based mapping using SWRL or RIF constructs. XSLT and SPARQL can also be useful in Ontology Alignment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Clinical Knowledge Management (CKM)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ontologies as knowledge representation formalism are well suited for modeling the medical knowledge contained in Clinical Practice Guidelines (CPGs) and Care Pathways (CPs). This enables automated reasoning and the execution of those guidelines based on patient data at the point of care.&lt;br /&gt;&lt;br /&gt;Several ontology-based approaches to modelling CPGs and CPs have been proposed in the past including PROforma, HELEN, EON, GLIF, and SAGE. However, the lack of tooling has been a major impediment to a wide adoption of those standards. OWL has the advantage of being a widely implemented W3C Recommendation with available open source as well as commercial tools.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ontologies and Enterprise Master Data Management (MDM)&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As healthcare enterprises become larger and integrated (through the ACO model for example), there will be the need to consistently define and manage core business entities such as "patient", "provider", "payor", "care delivery", and "claim" across systems and business processes (e.g. research, clinical, reporting, and financial). The goal of Master Data Management (MDM) is to address those challenges.&lt;br /&gt;&lt;br /&gt;One area of particular interest to MDM is the naming, meaning, equivalency, and relationships between those core business entities. Ontology constructs such as &lt;span style="font-style:italic;"&gt;owl:sameAs&lt;/span&gt;, &lt;span style="font-style:italic;"&gt;owl:equivalentClass&lt;/span&gt;, and &lt;span style="font-style:italic;"&gt;owl:equivalentProperty&lt;/span&gt; can help establish common semantics across the enterprise when the same business entity is called by different names in different systems and business processes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Linked Open Data (LOD)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ontologies can help in building silo-busting applications that need to link data items (datum) to other data items (as opposed to web page to web page) over the web in order to perform entity correlation (or entity resolution). A datum can be a row in a relational database and technologies exist to provide an RDF view over a relational database table (see the &lt;a href="http://www.w3.org/TR/r2rml/"&gt;R2RML: RDB to RDF Mapping Language&lt;/a&gt;). The RDF view itself can be defined in terms of an OWL ontology or RDFS vocabulary. Hence, LOD can integrate data across health applications and organizations by providing a semantic layer on top of existing applications.&lt;br /&gt;&lt;br /&gt;The Linked Data design pattern is based on an open world assumption, uses dereferenceable HTTP URIs for identifying and accessing data items, RDF for describing metadada about those items, and semantic links to describe the relationships between those items. Other standards used in LOD applications include RDFS (for describing RDF vocabularies) and SQARQL (for querying RDF graphs). A practical application of LOD in healthcare is the &lt;a href="http://www.data.gov/communities/node/81/blogs/4920"&gt;Clinical Quality Linked Data&lt;/a&gt; project on health.data.gov.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Metadata and the PCAST Report&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Office of the National Coordination for Health Information Technology (ONC) recently released an &lt;a href="http://www.gpo.gov/fdsys/pkg/FR-2011-08-09/pdf/2011-20219.pdf"&gt;Advance Notice of Proposed Rulemaking (ANPRM) on Metadata Standards to Support Nationwide Electronic Health Information Exchange&lt;/a&gt;. The ANPRM was driven by the PCAST Report released in December 2010.&lt;br /&gt;&lt;br /&gt;Specifically, the ANPRM called for public comments on patient identity, provenance, and privacy. There are existing ontologies related to identity, provenance, and privacy that can be at least partially reused (ontology reuse is a recommended best practice to avoid the difficulties of ontology alignment). An example is the &lt;a href="http://trdf.sourceforge.net/provenance/ns.html"&gt;Provenance Vocabulary Core Ontology&lt;/a&gt;. Modeling metadata in healthcare using ontologies will enable reasoning, data integration through Linked Open Data mechanisms, and &lt;a href="http://www.w3.org/2009/sparql/wiki/Feature:BasicFederatedQuery"&gt;federated SPARQL queries&lt;/a&gt;. Please note that metadata expressed in XML syntax can be lifted into RDF (using techniques like XSLT or XQuery) to provide the same benefits.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UPDATE&lt;/span&gt;: IBM and Wellpoint announced in September 2011 that they will collaborate in using IBM Watson (an advanced Question Answering (QA) system) to help clinicians make better decisions. A tutorial titled &lt;a href="http://iswc2011.semanticweb.org/tutorials/semantic-web-technology-in-watson/"&gt;Semantic Web Technology in Watson&lt;/a&gt; was presented at the 2011 International Semantic Web Conference (ISWC 2011) in October.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3693318700947807048?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3693318700947807048' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3693318700947807048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3693318700947807048'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/08/why-do-we-need-ontologies-in-healthcare.html' title='Why Do We Need Ontologies in Healthcare Applications'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7793523603655782192</id><published>2011-07-13T20:46:00.001-04:00</published><updated>2011-07-13T20:48:22.184-04:00</updated><title type='text'>Service-Oriented Clinical Decision Support in the Cloud</title><content type='html'>This is the presentation I gave today at the 2011 SOA In Healthcare Conference in Herdnon, VA.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_8589788"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/huguesj/serviceoriented-cds-in-the-cloud" title="Service-Oriented CDS in the Cloud" target="_blank"&gt;Service-Oriented CDS in the Cloud&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/8589788" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt; View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/huguesj" target="_blank"&gt;Joel Amoussou&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7793523603655782192?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7793523603655782192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7793523603655782192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7793523603655782192'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/07/service-oriented-clinical-decision.html' title='Service-Oriented Clinical Decision Support in the Cloud'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3061502753572025791</id><published>2011-03-24T22:00:00.017-04:00</published><updated>2011-05-14T12:53:22.389-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cds'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='checklists'/><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>How Checklists Can Enhance Clinical Decision Support (CDS)</title><content type='html'>I have been reading "&lt;a href="http://www.amazon.com/Checklist-Manifesto-How-Things-Right/dp/0805091742"&gt;The Checklist Manifesto&lt;/a&gt;", a book written by Dr. Atul Gawande on the effectiveness of checklists in healthcare delivery. Another paper recently published in the Milbank Quarterly entitled "&lt;a href="http://www.milbank.org/quarterly/8901feat.html"&gt;Counterheroism, Common Knowledge, and Ergonomics: Concepts from Aviation That Could Improve Patient Safety&lt;/a&gt;" suggests that beyond checklists, proven aviation safety practices such as Cockpit Resource Management (CRM), Joint safety briefings, and first-names-only rules could help improve patient safety.&lt;br /&gt;&lt;br /&gt;I first became aware of the importance of checklists while I was being trained as a &lt;a href="http://efasoft.blogspot.com/2007/08/my-russian-aviation-adventures.html"&gt;Flight Engineer&lt;/a&gt;. I spent a lot of time studying them carefully as an aviation student. Checklists are used during normal, abnormal, and emergency situations and pilots go through practical exercises in flight simulators to use them correctly. Let's not mince words: aviation as we know it today would not be possible without checklists.&lt;br /&gt;&lt;br /&gt;In a study entitled "&lt;a href="http://emjournalclub.com/uploads/Kachalia_2009.pdf"&gt;Missed and Delayed Diagnoses in the Emergency Department: A Study of Closed Malpractice Claims From 4 Liability Insurers&lt;/a&gt;", researchers found that:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;The leading breakdowns in the diagnostic process were failure to order an appropriate diagnostic test (58% of errors), failure to perform an adequate medical history or physical examination (42%), incorrect interpretation of a diagnostic test (37%), and failure to order an appropriate consultation (33%). The leading contributing factors to the missed diagnoses were cognitive factors (96%), patient-related factors (34%), lack of appropriate supervision (30%), inadequate handoffs (24%), and excessive workload (23%).&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Checklists can serve as cognitive aid in helping clinicians do their job safely. While the idea of using checklists and standard operating procedures has been fully embraced and adopted by aviation professionals for more than 70 years, it is only now making inroads into the field of medicine particularly in high pressure environments like intensive care units. The use of checklists in medicine has already shown the potential to save patients live and reduce human errors. However, the main challenge remains the acceptance of checklists by clinicians concerned about "Cookbook Medicine". &lt;br /&gt;&lt;br /&gt;Checklists are just cognitive aids and the presence of an experienced and competent professional will always make a big difference in critical situations. As Captain Sullenberger (the airline pilot who successfully ditched US Airways Flight 1549 in the Hudson River in New York City, on January 15, 2009) said, "One way of looking at this might be that for 42 years, I've been making small, regular deposits in this bank of experience: education and training. And on January 15 the balance was sufficient so that I could make a very large withdrawal."&lt;br /&gt;&lt;br /&gt;On modern airplanes, Electronic Centralised Aircraft Monitor (ECAM) systems or Engine Indicating and Crew Alerting Systems (EICAS) monitor aircraft systems and engines and displays messages in case of failure, as well as recommended remedial actions in the form of checklists. The National Transportation Safety Board (NTSB) &lt;a href="http://www.ntsb.gov/publictn/2010/AAR1003.pdf"&gt;accident report&lt;/a&gt; on US Airways Flight 1549 indicates that the First Officer "was able to promptly locate the [Engine Dual Failure checklist] procedure listed on the back cover of the [Quick Reference Handbook] QRH, turn to the appropriate page, and start executing the checklist."&lt;br /&gt;&lt;br /&gt;In medicine, factors such as comorbidity can complicate the design of effective CDS. However, with the explosion of medical knowledge and evidence-based guidelines, CDS will become an essential tool in healthcare delivery. The design, development, implementation, and use of CDS is knowledge-intensive and require an effective collaborative knowledge management strategy. The challenge will be to integrate checklists into the different CDS modalities such as context-sensitive Infobuttons, order sets, alerts, reminders, data entry and visualization, and clinical workflows. &lt;br /&gt;&lt;br /&gt;For example, the evaluation results (in the form of recommendations) of a CDS rule can be presented to the clinician as an electronic checklist. This in turn can be tied directly to quality measures in the era of Meaningful Use, Pay-For-Performance, and Accountable Care Organizations (ACOs). An interesting example would be a checklist that prompts clinicians to generate detailed discharge instructions to satisfy quality measures for patients with heart failure or acute myocardial infection.&lt;br /&gt;&lt;br /&gt;There is an important Human Factors aspect to the design and use of cockpit checklists and flight-deck procedures. This has been the subject of advanced research at NASA Ames Research Center more than twenty years ago and the &lt;a href="http://ti.arc.nasa.gov/m/profile/adegani/Human%20Factors%20of%20Flight-Deck%20Checklists.pdf"&gt;results&lt;/a&gt; have been widely disseminated and implemented in the aviation industry. &lt;br /&gt;&lt;br /&gt;In an article entitled "&lt;a href="http://www.newyorker.com/reporting/2007/12/10/071210fa_fact_gawande?currentPage=all"&gt;The Checklist&lt;/a&gt;" published in the New Yorker, Atul Gawande wrote:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;"But consider: there are hundreds, perhaps thousands, of things doctors do that are at least as dangerous and prone to human failure as putting central lines into I.C.U. patients. It’s true of cardiac care, stroke treatment, H.I.V. treatment, and surgery of all kinds. It’s also true of diagnosis, whether one is trying to identify cancer or infection or a heart attack. All have steps that are worth putting on a checklist and testing in routine care. The question—still unanswered—is whether medical culture will embrace the opportunity."&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;Peter Pronovost, an intensivist at Johns Hopkins Hospital and pioneer in the use of checklist in medicine, implemented a checklist at 127 Michigan intensive care units (ICUs) to reduce catheter-related blood stream infections (CRBSI). The project was so successful that it is estimated that it could significantly reduce the 28,000 deaths and 3 billion dollars in costs caused by these hospital-acquired infections.&lt;br /&gt;&lt;br /&gt;The HL7 Clinical Decision Support (CDS) workgroup is working on standards for the vMR (Virtual Medical Record), Infobuttons, and Order Sets. There is also an effort at the OMG to publish a Clinical Decision Support Services specification for service-oriented CDS capabilities. The Flight Operation Interests Group (FOIG) of the Air Transport Association (ATA) is developing a data model and XML Schema for flight deck procedures and checklists. Developing a shareable content model for checklists in medicine could be an interesting idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3061502753572025791?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3061502753572025791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3061502753572025791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3061502753572025791'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/03/how-checklists-can-enhance-clinical.html' title='How Checklists Can Enhance Clinical Decision Support (CDS)'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4370819731539699475</id><published>2011-02-27T18:59:00.032-05:00</published><updated>2011-03-01T08:03:24.229-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NIEM'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='CDA'/><title type='text'>The Greening of the HL7 CDA</title><content type='html'>I attended the HIMSS 2011 Conference this week in Orlando, FL. The GreenCDA was one of the big themes at the HL7 booth. The goal of the HL7 GreenCDA project is to provide a simple intermediary XML representation of the CDA to facilitate quick learning and ease of use for developers building healthcare data exchange solutions. Using the GreenCDA should not require prior knowledge of the HL7 Reference Information Model (RIM) and the associated model refinement process. &lt;br /&gt;&lt;br /&gt;Developers should be able to generate code from the GreenCDA XML schema using data binding tools in any programming language of their choice. It should also be possible to create a round-trip transformation between the GreenCDA and the CDA. These requirements also apply to CDA implementations such as the HITSP C32. The GreenCDA will be available as an HL7 Implementation Guide and the HL7 Structured Document Working Group recently issued a GreenCDA wire format position statement. &lt;br /&gt;&lt;br /&gt;In a previous post entitled "&lt;a href="http://efasoft.blogspot.com/2011/01/xml-processing-in-healthcare.html"&gt;XML Processing in Healthcare Applications&lt;/a&gt;", I described some of the issues with the HL7 CDA and HITSP C32 XML structure and suggested some ideas on dealing with the complexity of the CDA schema and C32 generation process. In this post, I will share some thoughts on what can be done to ensure that the GreenCDA lives up to its full potential as the answer to the simplification challenge in healthcare data exchange standards.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;XML Schemas In the Software Development Lifecycle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The XML schema is an important part of the service contract in Service Oriented Architecture (SOA). Services contracts also include the WSDL and WS-Policy documents. Using the recommended contract-first approach to web services development, developers generate client as well as server code using various tools and APIs in their native programming language and framework. Even when not using a pre-existing industry XML schema, the contract-first approach allows developers to decouple the service contract from platform-specific idiosyncrasies and adhere to cross-platform interoperability standards such as the WSI-Basic Profile.&lt;br /&gt;&lt;br /&gt;On the Java platform, JAX-WS and JAXB allow developers to generate code from the WSDL and XML schema with tools like &lt;a href="http://cxf.apache.org/docs/wsdl-to-java.html"&gt;WSDL2Java&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;On the .NET platform, the Windows Communication Framework (WCF) and Visual Studio provide data binding tools out-of-the-box like the Svcutil. There is also an open source tool called &lt;a href="http://wscfblue.codeplex.com/"&gt;WSCF.blue&lt;/a&gt; specifically designed to facilitate contract-first web services development on the .NET platform.&lt;br /&gt;&lt;br /&gt;The GreenCDA XML schema could also be used in support of the "&lt;a href="http://www.eaipatterns.com/CanonicalDataModel.html"&gt;Canonical Data Model&lt;/a&gt;" enterprise integration pattern. Enterprise data architects typically extend industry XML schemas components to satisfy custom needs.&lt;br /&gt;&lt;br /&gt;Finally, the PCAST Report released in December 2010 recommended a universal exchange language that is "structured as individual data elements, together with metadata that provide an annotation for each data element". The report suggests that the metadata attached to each of these data elements&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;"...would include (i) enough identifying information about the patient to allow the data to be located (not necessarily a universal patient identifier), (ii) privacy protection information—who may access the mammograms, either identified or de-identified, and for what purposes, (iii) the provenance of the data—the date, time, type of equipment used, personnel (physician, nurse, or technician), and so forth."&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Put together, these requirements argue in favor of a GreenCDA XML schema that supports the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Reusability&lt;br /&gt;&lt;li&gt;Extensibility&lt;br /&gt;&lt;li&gt;A well-defined versioning strategy&lt;br /&gt;&lt;li&gt;Seamless code generation in a variety of programming languages and development frameworks&lt;br /&gt;&lt;li&gt;A metadata facility per the PCAST recommendations.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Designing for Reuse and Extensibility&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I suggest that the GreenCDA should only use global and named simple and complex types to facilitate reuse and extensibility. In other words, anonymous type definitions should be avoided. Extensibility is typically implemented through the &amp;lt;xsd:extension&gt; element. Reuse can also be achieved by assembling logically related schema components into separate schema documents and using the &amp;lt;xsd:include&gt; and &amp;lt;xsd:import&gt; constructs.&lt;br /&gt;&lt;br /&gt;Common XML schema components (also called core components) such as Hl7 datatypes as well as person, address, and organization should be in a separate schema file ideally under a different namespace than the target namespace of the GreenCDA itself.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Component Naming and Documentation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It would be nice to have different naming conventions for types vs. elements and attributes. Also schema component names should be spelled out for readability. A component name like "ivlTs" is not obvious for someone who is not familiar with HL7 datatypes. &lt;br /&gt;&lt;br /&gt;Each type, element, or attribute should have a required &amp;lt;xs:annotation&gt; child element which describes the semantics of the element in its child &amp;lt;xs:documentation&gt; element. In other words, all schema components should be documented.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Support for Data Binding Tools&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Certain features of the XML Schema language such as mixed content models, &amp;lt;xsd:choice&gt;, and dynamic type substitution with xsi:type are not well supported by various XML databinding tools. The need to use these constructs to accurately express the GreenCDA XML data structure should be balanced against the ability to seamlessly generate code from the GreenCDA XML schema using various XML databinding tools. &lt;br /&gt;&lt;br /&gt;Before the GreenCDA is released for production use, I suggest at least two open source reference implementations in two different development platforms (such as Java and .NET) covering the end-to-end web services development cycle using the specific tooling provided by the respective platforms.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What Can Be Learned From the National Information Exchange Model (NIEM)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.nationalehealth.org/uploadedFiles/Home/Initiatives/Nationwide_Health_Information_Network/NHIN_University/NHIN201FINAL100110.pdf"&gt;ONC Standards and Interoperability Framework&lt;/a&gt; is leveraging the NIEM from a process perspective. However, I believe there is much to be learned from the design of the NIEM as an XML data exchange standard. This does not imply that the GreenCDA should use the NIEM Core. It simply means that the healthcare domain can leverage certain NIEM design principles that are not only backed by advanced research (at Georgia Tech Research Institute) in XML schema modeling, but are also proven by the numerous government agencies using the NIEM.&lt;br /&gt;&lt;br /&gt;The NIEM embodies recognized XML Schema design patterns in its &lt;a href="http://www.niem.gov/pdf/NIEM-NDR-1-3.pdf"&gt;Naming and Design Rules (NDR)&lt;/a&gt;. The NIEM provides a schematron-based tool to automatically validate XML schemas against the rules defined in the NDR. For example, the schematron schema can enforce component naming conventions or the requirement to document every schema component. &lt;br /&gt;&lt;br /&gt;The PCAST Report says:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;"We think that a universal exchange language must facilitate the exchange of metadata tagged elements at a more atomic and disaggregated level, so that their varied assembly into documents or reports can itself be a robust, entrepreneurial marketplace of applications." &lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The NIEM defines an extensible metadata facility for adding metadata to any data elemeent in the spirit of the PCAST recommendations. The NIEM itself support the exchange of "data items" at any level of granularity. These XML Schema Design Patterns are universal and can be applied to any domain including the healthcare domain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4370819731539699475?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4370819731539699475' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4370819731539699475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4370819731539699475'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/02/greening-of-hl7-cda.html' title='The Greening of the HL7 CDA'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5152910634314942050</id><published>2011-02-03T18:45:00.019-05:00</published><updated>2011-02-09T08:04:25.361-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>A Therapeutic Layered Cake</title><content type='html'>With all the talk about the &lt;a href="http://www.whitehouse.gov/sites/default/files/microsites/ostp/pcast-health-it-report.pdf"&gt;PCAST Report&lt;/a&gt;, I've been doing some &lt;a href="http://en.wikipedia.org/wiki/Systems_thinking"&gt;Systems thinking&lt;/a&gt; on semantic interoperability in healthcare IT. Trying to put all the pieces together, I remembered Tim Berners-Lee's "Semantic Web Layer Cake". &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vFn-XW2q8mg/TUtDBC8je3I/AAAAAAAAAJI/wNARr4PYIF0/s1600/layerCake.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 305px; height: 320px;" src="http://1.bp.blogspot.com/_vFn-XW2q8mg/TUtDBC8je3I/AAAAAAAAAJI/wNARr4PYIF0/s320/layerCake.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5569619049423534962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Semantic Web layer Cake has gone through several iterations over the years (see James Hendler's &lt;a href="http://www.cs.rpi.edu/~hendler/presentations/LayercakeDagstuhl-share.pdf"&gt;presentation&lt;/a&gt; on that subject). However, I think it can still be very helpful in visualizing a unified framework for addressing the challenges of semantic interoperability in Healthcare IT.&lt;br /&gt;&lt;br /&gt;As we move to Stage 2 of Meaningful Use, I believe Clinical Decision Support (CDS) will take center stage. Beyond currently used XML-based data structures (such as HL7 v3 messages), this will put an increased emphasis on &lt;a href="http://hssp.wikispaces.com/file/view/cts2OMGsubmission.pdf/148271419/cts2OMGsubmission.pdf"&gt;medical terminologies&lt;/a&gt;, ontologies, and knowledge representation in OWL. For example, &lt;a href="http://bmir.stanford.edu/file_asset/index.php/1611/BMIR-2010-1426.pdf"&gt;ICD-11&lt;/a&gt; is being developed using OWL to allow consistency checking and linking to other biomedical terminologies and ontologies. Equally important to knowledge representation, but not shown in the layer cake above is the Simple Knowledge Organization System (&lt;a href="http://www.w3.org/2004/02/skos/"&gt;SKOS&lt;/a&gt;) specification.&lt;br /&gt;&lt;br /&gt;In a report entitled "&lt;a href="http://www.semantichealth.org/DELIVERABLES/SemanticHEALTH_D6_1.pdf"&gt;Semantic Interoperability Deployment and Research Roadmap&lt;/a&gt;", Alan Rector summarized the difference between the notions of ontology, knowledge representation, and data model:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ontology – A representation of what is universally true, including what is true by definition&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Knowledge Representation or "Background knowledge resource" – a representation of what is generally true, or widely known to be true in some specific instance. In general, the knowledge representation is formulated in terms of and indexed by the Ontology.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Information model or Data model a model of how information is structured in a given software system, message, or electronic health record. In general, the data structures carry codes for the ontology as their content.&lt;br /&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;Clinical guidelines are published in the form of narrative text, sometimes with an evaluation algorithm. The translation of those guidelines into an executable representation is a complex and costly process. Several formalisms and standards have been proposed such as the Arden Syntax, GLIF, GELLO, and GEM. However, none of these standards has been widely adopted. Developed with inputs from the Business Rules, Logic Programming, and Semantic Web communities, the W3C Rule Interchange Format (&lt;a href="http://www.w3.org/2005/rules/wiki/PRD"&gt;RIF&lt;/a&gt;) can help with the interchange of executable Clinical Decision Support (CDS) rules in addition to adding reasoning capabilities to patient records. This &lt;a href="http://yieldrif.appspot.com/"&gt;example&lt;/a&gt; shows how decision support rules could be exchanged between two rules engines (Drools and Jess) using the RIF PRD syntax, a standard XML serialization format for production rule languages.&lt;br /&gt;&lt;br /&gt;Existing patient records marked up in XML HITSP C32 or ASTM CCR can be lifted into RDF statements (with XSLT or XQuery for example) and queried using SPARQL.&lt;br /&gt;&lt;br /&gt;Proof, Trust, and Cryptography are being currently addressed by various standards and specifications in the healthcare industry notably the &lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xspa"&gt;OASIS Cross-Enterprise Security and Privacy Authorization (XSPA)&lt;/a&gt; Profiles of XACML, SAML, and WS-Trust.&lt;br /&gt;&lt;br /&gt;On the User Interface side, I see HTML5 giving both Flex and Silverlight a run for their money in the next few years. This will be driven in part by the demand for mobile health (&lt;a href="http://en.wikipedia.org/wiki/MHealth"&gt;mHealth&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5152910634314942050?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5152910634314942050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5152910634314942050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5152910634314942050'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/02/therapeutic-layer-cake.html' title='A Therapeutic Layered Cake'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vFn-XW2q8mg/TUtDBC8je3I/AAAAAAAAAJI/wNARr4PYIF0/s72-c/layerCake.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5027583147801576693</id><published>2011-01-22T09:41:00.021-05:00</published><updated>2011-08-21T20:05:55.043-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XProc'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='XQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>XML Processing in Healthcare Applications</title><content type='html'>Meaningful Use certification requires the ability to create patient summaries in either C32 or CCR format. One of the most frequently asked questions on the HL7 Structured Document mailing list is related to the processing of the CDA XML schema with data binding tools such as JAXB or Castor. Initially, people are not able to generate Java classes with JAXB at all. After some changes to the schema, JAXB finally works and creates hundreds of classes which are not very easy to work with and maintain. Then someone suggests using the &lt;a href="http://cdatools.org/"&gt;Model-Driven Health Tools (MDHT) CDA tools&lt;/a&gt; which are Java-based. You face additional headache if you're not developing on the Java platform.&lt;br /&gt;&lt;br /&gt;In a &lt;a href="http://www.balisage.net/Proceedings/vol3/html/Beuchelt01/BalisageVol3-Beuchelt01.html"&gt;paper&lt;/a&gt; presented at the Balisage 2009 conference, a team of engineers who implemented the "&lt;a href="http://projectlaika.org"&gt;Laika&lt;/a&gt;" C32 compliance testing tool described the issues with the CDA and C32 XML structure:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Repeated use of overly abstract data structures: The HL7 CDA defines a number of very generic objects that are used to represent information in a given document. Differing information, such as medications and conditions, are represented using the same XML elements with very subtle changes in their nesting and attributes. This makes a CDA document difficult to process.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Underspecified implementation, including lack of a normative schema: While there is an XML schema for the HL7 CDA, a final schema does not exist for the HITSP C32 or other CDA-based documents due to their use of attributes for selecting templates. Thus, defining schemas for these documents is impossible. As a result, CDA-based constructs such as HITSP C32 cannot be automatically validated by XML parsers; standard object mapping tools, such as XML Beans or JAXB, cannot be used.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Ambiguous data types: Data can be represented in multiple ways in a CDA document. Consumers of CDA documents must, therefore, write software that handles any of the numerous permutations of these data types. This leads to bloated software, or more likely, software that does not implement the full specification and experiences interoperability problems when it receives data in an unexpected format.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Steep and long learning curve: Mastery of the CDA and its many specifications and constructs takes an experienced software engineer many months to achieve. Once learned, it is very cumbersome to employ in robust software applications and services. These difficulties drive up the cost and time to develop and maintain health care software, thus reducing the pace of innovation.&lt;br /&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;In a previous post entitled "&lt;a href="http://efasoft.blogspot.com/2010/09/future-of-healthcare-data-exchange.html"&gt;The Future of Healthcare Data Exchange Standards&lt;/a&gt;", I suggested some ideas on how to develop standard XML schemas that support the software development process as opposed to hindering it. Since we're not there yet, in this post I will suggest some ideas on dealing with the complexity of the CDA schema and C32 generation process.&lt;br /&gt;&lt;br /&gt;The key is to leverage the power of XML related technologies such as XPath2, XSLT2, XQuery, XProc, ISO Schematron, and even XML Schema 1.1 (for assertions or business rules constraints) to simplify the task. First, generate a simple and perhaps flat XML representation (let's call it simpleC32) of the patient summary from your domain objects or database (through a data transfer object or DTO for example). That simpleC32 contains all the content that is needed to populate the C32 templates and generate a valid C32 document. You can create your own XML schema for your simpleC32 and use it for validation and data binding. &lt;br /&gt;&lt;br /&gt;Once you have a valid simpleC32 document, you can use XSLT2 to transform the patient summary from your simpleC32 representation into a C32 document that can be validated against the NIST Meaningful Use C32 Validator. This is roughly the idea behind the &lt;a href="http://wiki.hl7.org/index.php?title=GreenCDA_Project"&gt;GreenCDA&lt;/a&gt; project. Use that as an inspiration on how to create a simple representation of the C32. You can even use the GreenCDA XML schema as your simpleC32. But don't hesitate to create your own simpleC32 if the GreenCDA does not work for you, because the target is still the C32, and the idea here is to have an intermediary representation (an Adapter) to make your life easier. It is also an approach that allows you to isolate your domain model and prevent the complexity of the C32 data model from leaking into your domain layer (see my previous post on the concept of Anti-Corruption Layer in &lt;a href="http://efasoft.blogspot.com/2010/12/how-not-to-build-big-ball-of-mud.html"&gt;Domain Driven Design&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Why is this approach not used more often? Some developers who code with imperative programming languages (such as Java, C#, or JavaScript) are not comfortable with declarative programming using languages like XSLT2 and XQuery. I've recently seen a Java developer use JAXB to create hundreds of classes and thousands of hard to maintain lines of code for a simple transformation from the CDA to a different target XML schema.&lt;br /&gt;&lt;br /&gt;The basic difference between declarative (and functional) programming languages and imperative languages is that the former specify the "what" (the intent) as opposed to the "how" (the algorithm). However, declarative programming with XSLT2 and XQuery can be mastered through training and practice: see my previous posts entitled: "&lt;a href="http://efasoft.blogspot.com/2009/01/in-defense-of-xslt.html"&gt;In Defense of XSLT&lt;/a&gt;", "&lt;a href="http://efasoft.blogspot.com/2009/05/why-xproc-rocks.html"&gt;Why XProc Rocks&lt;/a&gt;", and &lt;a href="http://efasoft.blogspot.com/2010/06/putting-xquery-to-work-in-healthcare.html"&gt;Putting XQuery to Work in Healthcare&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;While Java and C# are general purpose languages, processing languages like XSLT2, XQuery, and XProc are actually based on the &lt;a href="http://www.w3.org/TR/xpath-datamodel/"&gt;XQuery 1.0 and XPath 2.0 Data Model (XDM)&lt;/a&gt; and specifically designed for the purpose of manipulating XML documents. This is particularly helpful when dealing with a complex and deep structure such as the HL7 CDA and other HL7 V3 messages. These XML-centric processing languages use XPath2 to navigate the XML tree. In general, consider using them in the following cases:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Applications that require dealing with a complex industry data exchange XML schema which is not easy to process with your databinding and other development tools. In that case, create an intermediary simpe XML representation and map it to the industry data exchange XML schema using XSLT2 or XQuery (XQuery is not just for querying native XML databases, it is also a powerful language for processing XML documents).&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Applications that require translation from an XML schema to another target XML schema (for example a mapping from the HL7 CCD to the ASTM CCR or from the C32 to XHTML).&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Applications that require translation from an XML representation to a non-XML representation and round-trip (for example HL7 v2.x to HL7 V3, C32 XML to JSON, or C32 to a non-XML serialization of RDF).&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Consider using &lt;a href="http://xprocbook.com/book/book-1.html"&gt;XProc&lt;/a&gt; if you need to chain multiple XML processing steps such as: query a data source with XQuery, expand XIncludes, validate against XML schema, validate against a schematron schema, transform with XSLT2, generate a PDF document with XSL FO, and so on.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The Universal Exchange Language proposed by the &lt;a href="http://efasoft.blogspot.com/2010/12/toward-universal-exchange-language-for.html"&gt;PCAST Report&lt;/a&gt; could be an opportunity to address the issues listed above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5027583147801576693?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5027583147801576693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5027583147801576693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5027583147801576693'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2011/01/xml-processing-in-healthcare.html' title='XML Processing in Healthcare Applications'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5301264870189113702</id><published>2010-12-19T16:44:00.014-05:00</published><updated>2011-10-24T19:37:29.998-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DDD'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='di'/><category scheme='http://www.blogger.com/atom/ns#' term='aop'/><title type='text'>How Not to Build A Big Ball of Mud</title><content type='html'>If you are a software developer or architect, in addition to the ever changing business requirements, you also need to deal with the myriad of application development frameworks and design patterns out there.  There are frameworks for: the User Interface (UI), Dependency Injection (DI), Aspect Oriented Programming (AOP), and Object-Relational Mapping (ORM). On top of that, you will probably need a web services framework and perhaps an Enterprise Service Bus (ESB) if you need to integrate applications. As an architect, you also need to keep an eye on scalability, availability, security, usability, industry standards, and government regulations.&lt;br /&gt;&lt;br /&gt;In such an environment, the lack of a disciplined approach to software architecture can quickly lead to a &lt;a href="http://www.laputan.org/mud/"&gt;Big Ball of Mud&lt;/a&gt;. In a paper presented in 1997 at the Fourth Conference on Patterns Languages of Programs, Brian Foote and Joseh Yoder describe the Big Ball of Mud:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;A BIG BALL OF MUD is haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle. We’ve all seen them. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated. The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems.&lt;/blockquote&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Big Ball of Mud remains the most pervasive architecture today. Note that these problems can be exacerbated by an agile software development approach that leaves little or no room for design and strategic thinking (see my previous post on &lt;a href="http://efasoft.blogspot.com/2010/10/software-architecture-documentation-in.html"&gt;software architecture documentation in agile projects&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Domain Driven Design (DDD) is a set of patterns that have been introduced by Eric Evans in his book entitled: "Domain-Driven Design: Tackling Complexity in the Heart of Software". I won't go into the details of what those patterns are. I do recommend that you read the book and there are other free DDD resources on the web as well. However, I will share with you some key DDD principles that have been helpful to me in wrapping my head around software architecture complexity:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Collaboration between software developers and domain experts is important to create a common understanding of the concepts of the domain. Note that we're not talking about UI components such as screens or fields here, nor are we talking about computer science abstractions such as classes and objects. We are talking about what the domain is made of &lt;span style="font-weight:bold;"&gt;conceptually&lt;/span&gt;. These domain concepts are expressed in a Ubiquitous Language that is used not only in conversations and software documentation, but also in the code. So in essence, DDD is model-driven design: the model can be translated into code and frameworks like Naked Objects can help you do exactly that. Continuously refine the model.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Experimentation and rapid prototyping are an efficient way to collaborate with domain experts and business analysts. This is where the Naked Objects Framework can be very helpful. Note that you can use Naked Objects for the initial prototyping and domain modeling, and then use your preferred frameworks for the remaining layers of your application.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Pay attention to the correct implementation of DDD building blocks such as: entities (behaviour-rich with business rules), value objects, aggregates, aggregate roots, domain events, factories, repositories, and services. Avoid an anemic domain model and know how to recognize value objects and persist them properly. Value objects (such as money and time interval) are immutable and are manipulated through side-effect free functions. Move complexity and behaviour out of your entities into those value objects. &lt;br /&gt;&lt;br /&gt;&lt;li&gt;Domain concepts are grouped into modules to delineate what Eric Evans calls the "conceptual contours" of the domain. To reduce coupling, OO patterns such as the dependency inversion principle, the interface segregation principle, and the acyclic dependency principles are applied.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;DDD recommends the following four layers: the presentation layer, the application layer, the domain layer, and the infrastructure layer. Although the idea of a multi-tier architecture is not new, the anti-patterns are typically: a fat application layer, an anemic domain model, and a tangled mess in general. So, properly layer your architecture:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Repository interfaces are in the domain layer, but their implementation are in the infrastructure layer to allow "Persistence Ignorance"&lt;br /&gt;&lt;li&gt;Both the interface and implementation of factories are in the domain layer&lt;br /&gt;&lt;li&gt;Domain and infrastructure services are injected into entities using dependency injection (some argue that DDD is not possible without DI, AOP, and ORM)&lt;br /&gt;&lt;li&gt;The application layer takes care of cross-cutting concerns such as transactions and security. It can also mediate between the  presentation layer and domain layer through Data Transfer Objects (DTOs).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;DDD enables &lt;a href="http://en.wikipedia.org/wiki/Object-oriented_user_interface"&gt;Object Oriented User Interfaces (OOUI)&lt;/a&gt; which expose the richness of the domain layer as opposed to obscuring it.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Models exist within bounded contexts and the latter should be clearly identified. In his book, Eric Evans talks about "strategic design" and "context maps" and suggests the following options for integrating applications:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Published language&lt;br /&gt;&lt;li&gt;Open host service&lt;br /&gt;&lt;li&gt;Shared kernel&lt;br /&gt;&lt;li&gt;Customer/supplier&lt;br /&gt;&lt;li&gt;Conformist&lt;br /&gt;&lt;li&gt;Anti-corruption layer &lt;br /&gt;&lt;li&gt;Separate ways.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In industries such as healthcare where an XML-based data exchange standard exists, the "Published Language" approach is the pattern typically used. Each healthcare application participating in an exchange represents a separate context. On the other hand, an "Anti-Corruption Layer" can be created as an adapter to isolate the model against an industry standard model that is not considered best practice in data modeling, is inconsistent, immature, or subject to change. However, since there is tremendous value in exchanging data, we hope not to go "Separate Ways".&lt;br /&gt;&lt;br /&gt;&lt;li&gt;DDD is a solid foundation for next-generation architecture based on the Command Query Responsibility Segregation (CQRS) pattern. The UI sends commands which are handled by command handlers. These command handlers change the state of aggregate roots. However, the aggregate roots still define behavior and business rules and are responsible for maintaining invariants. Changes to aggregate roots generate events that are stored in an event store (this is called event sourcing). Aggregate roots are persisted by storing these streams of events in the event store. That way, the aggregate roots can be reconstructed by replaying the events from the event store. The events are published to subscribers including denormalizers for enhanced query performance. The separation of the read side from the write side allows:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Increased performance and scalability on the read and reporting side particularly when combined with a cloud deployment model&lt;br /&gt;&lt;li&gt;Complete audit trails through the event store&lt;br /&gt;&lt;li&gt;New data mining capabilities leveraging temporal queries&lt;br /&gt;&lt;li&gt;The opportunity to eliminate the need for Object Relational Mapping (ORM) through the use of high performance NoSQL databases.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5301264870189113702?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5301264870189113702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5301264870189113702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5301264870189113702'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/12/how-not-to-build-big-ball-of-mud.html' title='How Not to Build A Big Ball of Mud'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4008283935121357911</id><published>2010-12-13T22:07:00.023-05:00</published><updated>2010-12-26T12:51:25.974-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NIEM'/><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Toward a Universal Exchange Language for Healthcare</title><content type='html'>The US President's Council of Advisors on Science and Technology (PCAST) published a report last week entitled:  "Realizing the Full Potential of Health Information Technology to Improve Healthcare for Americans: The Path Forward". The report calls for a universal exchange language for healthcare (abbreviated as UELH in this post). Specifically, the report says:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;"We believe that the natural syntax for such a universal exchange language will be some kind of exten­sible markup language (an XML variant, for example) capable of exchanging data from an unspecified number of (not necessarily harmonized) semantic realms. Such languages are structured as individual data elements, together with metadata that provide an annotation for each data element."&lt;/blockquote&gt; &lt;/span&gt;&lt;br /&gt;First, let me say that I fully support the idea of a UELH. I've written in the past about the future of healthcare data exchange standards. The ASTM CCR and the HL7 CCD have been adopted for Meaningful Use Stage 1 and that was the right choice. In my opinion, the UELH proposed by PCAST is about the next generation healthcare data exchange standard that is yet to be built. It's part of the natural evolution and innovation that are inherent to the information technology industry. It is also a very challenging task that should be informed by the important work that has been done previously in this field including:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The ASTM CCR&lt;br /&gt;&lt;li&gt;The HL7 RIM, CDA, CCD, and greenCDA&lt;br /&gt;&lt;li&gt;Archetype-based EN 13606 from OpenEHR &lt;br /&gt;&lt;li&gt;The National Information Exchange Model (NIEM) &lt;br /&gt;&lt;li&gt;HITSP C32&lt;br /&gt;&lt;li&gt;Biomedical Ontologies using semantic web technologies such as OWL2, SKOS, and RDF.&lt;br /&gt;&lt;li&gt;Medical Terminologies such as SNOMED and RxNorm.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;This new language should focus on identifying, addressing, and solving the issues with the use of the current set of healthcare data exchange standards. This will require a public discourse that is cordial and focused on solutions and innovative ideas. Most importantly, it will require listening to the concerns of implementers. This proposal should not be about reinventing the wheel. It should be about creating a better future by learning lessons from the past while being open-minded about new ideas and approaches to solving problems.&lt;br /&gt;&lt;br /&gt;Note that the report talks about the syntax of this new language as some kind of an "XML variant". It also mentioned that the language must be exten­sible. This is important in order to enable innovation in this field. For example, we've recently seen a serious challenge to XML coming from JSON in the web APIs space (Twitter and Foursquare removed support for XML in their APIs and now only provide a JSON API). Similarly, in the Semantic Web space, alternatives to the RDF/XML serialization syntax have emerged such as the N-triples notation. This is not to say that XML is the wrong representation for healthcare data. It simply means that we should be open to innovation in this area.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Metadata and the Semantic Web in Healthcare&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Closely related to the notion of metadata is the idea of the Semantic Web. Although semantic web technologies are not widely used in healthcare today, they could help address some of the issues with current healthcare standard information models including: model consistency, reasoning, and  knowledge integration across domains (e.g. the genomics and clinical domains). In a report entitled "&lt;a href="http://www.semantichealth.org/DELIVERABLES/SemanticHEALTH_D6_1.pdf"&gt;Semantic Interoperability Deployment and Research Roadmap&lt;/a&gt;", Alan Rector, an authority in the field of biomedical ontologies, explains the difference between ontologies and data structures:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;A second closely related notion is that of an "information model" of "model of data structures". Both Archetypes and HL7 V3 Messages are examples of data structures. Formalisms for data structures bear many resemblances to formalisms for ontologies. The confusion is made worse because the description logics are often used for both. However, there is a clear difference.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ontologies are about the things being represented – patients, their diseases. They are about what is always true, whether or not it is known to the clinician. For example, all patients have a body temperature (possibly ambient if they are dead); however, the body temperature may not be known or recorded. It makes no sense to talk about a patient with a "missing" body temperature.&lt;br /&gt;&lt;li&gt;Data structures are about the artefacts in which information is recorded. Not every data structure about a patient need include a field for body temperature, and even if it does, that field may be missing for any given patient. It makes perfect sense to speak about a patient record with missing data for body temperature.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;A key point is that "epistemological issues" – issues of what a given physician or the healthcare system knows – should be represented in the data structures rather than the ontology. This causes serious problems for terminologies coding systems, which often include notions such as "unspecified" or even "missing". This practice is now widely deprecated but remains common.&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;One of the Common Terminology Services (CTS 2) &lt;a href="http://hssp.wikispaces.com/file/view/cts2OMGsubmission.pdf/148271419/cts2OMGsubmission.pdf"&gt;submissions&lt;/a&gt; to the OMG is based on Semantic Web technologies such as OWL2, SKOS, and SPARQL. The UELH proposed by the PCAST should leverage the work that has been done by the biomedical ontology community.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The NIEM Approach to Metadata-Tagged Data Elements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The report goes on to say that the metadata attached to each of these data elements &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;"...would include (i) enough identifying information about the patient to allow the data to be located (not necessarily a universal patient identifier), (ii) privacy protection information—who may access the mammograms, either identified or de-identified, and for what purposes, (iii) the provenance of the data—the date, time, type of equipment used, personnel (physician, nurse, or technician), and so forth."&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The report does not explain exactly how this should be done. So let's combine the wisdom of the NIEM, HL7 greenCDA, and OASIS XSPA (Cross-Enterprise Security and Privacy Authorization Profile of XACML  for healthcare) to propose a solution. Let's assume that we need to add metadata about the equiment used for the lab result as well as patient consent directives to the following lab result entry which is marked up in greenCDA format:&lt;br /&gt;&lt;pre class="xml"&gt;&lt;br /&gt;&amp;lt;result&amp;gt;&lt;br /&gt;  &amp;lt;resultID root=&amp;quot;107c2dc0-67a5-11db-bd13-0800200c9a66&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultDateTime value=&amp;quot;200003231430&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultType codeSystem=&amp;quot;2.16.840.1.113883.6.1&amp;quot; code=&amp;quot;30313-1&amp;quot;&lt;br /&gt;  displayName=&amp;quot;HGB&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultStatus code=&amp;quot;completed&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultValue&amp;gt;&lt;br /&gt;    &amp;lt;physicalQuantity value=&amp;quot;13.2&amp;quot; unit=&amp;quot;g/dl&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/resultValue&amp;gt;&lt;br /&gt;  &amp;lt;resultInterpretation codeSystem=&amp;quot;2.16.840.1.113883.5.83&amp;quot;&lt;br /&gt;  code=&amp;quot;N&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultReferenceRange&amp;gt;M 13-18 g/dl; F 12-16&lt;br /&gt;  g/dl&amp;lt;/resultReferenceRange&amp;gt;&lt;br /&gt;&amp;lt;/result&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the following, an s:metadata attribute is added to the root element (s:metadata is of type IDREFS and for brevity, I am not showing the namespace declarations):&lt;br /&gt;&lt;pre class="xml"&gt;&lt;br /&gt;&amp;lt;result s:metadata=&amp;quot;equipment consent&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;resultID root=&amp;quot;107c2dc0-67a5-11db-bd13-0800200c9a66&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultDateTime value=&amp;quot;200003231430&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultType codeSystem=&amp;quot;2.16.840.1.113883.6.1&amp;quot; code=&amp;quot;30313-1&amp;quot;&lt;br /&gt;  displayName=&amp;quot;HGB&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultStatus code=&amp;quot;completed&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultValue&amp;gt;&lt;br /&gt;    &amp;lt;physicalQuantity value=&amp;quot;13.2&amp;quot; unit=&amp;quot;g/dl&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/resultValue&amp;gt;&lt;br /&gt;  &amp;lt;resultInterpretation codeSystem=&amp;quot;2.16.840.1.113883.5.83&amp;quot;&lt;br /&gt;  code=&amp;quot;N&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;resultReferenceRange&amp;gt;M 13-18 g/dl; F 12-16&lt;br /&gt;  g/dl&amp;lt;/resultReferenceRange&amp;gt;&lt;br /&gt;&amp;lt;/result&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The following is the lab test equipment metadata:&lt;br /&gt;&lt;pre class="xml"&gt;&lt;br /&gt;&amp;lt;LabTestEquipmentMetadata s:id=&amp;quot;equipment&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;SerialNumber&amp;gt;93638494749&amp;lt;/SerialNumber&amp;gt;&lt;br /&gt;  &amp;lt;Manufacuturer&amp;gt;MedLabEquipCo.&amp;lt;/Manufacturer&amp;gt;&lt;br /&gt;&amp;lt;/LabTestEquipmentMetadata&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And here is the patient consent directives marked in XACML XSPA format (this snippet is taken from the NHIN Access Consent Policies Specification):&lt;br /&gt;&lt;pre class="xml"&gt;&lt;br /&gt;&amp;lt;ConsentMetadata s:id=&amp;quot;consent&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:2.0:policy:schema:os&amp;quot;&lt;br /&gt;PolicyId=&amp;quot;12345678-1234-1234-1234-123456781234&amp;quot;&lt;br /&gt;RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Description&amp;gt;Sample XACML policy for NHIN&amp;lt;/Description&amp;gt;&lt;br /&gt;&amp;lt;!-- The Target element at the Policy level identifies the subject to whom the Policy applies --&amp;gt;&lt;br /&gt;&amp;lt;Target&amp;gt;&lt;br /&gt;&amp;lt;Resources&amp;gt;&lt;br /&gt;&amp;lt;Resource&amp;gt;&lt;br /&gt;&amp;lt;ResourceMatch MatchId=&amp;quot;http://www.hhs.gov/healthit/nhin/function#instance-identifier-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;AttributeValue DataType=&amp;quot;urn:hl7-org:v3#II&amp;quot;&lt;br /&gt;xmlns:hl7=&amp;quot;urn:hl7-org:v3&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;hl7:PatientId root=&amp;quot;2.16.840.1.113883.3.18.103&amp;quot;&lt;br /&gt;  extension=&amp;quot;00375&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;&amp;lt;ResourceAttributeDesignator AttributeId=&amp;quot;http://www.hhs.gov/healthit/nhin#subject-id&amp;quot;&lt;br /&gt;DataType=&amp;quot;urn:hl7-org:v3#II&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/ResourceMatch&amp;gt;&lt;br /&gt;&amp;lt;/Resource&amp;gt;&lt;br /&gt;&amp;lt;Actions&amp;gt;&lt;br /&gt;&amp;lt;!-- This policy applies to all document query and document retrieve transactions --&amp;gt;&lt;br /&gt;&amp;lt;Action&amp;gt;&lt;br /&gt;&amp;lt;ActionMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;&lt;br /&gt;  urn:ihe:iti:2007:CrossGatewayRetrieve&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;  &amp;lt;ActionAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:2.0:action&amp;quot;&lt;br /&gt;  DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/ActionMatch&amp;gt;&lt;br /&gt;&amp;lt;/Action&amp;gt;&lt;br /&gt;&amp;lt;Action&amp;gt;&lt;br /&gt;&amp;lt;ActionMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;&lt;br /&gt;  urn:ihe:iti:2007:CrossGatewayQuery&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;  &amp;lt;ActionAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:2.0:action&amp;quot;&lt;br /&gt;  DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/ActionMatch&amp;gt;&lt;br /&gt;&amp;lt;/Action&amp;gt;&lt;br /&gt;&amp;lt;/Actions&amp;gt;&lt;br /&gt;&amp;lt;Rule RuleId=&amp;quot;133&amp;quot; Effect=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Description&amp;gt;Permit access to all documents to all&lt;br /&gt;physicians and nurses&amp;lt;/Description&amp;gt;&lt;br /&gt;&amp;lt;Target&amp;gt;&lt;br /&gt;&amp;lt;Subjects&amp;gt;&lt;br /&gt;  &amp;lt;Subject&amp;gt;&lt;br /&gt; &amp;lt;SubjectMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- coded value for physicians --&amp;gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;&lt;br /&gt;   112247003&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;SubjectAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:2.0:subject:role&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/SubjectMatch&amp;gt;&lt;br /&gt;  &amp;lt;/Subject&amp;gt;&lt;br /&gt;  &amp;lt;Subject&amp;gt;&lt;br /&gt; &amp;lt;SubjectMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- coded value for nurses --&amp;gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;&lt;br /&gt;   106292003&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;SubjectAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:2.0:subject:role&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/SubjectMatch&amp;gt;&lt;br /&gt;  &amp;lt;/Subject&amp;gt;&lt;br /&gt;&amp;lt;/Subjects&amp;gt;&lt;br /&gt;&amp;lt;!-- since there is no Resource element, this rule applies to all resources --&amp;gt;&lt;br /&gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;&amp;lt;Rule RuleId=&amp;quot;134&amp;quot; Effect=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Description&amp;gt;Allow access Dentists and Dental Hygienists&lt;br /&gt;Access from the Happy Tooth dental practice to documents&lt;br /&gt;with &amp;quot;Normal&amp;quot; confidentiality for a defined time&lt;br /&gt;period.&amp;lt;/Description&amp;gt;&lt;br /&gt;&amp;lt;Target&amp;gt;&lt;br /&gt;&amp;lt;Subjects&amp;gt;&lt;br /&gt;  &amp;lt;Subject&amp;gt;&lt;br /&gt; &amp;lt;SubjectMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- coded value for dentists --&amp;gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;&lt;br /&gt;   106289002&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;SubjectAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:2.0:subject:role&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/SubjectMatch&amp;gt;&lt;br /&gt; &amp;lt;SubjectMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;&lt;br /&gt;   http://www.happytoothdental.com&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;SubjectAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xspa:1.0:subject:organization-id&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/SubjectMatch&amp;gt;&lt;br /&gt;  &amp;lt;/Subject&amp;gt;&lt;br /&gt;  &amp;lt;Subject&amp;gt;&lt;br /&gt; &amp;lt;SubjectMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- coded value for dental hygienists --&amp;gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;&lt;br /&gt;   26042002&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;SubjectAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:2.0:subject:role&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/SubjectMatch&amp;gt;&lt;br /&gt; &amp;lt;SubjectMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;&lt;br /&gt;   http://www.happytoothdental.com&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;SubjectAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xspa:1.0:subject:organization-id&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/SubjectMatch&amp;gt;&lt;br /&gt;  &amp;lt;/Subject&amp;gt;&lt;br /&gt;&amp;lt;/Subjects&amp;gt;&lt;br /&gt;&amp;lt;Resources&amp;gt;&lt;br /&gt;  &amp;lt;Resource&amp;gt;&lt;br /&gt; &amp;lt;ResourceMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;&lt;br /&gt;   N&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;ResourceAttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xspa:1.0:resource:patient:hl7:confidentiality-code&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/ResourceMatch&amp;gt;&lt;br /&gt;  &amp;lt;/Resource&amp;gt;&lt;br /&gt;&amp;lt;/Resources&amp;gt;&lt;br /&gt;&amp;lt;Environments&amp;gt;&lt;br /&gt;  &amp;lt;Environment&amp;gt;&lt;br /&gt; &amp;lt;EnvironmentMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:date-greather-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#date&amp;quot;&amp;gt;&lt;br /&gt;   2009-07-01&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;EnvironmentAttributeDesignator AttributeId=&amp;quot;http://www.hhs.gov/healthit/nhin#rule-start-date&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#date&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/EnvironmentMatch&amp;gt;&lt;br /&gt;  &amp;lt;/Environment&amp;gt;&lt;br /&gt;  &amp;lt;Environment&amp;gt;&lt;br /&gt; &amp;lt;EnvironmentMatch MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:date-less-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#date&amp;quot;&amp;gt;&lt;br /&gt;   2009-12-31&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;   &amp;lt;EnvironmentAttributeDesignator AttributeId=&amp;quot;http://www.hhs.gov/healthit/nhin#rule-end-date&amp;quot;&lt;br /&gt;   DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#date&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/EnvironmentMatch&amp;gt;&lt;br /&gt;  &amp;lt;/Environment&amp;gt;&lt;br /&gt;&amp;lt;/Environments&amp;gt;&lt;br /&gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;&amp;lt;Rule RuleId=&amp;quot;135&amp;quot; Effect=&amp;quot;Deny&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Description&amp;gt;deny all access to documents. Since this&lt;br /&gt;rule is last, it will be selected if no other rule&lt;br /&gt;applies, under the rule combining algorithm of first&lt;br /&gt;applicable.&amp;lt;/Description&amp;gt;&lt;br /&gt;&amp;lt;Target /&amp;gt;&lt;br /&gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;&amp;lt;/Resources&amp;gt;&lt;br /&gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;&amp;lt;/Policy&amp;gt;&lt;br /&gt;&amp;lt;/ConsentMetadata&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Please note the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Metadata "LabTestEquipmentMetadata" asserts the equipment used for the lab test.&lt;br /&gt;&lt;li&gt;Metadata "ConsentMetadata" asserts the patient consent directives leveraving the XSPA XACML format.&lt;br /&gt;&lt;li&gt;Metadata can be declared once and reused by multiple elements.&lt;br /&gt;&lt;li&gt;An element can refer to 0 or more metadata objects.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;In NIEM, an appinfo:AppliesTo element in a metadata type declaration is used to indicate the type to which the metadata applies as in the following example (note this is not enforced by the XML schema validating parser, but can be enforced at the application level):&lt;br /&gt;&lt;pre class="xml"&gt;&lt;br /&gt;&amp;lt;xsd:complexType name=&amp;quot;LabTestEquipmentMetadataType&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;xsd:annotation&amp;gt;&lt;br /&gt;    &amp;lt;xsd:appinfo&amp;gt;&lt;br /&gt;      &amp;lt;i:AppliesTo i:name=&amp;quot;LabResultType&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/xsd:appinfo&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:annotation&amp;gt;&lt;br /&gt;  &amp;lt;xsd:complexContent&amp;gt;&lt;br /&gt;&amp;lt;xsd:extension base="s:MetadataType"&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/xsd:extension&gt;&lt;br /&gt;&amp;lt;/xsd:complexContent&amp;gt;&lt;br /&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsd:element name=&amp;quot;LabTestEquipmentMetadata&amp;quot; type=&amp;quot;LabTestEquipmentMetadataType&amp;quot; nillable=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;NIEM defines a common metadata type that can be extended by any type definition that requires metadata:&lt;br /&gt;&lt;pre class="xml"&gt;&lt;br /&gt;&amp;lt;schema&lt;br /&gt;    targetNamespace=&amp;quot;http://niem.gov/niem/structures/2.0&amp;quot;&lt;br /&gt;    version=&amp;quot;alpha2&amp;quot;&lt;br /&gt;    xmlns:i=&amp;quot;http://niem.gov/niem/appinfo/2.0&amp;quot;&lt;br /&gt;    xmlns:s=&amp;quot;http://niem.gov/niem/structures/2.0&amp;quot;&lt;br /&gt;    xmlns=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;attribute name=&amp;quot;id&amp;quot; type=&amp;quot;ID&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;attribute name=&amp;quot;linkMetadata&amp;quot; type=&amp;quot;IDREFS&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;attribute name=&amp;quot;metadata&amp;quot; type=&amp;quot;IDREFS&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;attribute name=&amp;quot;ref&amp;quot; type=&amp;quot;IDREF&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;attribute name=&amp;quot;sequenceID&amp;quot; type=&amp;quot;integer&amp;quot;/&amp;gt;&lt;br /&gt;   &lt;br /&gt;  &amp;lt;attributeGroup name=&amp;quot;SimpleObjectAttributeGroup&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;attribute ref=&amp;quot;s:id&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;attribute ref=&amp;quot;s:metadata&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;attribute ref=&amp;quot;s:linkMetadata&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/attributeGroup&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;element name=&amp;quot;Metadata&amp;quot; type=&amp;quot;s:MetadataType&amp;quot; abstract=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;complexType name=&amp;quot;ComplexObjectType&amp;quot; abstract=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;      &amp;lt;attribute ref=&amp;quot;s:id&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;attribute ref=&amp;quot;s:metadata&amp;quot;/&amp;gt;&lt;br /&gt;      &amp;lt;attribute ref=&amp;quot;s:linkMetadata&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/complexType&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;complexType name=&amp;quot;MetadataType&amp;quot; abstract=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;      &amp;lt;attribute ref=&amp;quot;s:id&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/complexType&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/schema&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Any type definition that needs metadata can simply extend ComplexObjectType as follows for lab result type:&lt;br /&gt;&lt;pre class="xml"&gt;&lt;br /&gt;&amp;lt;xsd:complexType name=&amp;quot;LabResultType&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;xsd:complexContent&amp;gt;&lt;br /&gt;    &amp;lt;xsd:extension base=&amp;quot;s:ComplexObjectType&amp;quot;&amp;gt;&lt;br /&gt;      &amp;lt;xsd:sequence&amp;gt;...&amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;    &amp;lt;/xsd:extension&amp;gt;&lt;br /&gt;  &amp;lt;/xsd:complexContent&amp;gt;&lt;br /&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4008283935121357911?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4008283935121357911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4008283935121357911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4008283935121357911'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/12/toward-universal-exchange-language-for.html' title='Toward a Universal Exchange Language for Healthcare'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2649397373011891182</id><published>2010-10-13T20:11:00.014-04:00</published><updated>2011-01-05T19:57:37.907-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Software Architecture Documentation in Agile Projects</title><content type='html'>One misconception that I often hear in Agile circles is that there is no need for software architecture documentation in Agile because "code is self-documenting". The emphasis in agile is not to eliminate the need for design and documentation, but to avoid Big Up Front Design (BDUF). Design and architecture documentation are still important in Agile. However, you only need just enough design and documentation to start coding. In other words, don't over-document. &lt;br /&gt;&lt;br /&gt;As you code and refactor, some of the software architecture documentation will become quickly obsolete and should be discarded. Use tools such as Maven, SchemaSpy, Doxygen, and UmlGraph to auto-generate up-to-date documentation from your source code. A wiki is also a good tool for publishing and sharing architecture documentation. For consistency, I recommend using a template for documenting the architecture.&lt;br /&gt;&lt;br /&gt;Provide the documentation only if it is really needed and used by stakeholders. So, don't try to document everything. You do need to document the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Design decisions and their rationale &lt;br /&gt;&lt;li&gt;Design patterns and development frameworks used&lt;br /&gt;&lt;li&gt;The architecture viewpoints and quality attributes that cannot be easily gleaned from the code alone.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Far too often, software architecture documentation only covers the code view. This is not enough. Stakeholders are not limited to developers, but also include end users, testers, the operational staff, compliance auditors, etc. When writing software architecture documentation, I first identify all stakeholders and their concerns. To ensure that I provide a 360-degree view of the architecture, I develop the architecture documentation based on the viewpoints and perspectives described by Nick Rozanski and Eoin Woods in their book &lt;a href="http://www.viewpoints-and-perspectives.info/"&gt;"Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives"&lt;/a&gt; (Addison Wesley, April 2005) &lt;br /&gt;&lt;br /&gt;The following are the Architecture Viewpoints:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Functional&lt;br /&gt;&lt;li&gt;Information&lt;br /&gt;&lt;li&gt;Concurrency&lt;br /&gt;&lt;li&gt;Development&lt;br /&gt;&lt;li&gt;Deployment&lt;br /&gt;&lt;li&gt;Operational&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;And here are the Architecture Perspectives:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Security&lt;br /&gt;&lt;li&gt;Performance and Scalability&lt;br /&gt;&lt;li&gt;Availability and Resilience&lt;br /&gt;&lt;li&gt;Evolution&lt;br /&gt;&lt;li&gt;Accessibility&lt;br /&gt;&lt;li&gt;Development Resource&lt;br /&gt;&lt;li&gt;Internationalization&lt;br /&gt;&lt;li&gt;Location&lt;br /&gt;&lt;li&gt;Regulation&lt;br /&gt;&lt;li&gt;Usability&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;These viewpoints and perspectives can be described using different notations such as UML (using stereotypes and profiles like &lt;a href="http://rd.softeam.com/demos/soaml"&gt;SoaML&lt;/a&gt; for service oriented architecture), Business Process Modeling Notation (BPMN), and Domain Specific Languages (DSLs).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2649397373011891182?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2649397373011891182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2649397373011891182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2649397373011891182'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/10/software-architecture-documentation-in.html' title='Software Architecture Documentation in Agile Projects'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2873927647836503293</id><published>2010-09-22T22:11:00.023-04:00</published><updated>2010-11-07T11:53:14.651-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><title type='text'>The Future of Healthcare Data Exchange Standards</title><content type='html'>Meaningful Use Final Rule has finally been released and I think now is a good time to start thinking about where we want to be five years from now in terms of healthcare data exchange standards. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Listening to the Concerns of Implementers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I think it is very important that we listen to the concerns of the implementers of the current set of standards. They are the users of those standards and good software engineers like to get feedback from their end users to fix bugs and improve their software. The following post details some of the concerns out there regarding the current HL7 v3 XML schema development methodology and I believe they should not be ignored: &lt;a href="http://hl7-watch.blogspot.com/2008/11/why-make-it-simple-if-it-can-be.html"&gt;Why Make It Simple If It Can Be Complicated?&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Using an Industry Standard XML Schema: A Developer's Perspective&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XML documents are not just viewed by human eyeballs through the use of an XSLT stylesheet. The XML schema has become an important part of the service contract in Service Oriented Architecture (SOA). SOA has emerged during the last few years as a set of design principles for integrating applications within and across organizational boundaries. &lt;br /&gt;&lt;br /&gt;In the healthcare sector for example, the Nationwide Health Information Network (NHIN) and many Health Information Exchanges (HIEs) are being built on a decentralized service-oriented architecture using web services standards such as SOAP, WSDL, WS-Addressing, MTOM, and WS-Policy. The Web Services Interoperability (WS-I) Profiles WS-I Basic and WS-I Security provide additional guidelines that should be followed to ensure  cross-platform interoperability for example between .NET and Java EE platforms. Some of the constraints defined by the WS-I Basic Profile are related to the design of XML schemas used in web services. &lt;br /&gt;&lt;br /&gt;An increasingly popular alternative to the WS-* stack is to use RESTful web services. The REST architectural style does not mandate the use of web services contract such as XML schema, WSDL, and WS-Policy. However, the web application description language (WADL) has been proposed to play the role of service contract for RESTful web services. This post will not engage in the SOAP vs. REST debate except to mention that both are used in implementation projects today.&lt;br /&gt;&lt;br /&gt;On top of these platform-agnostic web services standards, each platform defines a set of specifications and tooling for building web services applications. In the Java world, these specifications include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The Java API for XML Web Services (JAX-WS) &lt;br /&gt;&lt;li&gt;The Java Architecture for XML Binding (JAXB) &lt;br /&gt;&lt;li&gt;The Java API for RESTful Web Services (JAX-RS)&lt;br /&gt;&lt;li&gt;The Streaming API for XML (StAX).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;JAX-WS and JAXB allow developers to generate a significant amount of Java code from the WSDL and XML schema with tools like WSDL2Java. The quality of a standard XML schema largely depends on how well it supports the web services development process and that's why I believe that creating a reference implementation should be a necessary step before the release of new standards. An industry standard XML schema that is hard to use will directly translate into high implementation cost resulting from development project delays for example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Embracing Design Patterns&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Beyond our personal preferences (such as the NIEM vs. HL7 debate), there are well established engineering practices and methodologies that we can agree on. In terms of software development, design patterns have emerged as a well known approach to building effective software solutions. For example, the following two books have had a strong influence in the fields of object-oriented design and enterprise application integration respectively (and they sit proudly on my bookshelf):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides&lt;br /&gt;&lt;li&gt;Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions by Gregor Hohpe and Bobby Woolf.  &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;An interesting design pattern from the "Enterprise Integration Patterns" book that is relevant to the current discussion on industry standard XML schemas is the "Canonical Data Model" design pattern. Enterprise data architects tasked with creating such canonical data models often reuse components from industry standard XML schemas. That approach makes sense but cannot succeed if the industry standard XML schema is not designed to support reusability, extensibility, and a clearly specified versioning strategy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Modeling Data In Transit vs. Data at Rest&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Modeling data at rest (e.g. data stored in relational databases) is a well established discipline. For example, data modeling patterns for relational data have been captured by Len Silverston and Paul Agnew in their book entitled "The Data Model Resource Book, Vol. 3: Universal Patterns for Data Modeling".&lt;br /&gt;&lt;br /&gt;There is a need to apply the same engineering rigor to modeling data in transit (e.g. data in web services messages). The XML Schema specification became a W3C Recommendation more than 9 years ago and I think there is now enough implementation experience to start building consensus around a set of XML Schema Design Patterns. The latter should address the following issues:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Usability: the factors that affect the ability of an average developer to quickly learn and use an XML schema in a software development project&lt;br /&gt;&lt;li&gt;Component Reusability&lt;br /&gt;&lt;li&gt;Web services cross-platform interoperability constraints. Some of those constraints are defined by the WS-I Basic Profile &lt;br /&gt;&lt;li&gt;Issues surrounding the use of XML databinding tools such as JAXB. This is particularly important since developers use those tools for code generation in creating web services applications. It is well known that existing databinding tools do not provide adequate support for all XML Schema language features&lt;br /&gt;&lt;li&gt;Ability to manipulate instances with XML APIs such as StAX&lt;br /&gt;&lt;li&gt;Schema extensibility, versioning, and maintainability.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;These design patterns should be packaged into a Naming and Design Rules (NDR) document to ensure a consistent and proven approach to developing future XML vocabularies for the healthcare domain.&lt;br /&gt;&lt;br /&gt;The XML Schema 1.1 specification is currently a W3C Candidate Recommendation. It defines new features such as conditional type assignments and assertions which allow schema developers to consolidate structural and business rules constraints into a single schema. This could help alleviate some of the pain associated with the multiple layers of Schematron constraints currently specified by HITSP C32, IHE PCC, and the HL7 CCD (sometimes referred to as the "HITSP Onion"). &lt;a href="http://www.saxonica.com/documentation/schema-processing/schema11.xml"&gt;Saxon&lt;/a&gt; supports some of these new features.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Developing Standards the Way We Develop Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The final point I'd like to make is that we should start creating healthcare standards the same way we develop software. I am a proponent of agile development methodologies such as Extreme Programming and Scrum. These methodologies are based on practices such as user stories, iteration (sprint) planning, unit test first, refactoring, continuous integration, and acceptance testing. Agile programming helps create better software and I believe it can help create better healthcare standards as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2873927647836503293?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2873927647836503293' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2873927647836503293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2873927647836503293'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/09/future-of-healthcare-data-exchange.html' title='The Future of Healthcare Data Exchange Standards'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-1984089561798562056</id><published>2010-08-30T14:24:00.002-04:00</published><updated>2010-09-21T23:14:13.639-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hipaa'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='hitech act'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>Secure Cloud Computing for the Health Enterprise</title><content type='html'>Some thoughts on securing healthcare applications in the cloud.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_5090478"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/jamoussou/secure-cloud-computing-for-the-health-enterprise" title="Secure Cloud Computing for the Health Enterprise"&gt;Secure Cloud Computing for the Health Enterprise&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse5090478" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=healthcould-100830122703-phpapp01&amp;stripped_title=secure-cloud-computing-for-the-health-enterprise" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5090478" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=healthcould-100830122703-phpapp01&amp;stripped_title=secure-cloud-computing-for-the-health-enterprise" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jamoussou"&gt;Joel Amoussou&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-1984089561798562056?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=1984089561798562056' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1984089561798562056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1984089561798562056'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/08/secure-cloud-computing-for-health.html' title='Secure Cloud Computing for the Health Enterprise'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-195466520258789946</id><published>2010-08-18T22:35:00.012-04:00</published><updated>2010-08-19T08:47:03.157-04:00</updated><title type='text'>Health IT Standards in Canada</title><content type='html'>In Canada, health IT standards are established by Canada Health Infoway's Standard Collaborative. Canada Health Infoway is a not-for-profit organization funded by the federal government to develop pan-Canadian health IT standards and provide incentives for the adoption of health information technologies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;HIT Standards&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following are key standards approved by the Standard Collaborative:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Systematized Nomenclature of Medicine Clinical Terms (SNOMED CT) for problem lists, procedures, and other clinical observations. 35,000 SNOMED CT concepts have been translated to Canadian French&lt;br /&gt;&lt;br /&gt;&lt;li&gt;HL7 Version 3 (HL7 V3) for clinical, ﬁnancial, and administrative messaging and document exchange. Canada played a key role in the development of the HL7 v3 modeling methodology and tooling. The pan-Canadian HL7 v3 is used for the following core areas:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Laboratory&lt;br /&gt;&lt;li&gt;Immunization&lt;br /&gt;&lt;li&gt;Pharmacy (Drugs)&lt;br /&gt;&lt;li&gt;Client Registry (patient demographics)&lt;br /&gt;&lt;li&gt;Provider Registry&lt;br /&gt;&lt;li&gt;Shared Health Records&lt;br /&gt;&lt;li&gt;Electronic Claims&lt;br /&gt;&lt;li&gt;Public health surveillance&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;HL7 Clinical Document Architecture (CDA) standards enables pan-Canadian EHR interoperability&lt;br /&gt;&lt;br /&gt;&lt;li&gt;The pan-Canadian LOINC Observation Code Database (pCLOCD) for lab test results is used by the Lab Messaging and Nomenclature and Public Health Surveillance standards. PCLOCD adds and excludes certain records from the original LOINC standard to support Canadian requirements. Unified Code for Units of Measure (UCUM) is used for units of measures&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Diagnostic Imaging (DI) Standards are based on DICOM and IHE XDS-I&lt;br /&gt;&lt;br /&gt;&lt;li&gt;The Health Canada Drug Product Database (HCDPD) provides coding for medications.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Certification&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Infoway offers certification for the following classes of HIT software:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Client registry&lt;br /&gt;&lt;li&gt;Consumer health application&lt;br /&gt;&lt;li&gt;Consumer health platform&lt;br /&gt;&lt;li&gt;Diagnostic Imaging (DI)&lt;br /&gt;&lt;li&gt;Drug Information System (DIS)&lt;br /&gt;&lt;li&gt;Immunization registry&lt;br /&gt;&lt;li&gt;Provider registry&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The assessment criteria cover functionality, privacy, security, interoperability and management and are based on the following standards:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Functionality – Canada Health Infoway Electronic Health Record Privacy and Security Requirements.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Privacy – Canada Health Infoway Electronic Health Record Infostructure (EHRi) Privacy &amp; Security Conceptual Architecture; Government of Canada’s Personal Information Protection and Electronic Documents Act (PIPEDA); The Canadian Standards Association’s Model Code for the Protection of Personal Information – CAN-CSA-Q830-03.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Security – Canada Health Infoway Electronic Health Record Infostructure (EHRi) Privacy &amp; Security Conceptual Architecture; The International Organization for Standardization’s Code of Practice for Information Security Management – ISO/IEC 17799:2005; The National Institute of Standards and Technology’s Recommended Security Controls for Federal Information Systems – NIST SP800-53;The USA Health Insurance Portability and Accountability Act (HIPAA) Security Rule.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Interoperability – Canada Health Infoway pan-Canadian Standards and Conformance Profile Definitions for diagnostic imaging, laboratory, drug, shared health record, and demographic information.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Management – The IT Governance Institute Control Objectives for Information and Related Technology (COBIT); The Office of Government Commerce’s Information Technology Infrastructure Library (ITIL).&lt;br /&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following diagram from Infoway's web site depicts the high level architectural vision from an end user perspective (click to enlarge).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vFn-XW2q8mg/TG0l5X39_qI/AAAAAAAAAIw/FdobYjjNbfo/s1600/in2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 197px;" src="http://2.bp.blogspot.com/_vFn-XW2q8mg/TG0l5X39_qI/AAAAAAAAAIw/FdobYjjNbfo/s320/in2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5507099586935520930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;My Assessment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Overall, I am pleased with the choices that have been made by Infoway's Standard Collaborative. I believe that HL7 V3 is a step forward compared to HL7 v2.x because it is based on XML, it is more amenable to a Service-Oriented Architecture (SOA), and it defines a healthcare Reference Information Model (RIM) with associated modeling methodology and tooling. Beyond ICD-9 and CPT, SNOMED CT is definitively the medical terminology language of the future. Consistency is needed for units of measure for lab test results and UCUM is a good choice.&lt;br /&gt;&lt;br /&gt;Some flexibility will be needed in standardizing transport protocols to allow lightweight solutions such as SMTP for point-to-point connections (what our friends in the US call NHIN Direct). The e-Health certification process should include some HIT usability testing (see my previous &lt;a href="http://efasoft.blogspot.com/2010/05/health-it-usability-what-can-be-learned.html"&gt;post&lt;/a&gt; on the experience of the British NHS in this area).&lt;br /&gt;&lt;br /&gt;I am not aware of any pan-Canadian standard in the area of quality reporting. I would like to see Canada Health Infoway put more efforts into creating specifications (messaging, security, privacy) and open source tools for Health Information Exchanges (HIEs) at the provincial and federal levels. More work needs to be done in promoting the use of  Computerized Physician Order Entry (CPOE) systems and Clinical Decision Support Systems (CDSS) for the automated execution of clinical guidelines. Finally, more guidance is needed in the area of patient consent in the context of electronic health information exchanges.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-195466520258789946?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=195466520258789946' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/195466520258789946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/195466520258789946'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/08/health-it-standards-in-canada.html' title='Health IT Standards in Canada'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vFn-XW2q8mg/TG0l5X39_qI/AAAAAAAAAIw/FdobYjjNbfo/s72-c/in2.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4106520015144399676</id><published>2010-08-01T22:41:00.004-04:00</published><updated>2010-09-21T23:14:43.522-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMIS'/><category scheme='http://www.blogger.com/atom/ns#' term='S1000D'/><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>Content Integration in the Aviation Industry Using CMIS</title><content type='html'>The recently approved Content Management Interoperability Services (CMIS) specification could play a very important role in ensuring that aircraft operators receive up-to-date maintenance and operation documentation from aviation manufacturers.&lt;br /&gt;&lt;br /&gt;The safe and efficient maintenance and operation of air vehicles require clear, technically accurate, and up-to-date technical documentation.  The technical documentation is supplied by original equipment manufacturers (OEMs),  regulatory agencies, and the aircraft operator's own engineering staff. OEMs (e.g. airframe, engine, and component manufacturers) provide regular publications such as Aircraft Maintenance Manuals (AMM) and Flight Crew Operating Manuals (FCOM) as well as time-sensitive supplements such as Service Bulletins (SBs) and Temporary Revisions (TRs). Regulatory agencies like Transport Canada and the US Federal Aviation Administration (FAA) also publish technical information that affects the maintenance and operation of air vehicles and equipments. Examples are Advisory Circulars (ACs), Airworthiness Directives (ADs), and various forms and regulations.&lt;br /&gt;&lt;br /&gt;A typical airline faces the following challenges:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The elimination of the high costs associated with the shipping, storage, and distribution of physical products (paper, CDs, and DVDs) containing the technical documentation.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;The safety and regulatory compliance concerns related to the use of out-of-date technical information (currently, some airlines receive revisions to technical manuals only four times a year).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The aerospace industry is in the process of adopting the new S1000D technical publications standard. S1000D is based on the concepts of modularity, reuse, and metadata (see my post on &lt;a href="http://efasoft.blogspot.com/2008/05/s1000d-content-reuse.html"&gt;S1000D Content Reuse&lt;/a&gt;). The Flight Operation Interests Group (FOIG) of the Air Transport Association (ATA) is developing a data model and XML Schema for flight deck procedures and checklists also based on the S1000D data model. While S1000D is the right payload format, the exchange between content management and publishing systems within the industry must be orchestrated in an efficient manner.&lt;br /&gt;&lt;br /&gt;Airlines, repair stations, regulatory agencies, and original equipment manufacturers (OEMs) manage and publish technical content using proprietary content management systems (CMS) each with its own proprietary API. Some companies now provide online portals where customers can login to get the latest documentation. However, pilots and technicians don't really want to login into the support sites of all those content providers to find out what is new and updated. To minimize aircraft downtime, aircraft mechanics want to connect to the aircraft's health and usage monitoring system (HUMS), determine what problem needs to be fixed, and have the appropriate content aggregated (work package) and presented to them. &lt;br /&gt;&lt;br /&gt;With CMIS, an airline or aircraft operator can create a portal to aggregate content from the repositories of its OEM suppliers using a single standardized web services interface based on either SOAP or AtomPub (the RESTful alternative). This allows the aircraft operator to keep their maintenance and operation documentation updated at all time without having to wait for a CD or paper manual to be shipped by the OEM.&lt;br /&gt;&lt;br /&gt;The second scenario is distributed authoring driven by the shift to distributed aircraft manufacturing. For example, the content of the Aircraft Maintenance Manual (AMM) can be provided by different aviation manufacturers participating in a consortium to design, manufacture, and support a new aircraft. In such as a scenario, a centralized CMIS-compliant content repository (hosted by the airframe manufacturer acting as the content integrator) can provide the following CMIS services to other members of the consortium:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Policy and ACL Services to obtain the policies (such as retention) and Access Control List (ACL) currently applied to a document&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Navigation Services to programmatically navigate the content repository&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Discovery services to query content. CMIS supports SQL-92 with some extensions and full-text search and can handle federated search across multiple repositories&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Relationship Services to obtain the relationships (such as links) associated with a document&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Versioning Services to check-out and check-in a document&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Object Services to obtain the properties of a document and create folders and documents&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Filing Services to add a document to a folder.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The third example use case is the ability for a SCORM-compliant Learning Management System to integrate with CMIS-compliant S1000D Common Source DataBases (CSDB) in order to &lt;a href="http://efasoft.blogspot.com/2009/06/s1000d-and-scorm-integration.html"&gt;repurpose&lt;/a&gt; technical publications content for training purposes. The International &lt;a href="http://www.adlnet.gov/About/JPTC/Shared%20Documents/s1-scorm-bridge-final-feb%2026.pdf"&gt;S1000D-SCORM Bridge Project&lt;/a&gt; is an interesting initiative to create such an integration.&lt;br /&gt;&lt;br /&gt;In general, CMIS will enable new capabilities such as the remote access to library services, cross-repository exchange, cross-repository aggregation, and cross-repository observation (or notification). &lt;br /&gt;&lt;br /&gt;CMIS is now supported by major CMS vendors including EMC, IBM, Alfresco, and Microsoft. A list of open source and commercial implementations of CMIS is available at this &lt;a href="http://www-10.lotus.com/ldd/lqwiki.nsf/dx/11122008094143AMWEBK95.htm"&gt;page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4106520015144399676?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4106520015144399676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4106520015144399676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4106520015144399676'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/08/content-integration-in-aviation.html' title='Content Integration in the Aviation Industry Using CMIS'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3454823780357165427</id><published>2010-07-24T11:22:00.008-04:00</published><updated>2010-07-26T11:20:34.285-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Meaningful Use'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='EHR'/><title type='text'>Toward An Enterprise Reference Architecture for the Meaningful Use Era</title><content type='html'>Meaningful Use is not just about financial incentives. In fact, the financial incentives provided under the HITECH Act will only cover a portion of the total costs associated with migrating the healthcare industry to health information technologies. Consider the following Meaningful Use criteria:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Submit electronic data to immunization registries&lt;br /&gt;&lt;li&gt;Incorporate clinical lab-test results into certified EHR technology as structured data&lt;br /&gt;&lt;li&gt;Submit electronic syndromic surveillance data to public health agencies&lt;br /&gt;&lt;li&gt;Generate and transmit permissible prescriptions electronically (eRx)&lt;br /&gt;&lt;li&gt;Provide patients with an electronic copy of their health information&lt;br /&gt;&lt;li&gt;Exchange key clinical information among providers of care and patient authorized entities electronically. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;These criteria are clearly designed to bridge information silos within and across organizational boundaries in the healthcare industry. This integration is necessary to improve the coordination and quality of care, eliminate the costs associated with redundancies and other inefficiencies within the healthcare system, empower patients with their electronic health records, and enable effective public health surveillance. This integration requires a new health information network such as those provided by state and regional Health Information Exchanges (HIEs) and the Nationwide Health Information Network (NHIN) initiative. HIEs and NHIN Exchange are based on a decentralized, service-oriented architecture (SOA) whereby authorized health enterprises securely exchange health information. &lt;br /&gt;&lt;br /&gt;Health CIOs who see Meaningful Use as part of a larger transformational effort will drive their organizations toward success. Creating a coherent and consistent Enterprise Architecture for tackling these new challenges should be a top priority. Not having a coherent Enterprise Architecture will lead to a chaotic environment with increased costs and complexity. The following are some steps that can be taken to create an Enterprise Reference Architecture that is aligned with with the organization's business context, goals, and drivers such as Meaningful Use:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Adopt a proven architecture development methodology such as TOGAF. &lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create an inventory of existing systems such as pharmacy, laboratory, radiology, patient administration, electronic medical records (EMRs), order entry, clinical decision support, etc. This exercise is necessary to gain an understanding of current functions, redundancies, and gaps.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create a target enterprise service inventory to eliminate functional redundancies and maximize service reuse and composability. These services can be layered into utility, entity, and task service layers. For example, Meaningful Use criteria such as "Reconcile Medication Lists", "Exchange Patient Summary Record", or "Submit Electronic Data to Immunization Registries" can be decomposed into two or more fine-grained services.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Task services based on the composition of other reusable services can support the orchestration of clinical workflows. The latter previously required clinicians to log into multiple systems and re-enter data, or relied on point-to-point integration via the use of interface engines. These task services can also invoke services across organizational boundaries from other providers participating in a HIE in order to compose a longitudinal electronic health record (EHR) of the patient. Other services such as clinical decision support services or terminology services can be shared by multiple healthcare organizations to reduce costs.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Consider wrapper services to encapsulate existing legacy applications.&lt;br /&gt; &lt;br /&gt;&lt;li&gt;The Enterprise Reference Architecture should support standards that have been mandated in the Meaningful Use Final Rule, but also those required by NHIN Exchange, NHIN Direct, and the HIE in which the organization participates. These standards are related to data exchange (HITSP C32, CCR, HL7 2.x), messaging (SOAP, WSDL, REST, SMTP, WS-I Basic), security and privacy (WS-I Security, SAML, XACML), IHE Profiles (XDS, PIX, and PDQ), and various NHIN Exchange and NHIN Direct Specifications. While standards are not always perfect, healthcare interoperability is simply not possible without them.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Select a SOA infrastructure (such as an Enterprise Service Bus or ESB) that supports the standards listed above. Consider both open source and commercial offerings.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Consider non-functional requirements such as performance, scalability, and availability.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;The Enterprise Reference Architecture should also incorporate industry best practices in the areas of SOA, Security, Privacy, Data Modeling, and Usability. These best practices are captured in various specifications such as the HL7 EHR System Functional Model, the HL7 Service Aware Interoperability Framework (SAIF), and the HL7 Decision Support Service (DSS) specification.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Finally, create a Governance Framework to establish and enforce enterprise-wide technology standards, design patterns, Naming and Design Rules (NDRs), policies, service metadata and their versioning, quality assurance, and Service Level Agreements (SLAs) such as the NHIN Data Use and Reciprocal Support Agreement (DURSA).&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3454823780357165427?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3454823780357165427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3454823780357165427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3454823780357165427'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/07/toward-enterprise-reference.html' title='Toward An Enterprise Reference Architecture for the Meaningful Use Era'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-8000171270059089517</id><published>2010-07-12T09:40:00.013-04:00</published><updated>2010-07-29T18:28:21.294-04:00</updated><title type='text'>Adopting the NIEM for Health Information Exchange</title><content type='html'>A National Information Exchange Model (NIEM) Information Exchange Package Documentation (IEPD) for health information exchange is being considered by the U.S. Department of Health and Human Services Office of the National Coordinator (ONC). After years of work developing the HL7 CCD and HITSP C32, will a NIEM IEPD represent a step forward in health data exchange standards? Will the NIEM IEPD process work in the healthcare domain? In adopting the NIEM process, can we leverage the work that has been done so far by organizations such as HITSP, HL7, and the ASTM?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;NIEM vs. RIM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Having previously used the NIEM standard in a project, my first reaction when I started to work with the HL7 CDA and the related Reference Information Model (RIM) refinement process was, "why not use the NIEM?". The NIEM approach is proven and has been successfully used in complex data exchange scenarios in criminal justice and other sensitive domains. &lt;br /&gt;&lt;br /&gt;The HL7 RIM expressed as a set of UML class diagrams defines a foundation model for health care and clinical data. The HL7 Clinical Document Architecture (CDA) is derived from the HL7 RIM through a refinement process that generates a Refined Message Information Model (R-MIM) for the CDA. The HL7 Continuity of Care Document (CCD) and HITSP C32 specifications define additional constraints on the HL7 CDA. Although the HL7 CCD was in fact an original attempt to harmonize the HL7 CDA and the ASTM CCR, there is still a need to define a unified data model for health information exchange. The Meaningful Use Interim Final Rule (IFR) allows both the CCD and the CCR for data exchange.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ease of Use&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From a software development point of view, the HL7 CCD and HITSP C32 standards are complex to learn and use. Data exchange standards don't provide any value by themselves. They provide value when they are used to create software solutions that improve the quality and safety of care and reduce costs. Therefore, ease of use represents an important requirement for a health data exchange standard. How do you create an XML data exchange standard that developers can learn quickly and that is easy to use? &lt;br /&gt;&lt;br /&gt;Something as simple as adopting a component naming convention that conveys the semantics of those components is a good start. For example, ISO 11179, Part 5 entitled "Naming and Identification Principles" defines the following convention for naming data components:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Object-class qualifier terms (0 or more). &lt;br /&gt;&lt;li&gt;An object class term (1). &lt;br /&gt;&lt;li&gt;Property qualifier terms (0 or more). &lt;br /&gt;&lt;li&gt;A property term (1). &lt;br /&gt;&lt;li&gt;Representation qualifier terms (0 or more). &lt;br /&gt;&lt;li&gt;A representation term (1). &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;An example of an element name that follows that recommendation is &amp;lt;PersonBirthLocation&gt;. Not having a component naming convention or using cryptic names make it hard for developers to understand a new XML vocabulary. Disk space is cheap these days, so there is no reason to keep using those cryptic names.&lt;br /&gt;&lt;br /&gt;Defining components is also important. ISO 11179, Part 4 entitled "Formulation of Data Definitions" provides the following recommendations for defining data components:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;state the essential meaning of the concept&lt;br /&gt;&lt;li&gt;be precise and unambiguous&lt;br /&gt;&lt;li&gt;be concise&lt;br /&gt;&lt;li&gt;be able to stand alone&lt;br /&gt;&lt;li&gt;be expressed without embedding rationale, functional usage, or procedural information&lt;br /&gt;&lt;li&gt;avoid circular reasoning&lt;br /&gt;&lt;li&gt;use the same terminology and consistent logical structure for related definitions&lt;br /&gt;&lt;li&gt;be appropriate for the type of metadata item being defined&lt;br /&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;In general, consistency based on a predefined XML Schema Naming and Design Rules (NDRs) document which is itself based on recognized XML Schema design patterns can contribute to ease of use.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Developing Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Key to adoption is the ability for an average software developer to use familiar tools including existing open source software to generate and process instances of the exchange XML schema. Examples of these tools include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;XML databinding tools such as JAXB&lt;br /&gt;&lt;li&gt;XML APIs such as JDOM or DOM4J&lt;br /&gt;&lt;li&gt;Mapping and storing the data in existing relational databases (this is what the majority of developers know)&lt;br /&gt;&lt;li&gt;Web Services Framework such as Apache CXF.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Reference Implementation and Testing Ease of Use&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creating a reference implementation with existing open source tools and testing ease of use should be part of releasing new health data exchange standards.&lt;br /&gt;&lt;br /&gt;The reference implementation should support a complete SOA-based exchange scenario and provide artifacts that are typically generated in a real web services project. This includes designing a data model for storage, WSDLs, precompiling the XML schema with a databinding tool such as JAXB, and using an open source web services tool such as Apache CXF.&lt;br /&gt;&lt;br /&gt;One way to determine ease of use is to ask average developers to process instances of the XML schema using familiar XML APIs and then measure how long it took them to write the code as well as the Cyclomatic Complexity (and other code quality metrics) of the written code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Benefits of Adopting NIEM in the Healthcare Domain&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I believe that NIEM is a good choice for moving healthcare interoperability forward for the following reasons:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The NIEM is a proven data exchange standard that has been used in mission critical environments such as the justice and intelligence domains.&lt;br /&gt;&lt;li&gt;The NIEM embodies recognized XML Schema design patterns in its Naming and Design Rules (NDR). For example, the NIEM component naming convention is based on ISO 11179 Parts 4 and 5. Per the NIEM NDR, all schema type definitions must be global to enable reuse. The NIEM provides a schematron-based tool to automatically validate XML schemas against the rules defined in the NDR.&lt;br /&gt;&lt;li&gt;The NIEM provides core components that can be used or extended for the healthcare domain. Core NIEM data components such as &amp;lt;Person&gt;, &amp;lt;Organization&gt;, and &amp;lt;Address&gt; are universal components that are needed in healthcare as well. NIEM also specifies an elegant solution for modeling roles, associations between entities, and code lists.&lt;br /&gt;&lt;li&gt;The NIEM provides various tools to facilitate the IEPD process. These tools include the Schema Subset Generation Tool (SSGT), the NIEM Wayfarer, and conformance validation tools. The SSGT presents a shopping cart metaphor for assembling existing components into new exchange packages. The ONC anticipates the need for additional tools for the healthcare domain.&lt;br /&gt;&lt;li&gt;A companion specification called the Logical Entity Exchange Specification (LEXS) can be used to define a messaging model for web services. LEXS has its own set of tools.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;A NIEM Concept of Operations for the Healthcare Domain&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The diagram below is extracted from a presentation made at the HIT Standards Committee meeting on June 30, 2010 and entitled: Standards &amp; Interoperability Framework Concept of Operations (ConOps) Overview (click to enlarge).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vFn-XW2q8mg/TDsmc7ag5hI/AAAAAAAAAHo/gqw8lQVlJow/s1600/niem.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 211px;" src="http://1.bp.blogspot.com/_vFn-XW2q8mg/TDsmc7ag5hI/AAAAAAAAAHo/gqw8lQVlJow/s320/niem.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5493026448935544338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;NIEM Healthcare IEPD vs. NIEM Healthcare Domain&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My personal recommendation is that the new harmonization structure (the successor to HITSP) should  create a NIEM Healthcare domain as opposed to a NIEM IEPD for the healthcare domain. The healthcare domain is complex enough to warrant its own domain within the NIEM. A NIEM Healthcare domain should provide a data exchange standard for Electronic Health Records (EHRs) and leverage the work done by HITSP C32, C80, and C83 in defining required data elements and code lists (terminology) for various EHR content modules. Instead of mapping those data elements to the HL7 CCD XML schema as was done by HITSP, those elements will be mapped to existing, extended, or new NIEM components. Specific health data exchanges can then create IEPDs to satisfy their unique requirements by reusing data components from the NIEM.&lt;br /&gt;&lt;br /&gt;It should be possible to map the CDA RMIM into the NIEM model using the NIEM Component Mapping Tool or CMT. It should also be possible to leverage at least some components from the HL7 CCD XML schema in building a NIEM Healthcare domain or IEPD. However, these components will have to be renamed and restructured to comply with the NIEM naming and design rules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-8000171270059089517?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=8000171270059089517' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8000171270059089517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8000171270059089517'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/07/adopting-niem-for-health-information.html' title='Adopting the NIEM for Health Information Exchange'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vFn-XW2q8mg/TDsmc7ag5hI/AAAAAAAAAHo/gqw8lQVlJow/s72-c/niem.png' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2161418637624948210</id><published>2010-07-01T11:44:00.007-04:00</published><updated>2010-07-11T12:36:17.284-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Consent'/><category scheme='http://www.blogger.com/atom/ns#' term='Privacy'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7 Healthcare'/><title type='text'>Patient Consent: State of the Union</title><content type='html'>The viability and sustainability of an electronic health information exchange (HIE) largely depends on the trust and desire of patients to participate in the exchange. What are the laws, regulations, standards, practices, and current directions in the field of patients' privacy consents?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;State and Federal Laws&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Health Insurance Portability and Accountability Act of 1996 (HIPAA) does not require patient consent and authorization for the exchange of health information among healthcare providers for the purpose of medical care. The patient consent is implied by her general consent to be treated.&lt;br /&gt;&lt;br /&gt;Some states have adopted heightened laws (higher than those imposed by HIPAA) that require explicit patient consent and authorization for specially-protected health information such as sexually transmitted diseases, human immunodeficiency virus tests, viral hepatitis, genetic information, substance abuse, mental health, and developmental disabilities.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Building Trust&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The lack of patient trust can be a significant barrier to the implementation of a HIE. Therefore, a common practice in HIEs is to offer individual patients the opportunity to opt-out of exchanging their health information even if patient consent is not required by existing laws and regulations. Patients are notified and informed of their consent options through an outreach program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Consent Requirements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The HHS Office of the National Coordinator (ONC) releases a &lt;a href="http://healthit.hhs.gov/portal/server.pt?open=512&amp;objID=1202&amp;PageID=16769&amp;mode=2"&gt;Consumer Preferences Requirements Document&lt;/a&gt; in October 2009. The document describes consent stakeholders, functional needs, policy implications, scenarios, and processes including HIEs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Consent Options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The ONC released a whitepaper in March 2010 entitled "Consumer Consent Options for Electronic Health Information Exchange: Policy Considerations and Analysis". The whitepaper identified the following consent options:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;No consent. Health information of patients is automatically included—patients cannot opt out;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Opt-out. Default is for health information of patients to be included automatically, but the patient can opt out completely;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Opt-out with exceptions. Default is for health information of patients to be included, but the patient can opt out completely or allow only select data to be included;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Opt-in. Default is that no patient health information is included; patients must actively express consent to be included, but if they do so then their information must be all in or all out; and&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Opt-in with restrictions. Default is that no patient health information is made available, but the patient may allow a subset of select data to be included.&lt;br /&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;The granularity of patient consent preference can be based on the type of data, healthcare provider, time range, and intended use.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Standardization&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://wiki.ihe.net/index.php?title=Basic_Patient_Privacy_Consents"&gt;IHE Basic Patient Privacy Consents (BPPC)&lt;/a&gt; provides a mechanism to record and enforce patient consents. It complements the IHE Cross-Enterprise Document Sharing (XDS) standard by specifying how an XDS affinity domain can create privacy policies and enforce those policies through the access control mechanisms of an XDS Actor such as an EHR system. Patient consent is captured in an HL7 Clinical Document Architecture (CDA) document using a scanned document (wet signature on paper) or a digital signature.&lt;br /&gt;&lt;br /&gt;HL7 is working on a set of specifications for the creation and use of &lt;a href="http://wiki.hl7.org/index.php?title=Consent_Directive_Use_Cases"&gt;privacy consent directives&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Nationwide Health Information Network (NHIN) &lt;a href="http://healthit.hhs.gov/portal/server.pt/gateway/PTARGS_0_11673_910544_0_0_18/NHIN_AccessConsentPoliciesProductionSpecification_v1.0.pdf"&gt;Access Consent Policies&lt;/a&gt; Specification is based on the eXtended Access Control Markup Language (XACML), an OASIS standard.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Health Record Banks (HRBs)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An emerging pattern is to include a Health Record Bank (HRB) containing Personal Health Records (PHRs) as a participating node in the HIE. The HRB is accessible to patients via a web portal and allows patients to exercise fine-grained control over the exchange of their health records within the HIE through a consent configuration interface.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UPDATE&lt;/span&gt;: On Thursday, July 8, 2010, the Department of Health and Human Services (HHS) announced proposed &lt;a href="http://www.hhs.gov/news/press/2010pres/07/20100708c.html"&gt;modifications&lt;/a&gt; to the HIPAA Privacy &amp; Security Rules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2161418637624948210?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2161418637624948210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2161418637624948210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2161418637624948210'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/07/patient-consent-state-of-union.html' title='Patient Consent: State of the Union'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4390654195724060025</id><published>2010-06-22T17:23:00.012-04:00</published><updated>2010-06-30T07:25:56.926-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='HIE'/><title type='text'>Health Information Exchanges (HIEs): Emerging Architectural Patterns</title><content type='html'>The following are some emerging architectural patterns in the nascent field of HIEs:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span&gt;Decentralized and Hybrid Models&lt;/span&gt; utilizing a service-oriented architecture (SOA). A centralized registry stores metadata about the type and location of clinical data available in edge systems connected to the HIE. For privacy and security reasons, the clinical data itself is kept at its source as opposed to a centralized repository. Upon request, a &lt;span&gt;Record Locator Service (RLS)&lt;/span&gt; finds the data in edge systems and securely routes the data to authorized requestors.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A &lt;span&gt;Data Use and Reciprocal Support Agreement (DURSA)&lt;/span&gt; provides the legal framework for participation in the HIE.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use of a &lt;span&gt;master patient index (MPI)&lt;/span&gt; as a core infrastructure for patient matching. The MPI stores identifying information on all patients with records in participating systems.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use of Integrating the Health Enterprise (IHE) profiles such as &lt;span&gt;Patient Identity Cross-Reference (PIX)&lt;/span&gt; and Cross &lt;span&gt;Enterprise Document Exchange (XSD.b)&lt;/span&gt; to facilitate patient discovery and the query and retrieval of clinical documents.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Health Information Event Messaging&lt;/span&gt; to provide the ability to subscribe to health information.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Interoperability with NHIN Exchange&lt;/span&gt; to enable exchange of data with other state and federal agencies such as the Department of Veterans Affairs (VA) and the Department of Defense (DoD).  This requires support for NHIN messaging standards such as the Web Services Interoperability (WS-I) Profiles WS-I Basic v 2.0 and WS-I Security v 1.1. WS-I Basic specifies the use of SOAP 1.2, WSDL 1.1, WS-Addressing 1.0, WS-Policy 1.5 , MTOM 1.0 , and UDDI v3.0.2 for the NHIN Web Services Registry. WS-I Security defines the security standards for NHIN Exchange including TLS, AES 128, X.509, XML D-Sig, and Attachment Security. NHIN has adopted an authentication and authorization framework based on SAML 2.0.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use of the &lt;span&gt;HL7 Continuity of Care Documents (CCD)&lt;/span&gt; as the data exchange standards for clinical documents. Meaningful Use criteria allow the ASTM CCR specification as well.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Health Record Banks (HRBs&lt;/span&gt;) containing Personal Health Records (PHRs) as participating nodes in the HIE. The HRBs  allow patients to exercise control over their health records by granting permissions to specific providers to view those health records.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ability to connect to the HIE through a local EMR or a &lt;span&gt;web-based portal&lt;/span&gt; (for example to allow access for physicians without an EMR).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For simple and secure interoperability, the &lt;span&gt;NHIN Direct&lt;/span&gt; draft proposal at the time of this writing is to use:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;SMTP as a backbone protocol&lt;br /&gt;&lt;/li&gt;&lt;li&gt;S/MIME-signed and encrypted messages for security&lt;br /&gt;&lt;/li&gt;&lt;li&gt;IHE XDM for content and metadata packaging&lt;br /&gt;&lt;/li&gt;&lt;li&gt;IHE XDR, REST, and Email (POP/IMAP) as edge protocols&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TLS (with a server certificate only) for on-the-wire security&lt;br /&gt;&lt;/li&gt;&lt;li&gt;XDR as the backbone for NHIN Exchange.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4390654195724060025?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4390654195724060025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4390654195724060025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4390654195724060025'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/06/health-information-exchanges-ihes.html' title='Health Information Exchanges (HIEs): Emerging Architectural Patterns'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7782825521311313500</id><published>2010-06-12T23:02:00.005-04:00</published><updated>2010-06-18T19:27:16.850-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='Clinical Decision Support'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='XQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='EHR'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>Putting XQuery to Work in Healthcare</title><content type='html'>The following are some of the challenges that healthcare organizations will be facing during the next few years:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Conversion from HIPAA 4010 to 5010 &lt;br /&gt;&lt;li&gt;Conversion from ICD-9 to ICD-10&lt;br /&gt;&lt;li&gt;Efficiently storing, querying, processing, and exchanging Electronic Health Records (EHRs)&lt;br /&gt;&lt;li&gt;Mapping from HL7 2.x to HL7 v3 messages&lt;br /&gt;&lt;li&gt;Assembling EHRs by aggregating data from multiple organizations participating in Health Information Exchanges (HIEs).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;XQuery is not just a query language for XML data sources. It is also a very powerful declarative, strongly typed, and side-effect free programming language for processing and manipulating XML documents. XQuery is a natural solution for querying and aggregating data coming from heterogeneous sources such as relational databases, native XML databases, file systems, and legacy data formats such as EDI. Some developers will find XQuery easier to use than XSLT because XQuery has a SQL-like syntax. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Migration to HIPAA 5010 and ICD 10&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Conversion from HIPAA 4010 to 5010 and ICD-9 to ICD-10 will be a priority on the agenda in the next three years (details on final compliance dates can be found on this &lt;a href="http://www.cms.gov/TransactionCodeSetsStands/02_TransactionsandCodeSetsRegulations.asp"&gt;HHS&lt;/a&gt; web page). &lt;br /&gt;&lt;br /&gt;The XQuery and XQuery Update Facility specifications provide a simple and elegant &lt;a href="http://blogs.datadirect.com/2009/09/datadirect-hipaa-icd-upgrade-toolkit.html"&gt;solution&lt;/a&gt; to this conversion challenge.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Health Information Exchanges (HIEs) and the Virtual Health Record&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In a HIE with multiple participating organizations, EHR data must be assembled either through a centralized, federated, or hybrid data model. The data needed to assemble a longitudinal EHR (a virtual health record) for a patient could be coming from several providers, payers, lab companies, and medical devices. XQuery was designed to handle that type of XML processing use case.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Storing, Updating, and Querying EHRs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The HL7 CCD and ASTM CCR have been retained as Meaningful Use XML data exchange standards for EHRs. Mapping between an XML HL7 CCD representation (which is derived from the HL7 UML-based Reference Information Model or RIM) and an existing relational database structure is not trivial. IBM has been granted a &lt;a href="http://www.freepatentsonline.com/7512633.pdf"&gt;patent&lt;/a&gt; entitled "Conversion of hierarchically-structured HL7 specifications to relational databases". The HL7 RIMBAA project provides some &lt;a href="http://wiki.hl7.org/index.php?title=ORM_best_practices"&gt;best practices&lt;/a&gt; on mapping RIM objects to a relational database structure. &lt;br /&gt;&lt;br /&gt;With the emergence of native XML databases such as Oracle XML DB and IBM pureXML, XML is no longer just a messaging format. It can be used as a format for storing and querying data as well.&lt;br /&gt;&lt;br /&gt;This article shows a sample code of &lt;a href="http://www.ibm.com/developerworks/data/library/techarticle/dm-0810malaika/"&gt;updating&lt;/a&gt; an EHR stored in HL7 CDA format in an IBM DB2 pureXML native XML database. &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Mapping from HL7 2.x to HL7 v3 messages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In countries like Canada where HL7 v3 has been adopted, a frequent challenge is to map from legacy HL7 2.x messages to HL7 v3 messages for example for lab results. An XQuery-based transform can be used to map from an HL7 v2.x XML structure to an HL7 v3 XML structure. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;An Alternative to GELLO?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In a previous post entitled "&lt;a href="http://efasoft.blogspot.com/2010/05/clinical-decision-support-agile.html"&gt;Clinical Decision Support: Crossing the Chasm"&lt;/a&gt;, I argued that Clinical Decision Support Systems (CDSS) implementers should be free to use any programming language of their choice. GELLO is an HL7 standard which specifies an expression and query language for CDSS. The following are the requirements for a CDSS expression and query language as specified in the GELLO specification:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;vendor-independent&lt;br /&gt;&lt;li&gt;platform-independent&lt;br /&gt;&lt;li&gt;object-oriented and compatible with the vMR&lt;br /&gt;&lt;li&gt;easy to read/write&lt;br /&gt;&lt;li&gt;side-effect free&lt;br /&gt;&lt;li&gt;flexible&lt;br /&gt;&lt;li&gt;extensible&lt;br /&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XQuery satisfies all these requirements except the third. XQuery is a functional programming language with no side effect as opposed to an object-oriented programming language. GELLO settled on the OMG Object Constraint Language (OCL). The following paragraph from the GELLO specification explains why XQuery (known as XQL at the time) wasn't selected:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;XQL is a query language designed specifically for XML documents. XML documents are unordered, labeled trees, with nodes representing the document entity, elements, attributes, processing instructions and comments. The implied data model behind XML neither matches that of a relational data model nor that of an object-oriented data model. XQL is a query language for XML in the same sense as SQL is a query language for relational tables. Since the HL7 RIM data model and the vMR data model are both object-oriented, it is clear that XQL is not an appropriate approach for an object-oriented query and expression language.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That might have been true back in 2004 in an object-oriented world. Today, if the inputs to a CDSS are EHRs represented in HL7 CCD or ASTM CCR format, and those EHRs are stored in an XQuery compliant native XML database, then XQuery could be a strong candidate for an expression and query language for the CDSS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7782825521311313500?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7782825521311313500' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7782825521311313500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7782825521311313500'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/06/putting-xquery-to-work-in-healthcare.html' title='Putting XQuery to Work in Healthcare'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-9067466212675720078</id><published>2010-06-09T00:27:00.008-04:00</published><updated>2010-06-11T16:15:01.119-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='XMLDB'/><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='Clinical Decision Support'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='EHR'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Data Modeling for Electronic Health Records (EHR) Systems</title><content type='html'>Getting the data model right is of paramount importance for an Electronic Health Records (EHR) system. The factors that drive the data model include but are not limited to: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Patient safety&lt;br /&gt;&lt;li&gt;Support for clinical workflows&lt;br /&gt;&lt;li&gt;Different uses of the data such as input to clinical decision support systems&lt;br /&gt;&lt;li&gt;Reporting and analytics&lt;br /&gt;&lt;li&gt;Regulatory requirements such as Meaningful Use criteria.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Model First&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Proven methodologies like contract-first web service design and model driven development (MDD) put the emphasis on deriving application code from the data model and not the other way around. Thousands of line of code can be auto-generated from the model, so it's important to get the model right.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Requirements Gathering&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The objective here is to determine the entities, their attributes, and the relationships between those entities. For example, what are the attributes that are necessary to describe a patient's condition and how do you express the fact that a condition is a manifestation of an allergy? The data modeler should work closely with clinicians to gather those requirements. Industry standards should be leveraged as well. For example, HITSP C32 defines the data elements for each EHR data module such as conditions, medications, allergies, and lab results. These data elements are then mapped to the HL7 Continuity of Care Document (CCD) XML schema.&lt;br /&gt;&lt;br /&gt;The HL7 CCD is itself derived from the HL7 Reference Information Model (RIM). The latter is  expressed as a set of UML class diagrams and is the foundation model for health care and clinical data. A simpler alternative to the CCD is the ASTM Continuity of Care Records (CCR). Both the CCD and CCR provide an XML schema for data exchange and are Meaningful Use criteria. Another relevant data model is the HL7 vMR (Virtual Medical Record) which aims to define a data model for the input and output of Clinical Decision Support Systems (CDSS).&lt;br /&gt;&lt;br /&gt;These standards can be cumbersome to use as such from a software development perspective. Nonetheless, they can inform the design of the data model for an EHR system. Alignment with the CCD and CCR will facilitate data exchange with other providers and organizations. The following are Meaningful Use criteria for data exchange:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Electronically receive a patient summary record, from other providers and organizations including, at a minimum, diagnostic test results, problem list, medication list, medication allergy list, immunizations, and procedures and upon receipt of a patient summary record formatted in an alternative standard specified in Table 2A row 1, displaying it in human readable format.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Enable a user to electronically transmit a patient summary record to other providers and organizations including, at a minimum, diagnostic test results, problem list, medication list, medication allergy list, immunizations, and procedures in accordance with the standards specified in Table 2A row 1.&lt;br /&gt;&lt;/ol&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Applying Data Modeling Patterns&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Applying data modeling patterns allows model consistency and quality. Relational data modeling is a well established discipline. My favorite resource for relational data modeling patterns is: &lt;span style="font-style:italic;"&gt;The Data Model Resource Book, Vol. 3: Universal Patterns for Data Modeling&lt;/span&gt;. &lt;br /&gt; &lt;br /&gt;Some XML Schema best practices can be found &lt;a href="http://www.xfront.com/BestPracticesHomepage.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Data Stores&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Today, options for data store are no longer limited to relational databases. Alternatives include: native XML databases (e.g. DB2 pureXML), Entity-Attribute-Value with Classes and Relationships (EAV/CR), and Resource Description Framework (RDF) stores. &lt;br /&gt;&lt;br /&gt;Native XML databases are more resilient to schema changes and do not require handling the impedance mismatch between XML documents, Java objects, and relational tables which can introduce design complexity, performance, and maintainability issues. &lt;br /&gt;&lt;br /&gt;Storing EHRs in an RDF store can enable the inference of medical facts based on existing explicit medical facts. Such inferences can be driven by an ontology expressed in OWL or a set of rules expressed in a rule language such SWRL. Semantic Web technologies can also be helpful in checking the consistency of a model, data and knowledge integration across domains (e.g. the genomics and clinical domains), and for managing classification schemes like medical terminologies. RDF, OWL, and SWRL have been successfully implemented in Clinical Decision Support Systems (CDSS). &lt;br /&gt;&lt;br /&gt;The data modeling notation used should be independent of the storage model or at least compatible with the latter. For example, if native XML storage is used, then a relational modeling notation might not be appropriate. In general, UML provides the right level of abstraction for implementation-agnostic modeling.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Due Diligence&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When adopting a "noSQL" storage model, it is important to ensure that (a) the database can meet performance and scalability criteria and (b) the team has the skills to develop and maintain the database. Due diligence should be performed through benchmarking using a tool such as the IBM Transaction Processing over XML (&lt;a href="http://tpox.sourceforge.net/"&gt;TpoX&lt;/a&gt;). The team might need formal training in a new query language like XQuery or SPARQL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;A Longitudinal View of the Patient Health&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maintaining an up-to-date and truly longitudinal view of a patient's medical history requires merging and reconciling data from heterogeneous sources including providers' EMR systems, lab companies, medical devices, and payers' claim transaction repositories. The data model should facilitate the assembly of data from such diverse sources. XML tools based on XSLT, XQuery, or XQuery Update can be used to automate the merging.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Importance of Data Validation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Data validation can be performed at the database layer, the application layer, and the UI layer. The data model should support the validation of the data. The following are examples of techniques that can be used for data validation:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;XML Schema for structural validation of XML documents&lt;br /&gt;&lt;li&gt;ISO Schematron (based on XPath 2.0 and XSLT 2.0) for business rules validation of XML documents&lt;br /&gt;&lt;li&gt;A business rules engine like Drools&lt;br /&gt;&lt;li&gt;A data processing framework like Smooks&lt;br /&gt;&lt;li&gt;The validation features of a UI framework such as JSF2&lt;br /&gt;&lt;li&gt;The built-in validation features of the database.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;The Future: Modeling with the NIEM IEPD&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The HHS ONC issued an &lt;a href="http://mycourses.med.harvard.edu/ec_res/nt/BD6CA203-DD37-4233-9771-4EC758451DCE/1ONC.pdf"&gt;RFP&lt;/a&gt; for using the National Information Exchange Model (NIEM) Information Exchange Package Documentation (IEPD) process for healthcare data exchange. The ONC will release a NIEM Concept of Operations (ConOps). The NIEM IEPD process is explained &lt;a href="http://www.niem.gov/files/NIEM_IEPD_Requirements_v2_1.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-9067466212675720078?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=9067466212675720078' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/9067466212675720078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/9067466212675720078'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/06/data-modeling-for-electronic-health.html' title='Data Modeling for Electronic Health Records (EHR) Systems'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-1024912993628924322</id><published>2010-05-31T13:13:00.006-04:00</published><updated>2011-03-20T11:23:11.382-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='Usability'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='NIST'/><category scheme='http://www.blogger.com/atom/ns#' term='EHR'/><title type='text'>Health IT Usability: What Can Be Learned From the British NHS</title><content type='html'>What can possibly go wrong when the user interface of a health IT system is inadequate. The following are examples of patient safety incidents that can occur when using an electronic medical record (EMR), a Computerized Physician Order Entry (CPOE), or a clinical decision support (CDS) system:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Incorrect medication dosage due to a miscalculation of body weight resulting from a mix-up of kilograms and pounds.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Missing data or incorrect data entry into a patient's medical record.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Misreading of patient's medical record due to a font size that is too small on a computer screen.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Errors in medication dosing frequency due to a non-intuitive menu.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Incorrect test ordered due to a clinician clicking on the wrong test.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Incorrect identification of a patient resulting in the administration of the wrong drug.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;These patient safety concerns prompted the US Agency for Healthcare Research and Quality (AHRQ) to order a study entitled: &lt;a href="http://healthit.ahrq.gov/portal/server.pt/gateway/PTARGS_0_11699_911984_0_0_18/EHRVendorPractices&amp;Perspectives.pdf"&gt;Electronic Health Record Usability Vendor Practices and Perspectives&lt;/a&gt;. The report noted the lack of standards for the design, testing, and monitoring of the usability of EHR products. The following are some of the recommendations made in the report:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Encourage formal usability testing early in the design and development phase as a best practice, and discourage dependence on post-deployment review supporting usability assessments&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Increase research and development of best practices supporting designing for patient safety&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Design certification programs for EHR usability in a way that focuses on objective and important aspects of system usability&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Support an independent body for vendor collaboration and standards development to overcome market forces that discourage collaboration, development of best practices, and standards harmonization in this area.&lt;br /&gt;&lt;/ul&gt;&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since November 2004, the British National Health Service (NHS) &lt;a href="http://www.cui.nhs.uk/Pages/NHSCommonUserInterface.aspx"&gt;Common User Interface (CUI) Program&lt;/a&gt; has been creating standards and guidance in support of the usability of clinical applications with inputs from user interface design specialists, usability experts, and hundreds of clinicians with a diversity of background in using health information technology. &lt;br /&gt;&lt;br /&gt;The program is based on a rigorous development process which includes: research, design, prototyping, review, usability testing, and patient safety assessment by clinicians. The NHS CUI standards and guidance have been tested in production through the NHS Summary Record Application (SRA) project. The Guidance Catalog currently covers the following subjects with high impact on patient safety:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Patient Identification&lt;br /&gt;&lt;li&gt;Consistent Navigation&lt;br /&gt;&lt;li&gt;Accessibility&lt;br /&gt;&lt;li&gt;Abbreviations and Acronyms&lt;br /&gt;&lt;li&gt;Clinical Noting and Terminology&lt;br /&gt;&lt;li&gt;Decision Support&lt;br /&gt;&lt;li&gt;Handover&lt;br /&gt;&lt;li&gt;Information Entry and Display&lt;br /&gt;&lt;li&gt;Medications Management.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The NHS CUI Program is being developed in collaboration with Health IT vendors.  The vendors provide feedback to the NHS on the feasibility of the proposed guidelines. The usability standards and guidance inform the development of functional and user interface specifications of vendors' health IT systems. &lt;br /&gt;&lt;br /&gt;The benefits are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Increased patient safety&lt;br /&gt;&lt;li&gt;Increased productivity of healthcare staff through a user-friendly, predictable, and intuitive interface&lt;br /&gt;&lt;li&gt;Reduced need for staff training due to a consistent look and feel across clinical applications.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The US National Institute of Standards and Technology (NIST) will be hosting a workshop on July 13 in Gaithersburg, Maryland entitled &lt;a href="http://www.nist.gov/itl/usability_hit.cfm"&gt;Usability in Health IT: Strategy, Research, and Implementation&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-1024912993628924322?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=1024912993628924322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1024912993628924322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1024912993628924322'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/05/health-it-usability-what-can-be-learned.html' title='Health IT Usability: What Can Be Learned From the British NHS'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5254162842223933265</id><published>2010-05-25T23:31:00.014-04:00</published><updated>2010-07-22T21:55:51.162-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><title type='text'>Architecting the Health Enterprise with TOGAF 9</title><content type='html'>Several factors are currently driving the increased complexity of health information technology (HIT). These factors include: a new regulatory framework, innovations in the practice of healthcare delivery, standardization, cross-enterprise integration, usability, mobility, security, privacy, and the imperative to improve care quality and reduce costs.  &lt;br /&gt;&lt;br /&gt;A methodology and governance framework is needed for creating a coherent and consistent enterprise architecture (EA). The latter should not be driven by vendors and their offerings. Instead, health enterprises should develop an EA that is aligned with their unique overarching business context, drivers, and vision. Developing an architecture capability that is based on a proven framework should be a top priority for health IT leaders.&lt;br /&gt;&lt;br /&gt;TOGAF 9 is an Open Group standard that defines a methodology, standardized semantics, and processes that can be used by Enterprise Architects to align IT with the strategic goals of their organization. TOGAF 9 covers the following four architecture domains:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Business Architecture&lt;br /&gt;&lt;li&gt;Data Architecture&lt;br /&gt;&lt;li&gt;Application Architecture&lt;br /&gt;&lt;li&gt;Technology Architecture.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The diagram below from the TOGAF 9 documentation provides an overview (click on the image to enlarge). &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vFn-XW2q8mg/S_yajUs-KmI/AAAAAAAAAHI/28FFyeLBgcE/s1600/01_structure.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 260px;" src="http://2.bp.blogspot.com/_vFn-XW2q8mg/S_yajUs-KmI/AAAAAAAAAHI/28FFyeLBgcE/s320/01_structure.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5475421178619112034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Architecture Development Method (ADM) is the core of TOGAF and describes a method for developing an enterprise architecture. TOGAF 9 includes specific guidance on how the ADM can be applied to service-oriented architecture (SOA) and enterprise security (two areas of interest in health IT). The different phases of the ADM are depicted on the following diagram (click on the image to enlarge).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vFn-XW2q8mg/S_yaruFT7PI/AAAAAAAAAHQ/S1jH2w8Ab-s/s1600/19_adm_iteration.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 274px; height: 320px;" src="http://4.bp.blogspot.com/_vFn-XW2q8mg/S_yaruFT7PI/AAAAAAAAAHQ/S1jH2w8Ab-s/s320/19_adm_iteration.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5475421322871041266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Architecture Capability Framework provides guidelines and resources for establishing an architecture capability within the enterprise. This capability operates the ADM. The Content Framework specifies the artifacts and deliverables for each Architecture Building Block (ABB).  These artifacts are stored in a repository and  classified according to the Enterprise Continuum.&lt;br /&gt;&lt;br /&gt;The Open Group has been working on the adoption of an open EA modeling standard called ArchiMate. ArchiMate provides a higher level view of EA when compared to modeling standards such as BPMN and UML. It can be used to depict different layers of EA including business processes, applications, and technology in a way that can be consumed by non-technical business stakeholders. A sample of an ArchiMate enterprise view of a hospital can be found &lt;a href="http://earchpal.files.wordpress.com/2008/08/archimate-demo.jpg"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;HL7 has published the Services-Aware Interoperability Framework (&lt;a href="http://gforge.hl7.org/gf/download/docmanfileversion/5569/7139/saif_introduction_for_peer_review_20100409.pdf"&gt;SAIF&lt;/a&gt;), an architectural framework for facilitating interoperability between healthcare systems. SAIF includes the following four components: the Enterprise Conformance and Compliance Framework (&lt;a href="http://gforge.hl7.org/gf/download/docmanfileversion/5524/7020/Enterprise_Conformance_Compliance_Framework_peer_review_20100312.pdf"&gt;ECCF&lt;/a&gt;), the Governance Framework (GF), the Behavioral Framework (&lt;a href="http://gforge.hl7.org/gf/download/docmanfileversion/5524/7020/Enterprise_Conformance_Compliance_Framework_peer_review_20100312.pdf"&gt;BF&lt;/a&gt;), and the Information Framework (IF).&lt;br /&gt;&lt;br /&gt;For guidance on using SOA in healthcare, the Healthcare Services Specification Project (HSSP) has published the &lt;a href="http://hssp.wikispaces.com/PracticalGuide"&gt;Practical Guide for SOA in Healthcare&lt;/a&gt; based on the TOGAF Architecture Development Method (ADM) and the SAIF ECCF. The Practical Guide for SOA in Healthcare contains a sample Reference Enterprise Architecture. The Practical Guide for SOA in Healthcare Volume II  describes an &lt;a href="http://hssp.wikispaces.com/file/view/Practical+Guide+for+SOA+in+Healthcare+Volume+II+Immunization+Management+Case+Study.pdf"&gt;immunization case study&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also noteworthy is the HL7 EHR System Functional Model (EHR-S FM) and the HSSP Electronic Health Record (EHR) System Design Reference Model (&lt;a href="http://hssp.wikispaces.com/Reference+Architecture"&gt;EHR SD RM&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5254162842223933265?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5254162842223933265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5254162842223933265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5254162842223933265'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/05/architecting-health-enterprise-with.html' title='Architecting the Health Enterprise with TOGAF 9'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vFn-XW2q8mg/S_yajUs-KmI/AAAAAAAAAHI/28FFyeLBgcE/s72-c/01_structure.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-397227731543616528</id><published>2010-05-22T01:14:00.016-04:00</published><updated>2011-03-25T07:10:15.225-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='RIF'/><category scheme='http://www.blogger.com/atom/ns#' term='Clinical Decision Support'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><title type='text'>Clinical Decision Support: Crossing The Chasm</title><content type='html'>Clinical Decision Support (CDS) is certainly a "meaningful use" of electronic health records (EHRs). Despite its potential to improve the quality of care, CDS is not widely used in health care delivery today. In tech marketing parlance, CDS has not crossed the chasm. There are several issues that need to be addressed including:  physicians buy-in into the concept of automated execution of evidence-based clinical guidelines, seamless integration into clinical workflows, usability, standardization, and CDS software architecture and design.&lt;br /&gt;&lt;br /&gt;When I first started to explore CDS systems, I was quite overwhelmed by the number of different competing formalisms, standards, and academic projects in the field. To move us past the current gridlock in CDS adoption, I propose an agile approach to the development of CDS software with an emphasis on:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Working CDS software that delivers results for providers and their patients&lt;br /&gt;&lt;li&gt;Close daily collaboration between clinicians and software developers during the development process&lt;br /&gt;&lt;li&gt;The use of agile techniques such as automated acceptance testing to facilitate the involvement of clinicians in CDS software quality assurance.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Working CDS Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Different formalisms, methodologies, and architectures have been proposed for representing the medical knowledge in clinical guidelines for their automated execution. Examples include, but are not limited to the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The Arden Syntax&lt;br /&gt;&lt;li&gt;GLIF (Guideline Interchange Format)&lt;br /&gt;&lt;li&gt;GELLO (Guideline Expression Language Object-Oriented)&lt;br /&gt;&lt;li&gt;GEM (Guidelines Element Model)&lt;br /&gt;&lt;li&gt;PROforma&lt;br /&gt;&lt;li&gt;EON&lt;br /&gt;&lt;li&gt;PRODIGY&lt;br /&gt;&lt;li&gt;Asbru&lt;br /&gt;&lt;li&gt;GUIDE&lt;br /&gt;&lt;li&gt;SAGE&lt;br /&gt;&lt;li&gt;SEBASTIAN&lt;br /&gt;&lt;li&gt;The HL7 Decision Support Service (DSS) Functional Model Specification.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Many academic papers have been written to explain and compare these different approaches. Each of these projects represents an important contribution to the CDS field and will inform the design of future CDS software. However, it is quite easy to fall into analysis paralysis when reviewing and debating which formalism or standard is better. At the end of the day, what really matters to the pragmatic developer is tested and working CDS software that delivers results for clinicians and their patients. &lt;br /&gt;&lt;br /&gt;Using business rule engines is not the only way to develop CDS software. However, I believe that because they are written in languages and frameworks that are accessible to mainstream software developers, business rule engines can accelerate the development, deployment, and availability of CDS software. Furthermore, many viable open source business rule engines are available today and can be leveraged.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Getting CDS Done with a Business Rule Engine&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ARRA interim certification criteria for electronic health record (EHR) technology include the following CDS-related requirements:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Implement automated, electronic clinical decision support rules (in addition to drug-drug and drug-allergy contraindication checking) according to speciality or clinical priorities that use demographic data, specific patient diagnoses, conditions, diagnostic test results and/or patient medication list.&lt;br /&gt;&lt;li&gt;Automatically and electronically generate and indicate (e.g., pop-up message or sound) in real time, alerts and care suggestions based upon clinical decision support rules and evidence grade.&lt;br /&gt;&lt;li&gt;Automatically and electronically track, record, and generate reports on the number of alerts responded to by a user.&lt;br /&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;These requirements can be satisfied with simple conditional statements in any programming language. However, it is recognized that clinical decision support rules (like other complex types of business rules) are better implemented with a business rule engine. This allows the developer to externalize the medical knowledge in the clinical guideline in the form of declarative rules as opposed to embedding that knowledge in procedural code. This approach has many benefits notably resilience to change, ease of maintenance, and enabling collaboration with business users (in this case clinicians).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Collaboration between Clinicians and Software Developers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the most challenging aspects of CDS has been the translation of the medical knowledge in clinical guidelines into executable code. There are not that many people who are expert in the both the medical and software development fields. The Agile prescription to this problem is close and daily collaboration between clinicians and software developers.&lt;br /&gt;&lt;br /&gt;Business Rules engines like JBoss Drools provide features such as Excel-based decision tables or the ability to write rules in a DSL (domain specific language) to allow clinicians to actively participate in the development and maintenance of decision support rules.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Automated Acceptance Testing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The quality of CDS software is of paramount importance for care safety reasons. The Agile prescription here is test-driven development (TDD), particularly the automated integration and acceptance testing of the proper execution of clinical decision support rules. "FIT for Rules" is an example of an automated acceptance framework for rule engines like ILog and Drools. Such frameworks allow both the developer and the clinician to participate in the acceptance testing process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Service-Oriented CDS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The complexity and cost of developing CDS software strongly argue in favor of a service-oriented approach whereby CDS software capabilities are exposed as a set of services that can be consumed by other client health IT systems such as EHR and Computerized Physician Order Entry (CPOE) systems. To reduce costs, these CDS software services can be shared by several health care providers.&lt;br /&gt;&lt;br /&gt;In this regard, the HL7 Decision Support Service (DSS) Functional Model Specification represents one of the most important specifications for CDS implementers today.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Interchange Standard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The complexity and cost inherent in capturing the medical knowledge in clinical guidelines and translating that knowledge into executable code remains an impediment to the widespread adoption of CDS software. Therefore, there is still a need for a standard for the sharing and interchange of executable clinical guidelines. Several formalisms and standards have been proposed such as the Arden Syntax, GLIF, GELLO, and GEM. However, none of these standards has been widely adopted. Although there is a lot that can be learned from these standards, I believe that they are not widely used because they are complex and specific to the healthcare domain, and therefore not accessible to mainstream developers. There is also a lack of open source and even commercial implementations of some of these standards.&lt;br /&gt;&lt;br /&gt;If business rule engines are the pragmatic path to CDS adoption, then I would argue that the Rule Interchange Format (RIF) specification might be a solution to the interchange problem. The RIF Production Rule Dialect (PRD) is designed as a common XML serialization for multiple rule languages to enable rule interchange between  different business rule management systems (BRMS). RIF is currently a W3C candidate recommendation and is backed by several BRMS vendors.&lt;br /&gt;&lt;br /&gt;UPDATE: The following is the Final Meaningful Use criteria for Clinical Decision Support (CDS):&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Implement rules. Implement automated, electronic clinical decision support rules (in addition to drug-drug and drug-allergy contraindication checking) based on the data elements included in: problem list; medication list; demographics; and laboratory test results.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Notifications. Automatically and electronically generate and indicate in real-time, notifications and care suggestions based upon clinical decision support rules.&lt;br /&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And here are the draft stage 2 requirements:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;Use CDS to improve performance on high- priority health conditions.&lt;br /&gt;&lt;br /&gt;Establish CDS attributes for purposes of certification:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Authenticated (source cited);&lt;br /&gt;&lt;li&gt;Credible, evidence-based;&lt;br /&gt;&lt;li&gt;Patient-context sensitive;&lt;br /&gt;&lt;li&gt;Invokes relevant knowledge;&lt;br /&gt;&lt;li&gt;Timely;&lt;br /&gt;&lt;li&gt;Efficient workflow;&lt;br /&gt;&lt;li&gt;Integrated with EHR;&lt;br /&gt;&lt;li&gt;Presented to the appropriate party who can take action&lt;br /&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-397227731543616528?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=397227731543616528' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/397227731543616528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/397227731543616528'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/05/clinical-decision-support-agile.html' title='Clinical Decision Support: Crossing The Chasm'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-1879570334467745</id><published>2010-05-11T23:33:00.015-04:00</published><updated>2011-03-08T16:18:01.596-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='XQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>How Health Plans Can Help Jumpstart EHR Adoption</title><content type='html'>ARRA incentives will help physicians and hospitals adopt computerized medical records software in the next four years. The next big challenge will be how to obtain patients' electronic health records (EHRs) in order to make a "Meaningful Use" of these investments in health information technology (HIT). Most patients don't currently have an EHR. The goal is to ensure that within four years, all patients in the US have an EHR. &lt;br /&gt;&lt;br /&gt;It will take some time before physicians and hospitals have comprehensive medical records for their patients in their newly acquired Electronic Medical Record (EMR) software. EMR systems that are already deployed by providers don't typically contain clinical data about the care delivered by other providers. In contrast to EMRs, EHRs contain a longitudinal view of a patient's medical history across providers and can be populated from other sources including lab companies, at-home medical devices, health plans, and patient self-reported data (for example, data about over-the-counter drug that could potentially generate an adverse drug reaction).&lt;br /&gt;&lt;br /&gt;Discussions on Meaningful Use don't usually mention health plans since the incentives are only directed at eligible professionals and hospitals. However, health plans can play a very important role in jumpstarting EHR adoption by extracting health records from the vast amount of clinical data in claim transaction repositories and by making that data available to members and providers as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Quality and Care Coordination with Claim-Based Health Records&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following examples demonstrate how health records extracted from claim data, when made available to providers, can significantly improve the quality and coordination of care :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Pharmacy claim data can enable medication reconciliation during transitions of care.&lt;br /&gt;&lt;li&gt;Lab and radiology claim data help avoid redundant and potentially costly orders.&lt;br /&gt;&lt;li&gt;Diagnosis codes in medical claims can provide a view of a patient's problem list for care coordination purposes.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;When delivered in standard compliant data format, these claim-based data can be fed into clinical decision support systems for the automated execution of clinical guidelines and for generating alerts and reminders.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Data Integration and the Importance of Data Standards&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maintaining an up-to-date and truly longitudinal view of a patient's medical history requires merging and reconciling data from heterogeneous sources including providers' EMR systems, lab companies, medical devices, and payers' claim transaction repositories. This data integration will only be possible if all stakeholders adhere to common data exchange standards such as the ASTM Continuity of Care Records (CCR) and the HL7 Continuity of Care Documents (CCD) standards.&lt;br /&gt;&lt;br /&gt;Both the CCR and the CCD specify an XML Schema for constraining and validating EHR data. Therefore XML tools based on XSLT or XQuery/XQuery Update can be used to automate the merging of data from multiple sources.&lt;br /&gt;&lt;br /&gt;To ensure data portability when members switch jobs or health plans, the HL7 standard development organization published a Plan-to-Plan Personal Health Records Implementation Guide of the CCD specification with active participation by America's Health Insurance Plans (AHIP) and the Blue Cross and Blue Shield Association (BCBSA).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Health Plans and HIEs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Collaboration between all stakeholders in the healthcare industry requires an IT infrastructure to ensure effective data exchange orchestration and security. This infrastructure can take the form of a Health Information Exchange (HIE) network at the regional, state, or even federal level. A HIE provides capabilities such as a document registry and repository, an authorization policy engine, a consumer preferences manager, a HIPAA-compliant audit log, and a master patient index (MPI) to reliably aggregate patient's data across payers, providers, and other data sources. Such exchange networks can be built with open source software such as NHIN Connect and the emerging NHIN Direct.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Value of Claim-Based Health Records for Health Plans&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Claim-based health records can help providers meet health plans' pay-for-performance incentives and quality measures initiatives. Electronic Health records will also be an important component of health plans' Population Health Management programs.&lt;br /&gt;&lt;br /&gt;Some Accountable Care Organizations (ACOs) will be led by health plans. Data integration will be essential to the success of those ACOs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Health Plans vs. Google Health and Microsoft Health Vault&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Health Plans have a huge competitive advantage compared to online personal health records (PHRs) services such as Google Health and Microsoft Health Vault: they can pre-populate the PHRs of their members with health records extracted from claim transactions and those PHRs are likely to be more useful and reliable to providers than patient self-reported data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;A Roadmap for Health Plans&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Health plans can position themselves for their new role as enablers of EHR adoption by doing the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Create an EHR view of the health records in claim transaction repositories&lt;br /&gt;&lt;li&gt;Map the data to industry exchange standards such as the ASTM CCR or the HL7 CCD&lt;br /&gt;&lt;li&gt;Make the data available to their members (through a web portal for example) and partners (subject to patient's consent)&lt;br /&gt;&lt;li&gt;Get ready to contribute data to HIEs by adopting other necessary standards such as Integrating the Health Enterprise (IHE) profiles for cross-enterprise document exchange (XDS.b), security, and patient consent&lt;br /&gt;&lt;li&gt;Embrace and participate in open source projects such as NwHIN Connect and Direct&lt;br /&gt;&lt;li&gt;Actively participate in the health IT standards development process&lt;br /&gt;&lt;li&gt;Prepare their infrastructure to send and receive health records from providers.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-1879570334467745?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=1879570334467745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1879570334467745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1879570334467745'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/05/how-health-plans-can-help-jumpstart-ehr.html' title='How Health Plans Can Help Jumpstart EHR Adoption'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5526223500745912292</id><published>2010-04-11T14:49:00.007-04:00</published><updated>2010-05-11T23:33:04.413-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>Green EHRs, Genomics, Decision Support, and Checklists</title><content type='html'>I am back in the blogosphere after a three month hiatus. As you may have noticed from my last post, my focus lately has been on health information technology and how to unleash its potential to improve the quality of care and reduce costs. Healthcare Reform has been signed into law in the US as I have predicted in my last post. I believe that the healthcare sector is going through what former Intel CEO Andy Grove calls a "Strategic Inflection Point" driven by a combination of the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A new regulatory framework including Healthcare Reform, ARRA and the HITECH Act &lt;br /&gt;&lt;li&gt;Technology: electronic health records, advances in Genomics, and leveraging the ubiquity and ease of use of Web 2.0/3.0 platforms &lt;br /&gt;&lt;li&gt;Innovations in the practice of healthcare delivery such as personalized medicine, automated execution of clinical guidelines (evidence-based medicine and clinical decision support), and the growing awareness of the effectiveness of checklists in high-pressure clinical settings such as surgery and intensive care.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Developing robust and easy to use health IT standards is key, so I've joined the HL7 standard development organization to follow and hopefully contribute. Specifically, I am interested in the following HL7 working groups:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The HL7 Structured Document Working Group and the Greening of the CDA&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This group develops structured document standards for healthcare such as the Clinical Document Architecture (CDA) and the Continuity of Care Document (CCD). I am particularly interested in the greenCDA effort to simplify the CDA. I believe that simplifying the CDA can greatly facilitate and accelerate adoption. A simpler version of the CDA will allow adopters to quickly learn it and use their familiar software development tools (such as XML databinding tools and IDEs) to write software applications. To achieve that objective, data components of the greenCDA will be based on data semantics as opposed to the CDA R-MIM (Refined Message Information Model) classes. The CDA R-MIM is a graphical representation of the CDA specification and a step in the HL7 V3 Reference Information Model (RIM) refinement process.&lt;br /&gt;&lt;br /&gt;HITSP C32 took the right approach by first defining required data elements for various content modules such as conditions and medications and then mapping those data elements to the HL7 CCD XML Schema structure. However the latter is quite complex. Fortunately, it is possible to map those HITSP C32 data elements to a simpler XML Schema than what is defined by the HL7 CCD. That simpler XML Schema can take different forms. A National Information Exchange Model (NIEM) Information Exchange Package Documentation (IEPD) for healthcare data is an approach that is being considered by the ONC. The NIEM approach is proven and has been successfully used in complex data exchange scenarios in criminal justice and other sensitive domains. Another approach is to create a lighter version of the HITSP C32 specification like the L32 proposed by the MITRE corporation. &lt;br /&gt;&lt;br /&gt;There are many new interesting features of the XML Schema 1.1 specification such as assertions and conditional type assignments that can be leveraged as well to consolidate both structural and business rules data constraints in a single schema.  &lt;br /&gt;&lt;br /&gt;While there are different approaches to simplifying the CDA, instances of any well-designed simplified version of the CDA/CCD should easily be mapped to the original plain vanilla CDA/CCD schemas for exchange.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Clinical Decision Support Working Group&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This group develops standards such as the Virtual Medical Record (vMR), GELLO (an expression and query language for computer-interpretable clinical guidelines), Infobutton (a context-aware information retrieval standard specification), and Clinical Decision Support Services (CDSS).&lt;br /&gt;&lt;br /&gt;Clinical Decision Support systems had a limited adoption but are likely to get a boost from the new ARRA EHR certification requirements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Clinical Genomics Data Working Group&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This group develops standards for clinical and personalized genomic data such as DNA sequence variations and gene expression levels. Combined with clinical decision support services, this work has the potential to revolutionize personalized medicine as we know it. For example, a medication dose can be adjusted based on a patient's genotype. Family history and genetic screening will play an important role in preventive medicine for diseases such as diabetes and cancer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Procedures and Checklists in the Cockpit and Intensive Care Units&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Flight Operation Interests Group (FOIG) of the Air Transport Association (ATA) of which I am a member is developing a data model and XML Schema for flight deck procedures and checklists. Adherence to well designed flight deck procedures and checklists can contribute significantly to the improvement of flight safety. For example, several no-flap/no-slat takeoff crashes have been caused by a deviation from basic operating procedures. &lt;br /&gt;&lt;br /&gt;Aircraft manufacturers have different philosophies and policies on the design of flight deck procedures that must be reconciled. Another challenge is the need to take human factors into consideration in any effort related to the design and execution of flight deck procedures.&lt;br /&gt;&lt;br /&gt;While the idea of using checklists and standard operating procedures has been fully embraced and adopted by aviation professionals for the last 70 years, it is only now making inroads into the field of medicine particularly in intensive care units. The use of checklists in medicine has already shown the potential to save patients live and reduce human errors. However, the main challenge remains acceptance and full embrace of checklists by clinicians. If you are interested in learning more about checklists in medicine, I recommend the book "The Checklist Manifesto: How to Get Things Right" by Atul Gawande.&lt;br /&gt;&lt;br /&gt;A checklist could take the form of a tasks list automatically generated as output of clinical decision support services that take as inputs electronic health records as well as patient genomic data for a more effective form of personalized medicine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5526223500745912292?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5526223500745912292' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5526223500745912292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5526223500745912292'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2010/04/green-ehrs-genomics-decision-support.html' title='Green EHRs, Genomics, Decision Support, and Checklists'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5775565848841610397</id><published>2009-12-27T10:29:00.022-05:00</published><updated>2010-03-21T09:12:30.045-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='HL7'/><category scheme='http://www.blogger.com/atom/ns#' term='HealthIT'/><title type='text'>Unlocking the Potential of Health Information Technology (HIT)</title><content type='html'>Around the world, HIT is widely seen as a key factor in containing rising health care costs and improving the quality of patient care. President Obama, in a speech at George Mason University in January 2009, declared:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;To improve the quality of our health care while lowering its cost, we will make the immediate investments necessary to ensure that, within five years, all of America's medical records are computerized. &lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;Yet, recent studies have raised some concerns about the effectiveness of Electronic Health Records (EHRs). A recent &lt;a href="http://www.amjmed.com/article/S0002-9343(09)00816-X/abstract" target="_new"&gt;survey&lt;/a&gt; of 4000 hospitals conducted by Dr. David Himmelstein and his team of researchers at Harvard Medical School and published in the American Journal of Medicine concluded that the adoption of EHRs have had little impact on administrative costs and quality of care.&lt;br /&gt;&lt;br /&gt;Another study published in the &lt;a href="http://www.milbank.org/quarterly/8704feat.html" target="_new"&gt;Milbank Quaterly&lt;/a&gt; raised some questions about the effectiveness of EHRs (as compared to paper records) in primary clinical work. &lt;br /&gt;&lt;br /&gt;In the US, the American Recovery and Reinvestment Act (ARRA) of 2009 (also known as the "economic stimulus package") contains a portion called the Health Information Technology for Economic and Clinical Health Act (HITECH Act) which provides $19.2 billions of incentives to physicians and hospitals for the adoption of EHRs.  No matter where you stand in the political spectrum, ARRA, the HITECH Act, and Health Care Reform are now realities to contend with in the US health care sector.&lt;br /&gt;&lt;br /&gt;What can be done to ensure that these massive investments in HIT and EHRs live up to their expectations? A research paper entitled &lt;a href="http://content.nejm.org/cgi/content/full/360/16/1628" target="_new"&gt;"Use of Electronic Health Records in US Hospitals"&lt;/a&gt; and published in April 2009 in The New England Journal of Medicine reveals:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;On the basis of responses from 63.1% of hospitals surveyed, only 1.5% of U.S. hospitals have a comprehensive electronic-records system (i.e., present in all clinical units), and an additional 7.6% have a basic system (i.e., present in at least one clinical unit). Computerized provider-order entry for medications has been implemented in only 17% of hospitals.&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;The EHR is the cornerstone of the emerging Nationwide Health Information Network (NHIN). Software developers can do all sorts of interesting things (in the spirit of "meaningful use") with patient health data once it becomes available in electronic form. In 2010, EHRs will be a top priority for providers because of the incentives available under the HITECH Act. The ECRI Institute puts EHRs on the number two spot on its list of &lt;a href="https://www.ecri.org/Forms/Pages/Top_Technologies_Health_Plans.aspx" target="_new"&gt;Top 7 Technologies for Health Plans in 2010&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The following factors will be key to unlocking the full potential of HIT:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Standardization&lt;br /&gt;&lt;li&gt;Open Source&lt;br /&gt;&lt;li&gt;Training the HIT Workforce&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Standardization&lt;/h3&gt;&lt;br /&gt;Standards are important for the seamless exchange of data between the different stakeholders (hospitals, physicians, payers, lab companies, etc.) in the health care industry. Furthermore, due to the complexity of the health care domain, organizations adopting HIT cannot afford to reinvent the wheel when deciding on key issues such as:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A data model for representing EHR data and quality measure reporting content.&lt;br /&gt;&lt;li&gt;Coding systems for representing patient health information in a machine-processable format.&lt;br /&gt;&lt;li&gt;A language for expressing clinical practice guidelines for their automated execution in clinical decision support systems (CDSS) as a "meaningful use" of EHRs.&lt;br /&gt;&lt;li&gt;A protocol for cross-organization exchange of patient data.&lt;br /&gt;&lt;li&gt;Technologies for privacy, security, audit trails, and patient consents.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Fortunately, some of these standards exist today and should be adopted. Organizations such as the Health Information Technology Standards Panel (HITSP) and Integrating the Health Enterprise (IHE) in the US and Canada's Health Infoway's Standards Collaborative are working on harmonizing standards for data exchange as well as security and privacy in the health care domain.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;EHR Data and Quality Reporting&lt;/h4&gt;&lt;br /&gt;The HL7 Reference Information Model (RIM) expressed as a set of UML class diagrams is the foundation model for health care and clinical data. The HL7 Clinical Document Architecture (CDA) which is derived from the HL7 RIM has been widely adopted around the world for EHR implementation projects. The HL7 Continuity of Care Documents (CCD) is a constraint on the CDA driven by the requirements of the ATSM Continuity of Care Record (CCR) specification. The HITSP C32 specification which is a further constraint on the HL7 CCD is emerging as the standard for the exchange of EHR data in the US realm. &lt;br /&gt;&lt;br /&gt;On the CCR vs. CCD debate, I have come to appreciate and respect the exhaustive metadata provided by the CCD which is important for medico-legal reasons, but also for building software applications such as clinical decision support systems (CDSS) that rely heavily on the availability of such metadata. However, I also realize that some patient-facing web applications for managing personal health records (PHRs) can benefit from the simplicity of the CCR.&lt;br /&gt;&lt;br /&gt;For collecting and reporting performance measure data to improve the quality of care, the Physician Quality Reporting Initiative (PQRI) Registry XML Specification and the HL7 Quality Reporting Document Architecture (QRDA) are available.&lt;br /&gt;&lt;br /&gt;Laboratory content can be exchanged in HL7 2.5.1 messages or HITSP CCD documents. Digital Images and Communications in Medecine (DICOM), DICOM Structured Reporting (SR), and Web Access to DICOM objects (WADO) are used for medical imaging.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Medical Terminologies&lt;/h4&gt;&lt;br /&gt;The HITSP C80 Clinical Document and Message Terminology Component specification defines the vocabularies and terminologies used by various HITSP specifications. HITSP C80 recommends Logical Observation Identifiers Names and Codes (LOINC) for laboratory observations, RxNorm for standard names of clinical drugs, Unique Ingredient Identifier (UNII) for allergies, SNOMED CT for Problem Lists, and Unified Code for Units of Measure (UCUM) for units of measure. &lt;br /&gt;&lt;br /&gt;Integrating terminologies is a big challenge in Health IT. An example is the mapping from SNOMED-CT to ICD-10 or Current Procedural Terminology (CPT). Semantic web technologies such as RDF, OWL2, SWRL, SPARQL, and SWASDL have proven their usefulness in semantic mediation across coding systems as well as in building Clinical Decision Support Systems (CDSS).&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Administrative Transactions and E-Prescribing&lt;/h4&gt;&lt;br /&gt;Relevant standards include X12 4010 and 5010 for administrative transactions, Council for Affordable Quality Healthcare (CAQH) Core for online patient eligibility and benefits inquiries, and NCPDP SCRIPT 10.6 for electronic prescriptions (e-prescribing). Conversion from 4010 to 5010 and ICD-9 to ICD-10 will be a priority on the agenda in the next three years (details on final compliance dates can be found on this &lt;a target="_new" href="http://www.cms.hhs.gov/TransactionCodeSetsStands/02_TransactionsandCodeSetsRegulations.asp"&gt;HHS web page&lt;/a&gt;). XQuery, XQuery Update, and XSLT2 are likely to play an important role in that conversion effort.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;An Expression and Query Language for Clinical Decision Support Systems (CDSS)&lt;/h4&gt;&lt;br /&gt;There is currently no consensus on a single standard for expressing clinical practice guidelines for their automated execution in CDSS. Existing specifications include the Arden Syntax, the Guideline Interchange Format (GLIF), and GELLO (roughly Guideline Expression Language Object-Oriented). Some wonder if a standard is needed in this space at all. My position is that a standard with an open source reference implementation with support for some publicly available and &lt;a href="http://www.guideline.gov/" target="_new"&gt;approved clinical guidelines&lt;/a&gt; can be useful in speeding up adoption. &lt;br /&gt;&lt;br /&gt;In addition, since EHR data is one of the primary inputs into a CDSS, the CDSS expression language should at least share the same underlying data model with the EHR data input. That model is the HL7 Reference Information Model (RIM). The  "virtual medical record" (or vMR) specified by GELLO is defined as a view of the HL7 RIM. It would be a great help if HITSP could step in and harmonize standards in the CDSS space.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Cross-Enterprise Document Sharing&lt;/h3&gt;&lt;br /&gt;The Integrating the Health Enterprise (IHE) Cross-Enterprise Document Sharing (XDS) Integration Profile specifies a protocol for the sharing and access to EHRs across health enterprises. XDS defines concepts such as an "Affinity Domain" (a group of collaborating health enterprises), the "Document Source", the "Document Repository", and the "Document Registry". It also specifies transactions such as "Provide and Register Document", "Query Document" and "Retrieve document".&lt;br /&gt;&lt;br /&gt;Other relevant IHE Integration Profiles include the Cross Community Access profile (XCA), the Cross Enterprise Document Reliable Interchange (XDR), and the Cross Enterprise Document Media Interchange (XDM).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Privacy and Security&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;On the privacy and security front, the following publicly available standards can be used to comply with ARRA and HIPAA requirements:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Transport Layer Security (TLS)&lt;br /&gt;&lt;li&gt;Advanced Encryption Standard (AES)&lt;br /&gt;&lt;li&gt;Secure Hash Algorithm (SHA)&lt;br /&gt;&lt;li&gt;OASIS eXtensible Access Control Markup Language (XACML)&lt;br /&gt;&lt;li&gt;OASIS Security Assertion Markup Language (SAML)&lt;br /&gt;&lt;li&gt;OASIS WS-Security&lt;br /&gt;&lt;li&gt;OASIS WS-Trust&lt;br /&gt;&lt;li&gt;OASIS WS-Policy.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The following IHE Profiles provide specific security guidelines for health enterprises and Health Information Exchanges (HIEs):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Audit Trail and Node Authentication (ATNA)&lt;br /&gt;&lt;li&gt;Consistent Time (CT)&lt;br /&gt;&lt;li&gt;Basic Patient Privacy Consents (BPPC)&lt;br /&gt;&lt;li&gt;Enterprise User Authentication (EUA)&lt;br /&gt;&lt;li&gt;Cross-Enterprise User Assertion (XUA)&lt;br /&gt;&lt;li&gt;Patient Demographics Query (PDQ)&lt;br /&gt;&lt;li&gt;Patient Identifier Cross-Referencing (PIX)&lt;br /&gt;&lt;li&gt;Digital Signatures (DSG).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;For the de-identification and re-identification of content which are important for privacy as well as public health research and epidemiology, the following specifications are available:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;45 CFR Parts 160 and 164. Standards for Privacy of Individually Identifiable Health Information; Final Rule. August 14, 2002. Section 164.514(a-b) Deidentification of protected health information. (Deidentification)&lt;br /&gt;&lt;li&gt;46 CFR Parts 160 and 164. Standards for Privacy of Individually Identifiable Health Information; Final Rule. August 14, 2002. Section 164.514(c) Reidentification (Pseudonymization)&lt;br /&gt;&lt;li&gt;ISO/TS 25237:2008 Health Informatics --Pseudonymisation, Unpublished Technical Specification (Pseudonymization).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Open Source&lt;/h3&gt;&lt;br /&gt;High costs, total failure, disappointing return on investment (ROI), and adverse impact on end-users productivity are always risk factors to deal with in any large scale software implementation project. HIT projects are no exception. Driving costs out of health care will be a top priority for all stakeholders in 2010. So, companies will look for viable alternatives to insane software licensing and maintenance fees.&lt;br /&gt;&lt;br /&gt;Open source implementations of some of the HIT standards mentioned above can be leveraged to reduce such risks. In addition to lowering costs and risk, open source can provide the transparency that is needed to ensure that HIT software provides adequate privacy and security protections. Examples of these tools include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The &lt;a href="http://gforge.openehealth.org/gf/" target="_new"&gt;Open eHealth Integration Platform&lt;/a&gt; which is based on Apache Camel and implements HIT standards such as HL7 2.x, HL7 CDA/CCD, and IHE XDS. &lt;br /&gt;&lt;li&gt;The &lt;a href="http://www.openhealthtools.org/index.htm" target="_new"&gt;Open Health Tools Project&lt;/a&gt; provides tooling for developing HIT applications.&lt;br /&gt;&lt;li&gt;The &lt;a href="http://www.connectopensource.org/display/Gateway/CONNECT+Community+Portal" target="_new"&gt;Connect Gateway&lt;/a&gt; allows health enterprises to easily connect their HIT systems to health information exchanges (HIE). It implements key components such as a Master Patient Index (MPI), XDS.b Document Registry and Repository, Authorization Policy Engine, Consumer Preferences Manager, and a HIPAA-compliant Audit Log. &lt;br /&gt;&lt;li&gt;The &lt;a href="http://worldvista.org/World_VistA_EHR" target="_new"&gt;WorldVistA EHR&lt;/a&gt; open source EHR system which is based on the U.S. Department of Veterans Affairs (VA) sponsored VistA software. Work is underway to add CCR and CCD support to WorldVistA.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Training the HIT workforce&lt;/h3&gt;&lt;br /&gt;Finally, the potential of HIT will not be fully realized without the availability of a fully trained and competent workforce. All stakeholders in the health care industry should commit the necessary investments to educating the future HIT workforce through college and university programs as well as corporate training. &lt;br /&gt;&lt;br /&gt;Lastly, the usability of EHRs in clinical settings deserves more attention and additional research.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5775565848841610397?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5775565848841610397' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5775565848841610397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5775565848841610397'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/12/unlocking-potential-of-health.html' title='Unlocking the Potential of Health Information Technology (HIT)'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2705314236017556063</id><published>2009-09-21T22:02:00.028-04:00</published><updated>2010-03-21T09:17:51.766-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XMLDB'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web'/><category scheme='http://www.blogger.com/atom/ns#' term='NoSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Relational, XML, or RDF?</title><content type='html'>During the last 15 years, I have had the opportunity to work with different data models and approaches to application development. I started with SGML in the aerospace content management space back in 1995, then saw the potential of XML and fully embraced it in 1998. Since that time, I have been continuously following the evolution of XML related specifications and have been able to leverage the bleeding edge including XForms, XQuery, XSLT2, XProc, ISO Schematron, and even XML Schema 1.1.&lt;br /&gt;&lt;br /&gt;However, being a curious person, I decided to explore other approaches to data management and application development. I worked on systems using a relational database backend and application development frameworks like Spring, Hibernate, and JSF. I've been involved in SOAP-based web services projects where XML data (constrained and validated by an XML Schema) was unmarshalled into Java objects, and then persisted into a relational table with an Object-Relational Mapping (ORM) solution such as Hibernate. &lt;br /&gt;&lt;br /&gt;I also had the opportunity to work with the Java Content Repository (JCR) model in magazine content publishing, and the Entity-Attribute-Value with Classes and Relationships (&lt;a target="_new" href="http://ycmi.med.yale.edu/nadkarni/eav_CR_contents.htm"&gt;EAV/CR&lt;/a&gt;) model in the context of medical informatics. EAV/CR is suited for domains where entities can have thousands of frequently changing parameters.&lt;br /&gt;&lt;br /&gt;Lately, I have been working on Semantic Web technologies including the RDF data model, OWL (the Web Ontology Language), and the SPARQL query language for RDF.&lt;br /&gt;&lt;br /&gt;Clients often ask me which of these approaches is the best or which is the most appropriate for their project. Here is what I think:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Different approaches should be part of the software architect's toolkit (not just one). &lt;br /&gt;&lt;li&gt;To become more productive in an agile environment, every developer should become a "generalizing specialist".&lt;br /&gt;&lt;li&gt;The software architect or developer should be open minded (no "not invented here syndrome" or "what's wrong with what we're doing now" attitude).&lt;br /&gt;&lt;li&gt;The software architect or developer should be willing to learn new technologies outside of their comfort zone and IT leadership should encourage and reward that learning.&lt;br /&gt;&lt;li&gt;Learning new technologies sometimes requires a new way of thinking about the problems at hand and "unlearning" old knowledge.&lt;br /&gt;&lt;li&gt;It is important not to have a purist or religious approach to selecting any particular approach, since each has its own merits.&lt;br /&gt;&lt;li&gt;Ultimately, the overall context of the project will dictate your choice. This includes but is not limited to: skills set, learning curve, application performance, cost, and time to market.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Based on my personal experience, here is what I have learned:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;The XPath 2.0 and XQuery 1.0 Data Model (XDM)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The roots of SGML and XML are in &lt;span style="font-weight:bold;"&gt;content management&lt;/span&gt; applications in domains such as law, aerospace, defense, scientific, technical, medical, and scholarly publishing. The XPath 2.0 and XQuery Data Model (XDM) is particularly well suited for companies selling information products directly as a source of revenues (e.g. non-ad based publishers).&lt;br /&gt;&lt;br /&gt;XSLT2 facilitates media-independent publishing (single sourcing) to multiple devices and platforms. XSLT2 is also a very powerful XML transformation language that allows these publishers to perform the series of complex transformations that are often required as the content is extracted from various data sources and assembled into a final information product.&lt;br /&gt;&lt;br /&gt;With XQuery, sophisticated contextualized database-like queries can be performed. In addition, XQuery allows the dynamic assembly of content where new compound documents can be constructed on the fly from multiple documents and external data sources. This allows publishers to repurpose content into new information products as needed to satisfy new customer demands and market opportunities. &lt;br /&gt;&lt;br /&gt;XInclude enables the chunking of content into reusable pieces. XProc is an XML pipeline language that essentially allows you to automate a complex publishing workflow which typically includes many steps such as content assembly, validation, transformation, and query.&lt;br /&gt;&lt;br /&gt;The second category of application for which XML is a strong candidate is what is sometimes referred to as an &lt;span style="font-weight:bold;"&gt;"XML Workflow"&lt;/span&gt; application. The typical design pattern here is XRX (XForms, REST, and XQuery) where user inputs are captured with an XForm front end (itself potentially auto-generated from an XML schema) and data is RESTfully submitted to a native XML database, then queried and manipulated with XQuery. The advantages of this approach are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It is more resilient to schema changes. In fact the data can be stored without a schema.&lt;br /&gt;&lt;li&gt;It does not require handling the impedance mismatch between XML documents, Java objects, and relational tables which can introduce design complexity, performance, and maintainability issues even when using code generation.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;A typical example of an "XML Workflow" application would be a Human Resources (HR) form-based application that allows employees to fill and submit a form and also provides reporting capabilities.&lt;br /&gt;&lt;br /&gt;The third and last category of application are &lt;span style="font-weight:bold;"&gt;Web Services&lt;/span&gt; (RESTful or SOAP-based) that consume XML data from various sources, store the data natively in an XML database directly (bypassing the XML databinding and ORM layers altogether), and perform all processing and queries on the data using a pure XML approach based on XSLT2 and XQuery. An example is a dashboard or mashup application that stores all of the submitted data in a native XML database. In this scenario, the data can be cached for faster response to web services requests. Again the benefits listed for "XML Workflow" applications apply here as well. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Relational Model&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The relational model is well established and well understood. It is usually an option for data-oriented and enterprise-centric applications that are based on a closed world assumption. In such a scenario, there is usually no need for handling the data in XML and a conventional approach based on JSF, Spring, Hibernate and a relational database backend is enough. &lt;br /&gt;&lt;br /&gt;Newer Java EE frameworks like JBoss Seam and its seam-gen code generation tools are particularly well-suited for this kind of task. There is no running away from XML however, since these frameworks use XML for their configuration files. Unfortunately, there is currently a movement away from XML configuration files toward Java annotations due to some developers complaining about "XML Hell".&lt;br /&gt;&lt;br /&gt;The relational model supports transactions and is scalable although a new movement called &lt;a target="_new" href="http://en.wikipedia.org/wiki/NoSQL"&gt;NoSQL&lt;/a&gt; is starting to challenge that last assumption. An article entitled "&lt;a target="_new" href="http://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php"&gt;Is the Relational Database Doomed?&lt;/a&gt;" on readwriteweb.com describes this emerging trend.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The RDF Data Model&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Semantic Web technologies like RDF (an incarnation of the EAV/CR model mentioned above), OWL, SKOS, SWRL, and SPARQL and Linked Data publishing principles have received a lot of attention lately. They are well suited for the following applications:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Applications that need to infer new implicit facts based on existing explicit facts. Such inferences can be driven by an ontology expressed in OWL or a set of rules expressed in a rule language such SWRL.  &lt;br /&gt;&lt;li&gt;Applications that need to map concepts across domains such as a trading network where partners use different e-commerce XML vocabularies.&lt;br /&gt;&lt;li&gt;Master Data Management (MDM) applications that provide an RDF view and reasoning capabilities in order to facilitate and enhance the process of defining, managing, and querying an organization's core business entities. A paper on IBM's Semantic Master Data Management (SMDM) project is available &lt;a target="_new" href="http://www.vldb.org/pvldb/2/vldb09-1011.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;li&gt;Applications that use a taxonomy, a thesaurus, or a similar concept scheme such as online news archives and medical terminologies. SKOS, recently approved as a W3C recommendation was designed for that purpose.&lt;br /&gt;&lt;li&gt;Silo-busting applications that need to link data items to over data items on the web, in order to perform entity correlation or allow users to explore a topic further. The Linked Data design pattern is based on an open world assumption, uses dereferenceable HTTP URIs for identifying and accessing data items, RDF for describing metadada about those items, and semantic links to describe the relationships between those items.  An example is an Open Government application that correlates campaign contributions, voting records, census, and location data. Another example is a semantic social application that combines an individual's profiles and social networks from multiple sites in order to support data portability and fully explore the individual's social graph.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Of course, these different approaches are not mutually exclusive. For example, it is possible to provide an RDF view or layer on top of existing XML and relational database applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2705314236017556063?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2705314236017556063' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2705314236017556063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2705314236017556063'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/09/relational-xml-or-rdf.html' title='Relational, XML, or RDF?'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2258544024964427124</id><published>2009-08-11T22:43:00.017-04:00</published><updated>2010-03-21T09:32:55.045-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Adding Semantics to SOA</title><content type='html'>What can Semantic Web technologies such as RDF, OWL, SKOS, SWRL, and SPARQL bring to Web Services. One of the most difficult challenges of SOA is data model transformation. This problem occurs when services don't share a canonical XML schema. XML transformation languages such as XSLT and XQuery are typically used for data mediation in such circumstances.&lt;br /&gt;&lt;br /&gt;While it is relatively easy to write these mappings, the real difficulty lies in mapping concepts across domains. This is particularly important in B2B scenarios involving multiple trading partners. In addition to proprietary data models, it is not uncommon to have multiple competing XML standards in the same vertical. In general, these data interoperability issues can be syntactic, structural, or semantic in nature. Many SOA projects can trace their failure to those data integration issues.&lt;br /&gt;&lt;br /&gt;This is where semantic web technologies can add significant value to SOA. The Semantic Annotations for WSDL and XML Schema (&lt;a href="http://www.w3.org/TR/sawsdl/"&gt;SAWSDL&lt;/a&gt;) is a W3C recommendation which defines the following extension attributes that can be added to WSDL and XML Schema components:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The &lt;span style="font-style:italic;"&gt;modelReference&lt;/span&gt; extension attribute associates a WSDL or XML Schema component  to  a  concept in a semantic model such as OWL. The semantic representation is not restricted to OWL (for example it could be an SKOS concept). The &lt;span style="font-style:italic;"&gt;modelReference&lt;/span&gt; extension attribute is used to annotate XML Schema type definitions, element and attribute declarations as well as WSDL interfaces, operations, and faults. &lt;br /&gt;&lt;li&gt;The &lt;span style="font-style:italic;"&gt;liftingSchemaMapping&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;loweringSchemaMapping&lt;/span&gt; extension attributes typically point to an XSLT or XQuery mapping file for transforming between XML instances and ontology instances. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;A typical example of how SAWSDL might be used is in an electronic commerce network where trading partners use various standards such as EDI, UBL, ebXML, and RosettaNet. In this case, the  &lt;span style="font-style:italic;"&gt;modelReference &lt;/span&gt;extension attribute can be used to map a WSDL or XML Schema component to a  concept in a common foundational ontology such as one based on the Suggested Upper Merged Ontology (SUMO). In addition, lifting and lowering XSLT transforms are attached to XML Schema components in the SAWSDL  with &lt;span style="font-style:italic;"&gt;liftingSchemaMapping&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;loweringSchemaMapping&lt;/span&gt; extension attributes respectively. Note that any number of those transforms can be associated with a given XML schema component.&lt;br /&gt;&lt;br /&gt;Traditionally, when dealing with multiple services (often across organizational boundaries), an Enterprise Services Bus (ESB) provides mediation services such as business process orchestration, business rules processing, data format and data model transformation, message routing, and protocol bridging. Semantic mediation services can be added as a new type of ESB service. The SAWSDL4J API defines an object model that allows SOA developers to access and manipulate SAWSDL annotations.&lt;br /&gt;&lt;br /&gt;Ontologies have been developed for some existing e-commerce standards such as EDI X12, RosettaNet, and ebXML. When required, ontology alignment can be achieved with OWL constructs such as &lt;span style="font-style:italic;"&gt;subClassOf &lt;/span&gt;, &lt;span style="font-style:italic;"&gt;equivalentClass &lt;/span&gt;, and &lt;span style="font-style:italic;"&gt;equivalentProperty&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Semantic annotations provided by SAWSDL can also be leveraged in orchestrating business processes using the business process execution language (BPEL). To facilitate service discovery in SOA Registries and Repositories, interface definitions in WSDL documents can be associated with a service taxonomy defined in SKOS. In addition, once an XML message is lifted to an ontology instance, the data in the message becomes available to Semantic Web tools like OWL and SWRL reasoners and SPARQL query engines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2258544024964427124?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2258544024964427124' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2258544024964427124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2258544024964427124'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/08/adding-semantics-to-web-services.html' title='Adding Semantics to SOA'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-607375906476483918</id><published>2009-07-26T17:42:00.004-04:00</published><updated>2010-03-21T09:16:12.549-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Media'/><title type='text'>From Web 2.0 to the Semantic Web: Bridging the Gap in Newsmedia</title><content type='html'>In this presentation, I explain the Semantic Web value proposition for the newsmedia industry and propose some concrete steps to bridge the gap.&lt;br /&gt;&lt;br /&gt;Welcome to the world of news in the Web 3.0 era.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1432440"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/jamoussou/from-web-20-to-the-semantic-web-bridging-the-gap-in-the-newsmedia-industry-1432440" title="From Web 2.0 to the Semantic Web: Bridging the Gap in the Newsmedia Industry"&gt;From Web 2.0 to the Semantic Web: Bridging the Gap in the Newsmedia Industry&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=semantic-web-news-industry-090513221256-phpapp01&amp;stripped_title=from-web-20-to-the-semantic-web-bridging-the-gap-in-the-newsmedia-industry-1432440" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=semantic-web-news-industry-090513221256-phpapp01&amp;stripped_title=from-web-20-to-the-semantic-web-bridging-the-gap-in-the-newsmedia-industry-1432440" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/jamoussou"&gt;Joel Amoussou&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-607375906476483918?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=607375906476483918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/607375906476483918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/607375906476483918'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/07/from-web-20-to-semantic-web-bridging.html' title='From Web 2.0 to the Semantic Web: Bridging the Gap in Newsmedia'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3090647778296847826</id><published>2009-07-08T21:32:00.005-04:00</published><updated>2010-03-21T09:17:05.598-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Semantic Social Computing</title><content type='html'>The Web 2.0 revolution has produced an explosion in social data that is fundamentally transforming business, politics, culture, and society in general. Using tools such as wikis, blogs, online forums, and social networking sites, users can now express their point of view, build relationships, and exchange ideas and multimedia content. Combined with portable electronic devices such as cameras and cell phones, these tools are enabling the citizen journalist who can report facts and events faster than traditional media outlets and government agencies. &lt;br /&gt;&lt;br /&gt;One of the challenges posed by this explosion in social data is data portability between social networking sites. But the next biggest challenge will be the ability to harvest all that social data in order to extract actionable intelligence (e.g. a better understanding of consumer behavior or the events unfolding at a particular location). In addition, in a world where security has become the number one priority, various sensors from traffic cameras to satellite sensors are also collecting huge amounts of data. The integration of sensor data and social data offers new possibilities. &lt;br /&gt;&lt;br /&gt;Those are the types of integration challenges that Semantic Web technologies are designed to solve. The SIOC (&lt;a href="http://rdfs.org/sioc/spec/"&gt;Semantically Interlinked Online Communities&lt;/a&gt;) Core ontology describes the structure and content of online community sites. A comprehensive list of SIOC tools is available at the &lt;a href="http://sioc-project.org/applications"&gt;SIOC Applications&lt;/a&gt; page. Using these tools, developers can export SIOC compliant RDF data from various data sources such as blogs, wikis, online forums, and social networking sites such as Twitter and Flickr. Once exported, the SIOC data can be crawled, aggregated, stored, indexed, browsed, and queried (using SPARQL) to answer interesting questions. Natural Language Processing (NLP) techniques can be used to facilitate entity extraction from user generated content.&lt;br /&gt;&lt;br /&gt;SIOC leverages the FOAF ontology to describe the social graph on social networking sites. For example, this can offer deeper insights for marketers into how social recommendations affect consumer behavior.&lt;br /&gt;&lt;br /&gt;One unique capability offered by Semantic Web technologies is the ability to infer new facts (inference) from explicit facts based on the use of an ontology (RDFS or OWL) or a set of rules expressed in a rule language such as the Semantic Web Rule Language (SWRL). Using constructs such as owl:sameAs or rdfs:seeAlso, it becomes easy to express the fact that two or more different web pages relate to the same resource (e.g. different profile pages of the same person on difference social networking sites). Linked Data principles can help in linking social data, therefore building bridges between the data islands that today's social networking sites represent.&lt;br /&gt;&lt;br /&gt;SIOC compliant social data can be meshed up with other data sources such as sensor data to reveal very useful information about events related to logistics, public safety, or political unrest at a particular location for example. With the advent of GPS-enabled cameras and cell phones, temporal and spatial context can be added to better describe those events. The W3C &lt;a href="http://www.w3.org/TR/owl-time/" target="_new"&gt;Time OWL Ontology&lt;/a&gt; (OWL-Time) and the &lt;a href="http://www.w3.org/2003/01/geo/"&gt;Basic Geo Vocabulary&lt;/a&gt; have been developed  for that purpose.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3090647778296847826?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3090647778296847826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3090647778296847826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3090647778296847826'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/07/semantic-social-computing.html' title='Semantic Social Computing'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-8275359226714308310</id><published>2009-06-11T23:43:00.018-04:00</published><updated>2010-03-21T09:18:19.756-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='Gov 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Publishing Government Data to the Linked Open Data (LOD) Cloud</title><content type='html'>In a &lt;a href="http://efasoft.blogspot.com/2009/03/news-content-apis-uniform-access-or.html" target="_new"&gt;previous post&lt;/a&gt;, I outlined a roadmap for migrating news content to the Semantic Web and the Linked Open Data (LOD) cloud. The BBC has been doing some interesting work in that space by using Linked Data principles to connect BBC Programmes and BBC Music to MusicBrainz and DBpedia. SPARQL endpoints are now available for querying the BBC datasets.&lt;br /&gt;&lt;br /&gt;It is clear that Europe is ahead of the US and Canada in terms of Semantic Web research and adoption. The Europeans are likely to further extend their lead with the announcement this week that Tim Berners-Lee (the visionary behind the World Wide Web, the Semantic Web, and the Linked Open Data movement) will be advising the UK Government on making government data more open and accessible.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vFn-XW2q8mg/SjHZD1P_HbI/AAAAAAAAAFo/3MoMNebhoWI/s1600-h/lod-datasets_2009-03-05.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 244px;" src="http://2.bp.blogspot.com/_vFn-XW2q8mg/SjHZD1P_HbI/AAAAAAAAAFo/3MoMNebhoWI/s320/lod-datasets_2009-03-05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346292892522454450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the US, data.gov is part of the Open Government Initiative of the Obama Administration. The following is an excerpt from data.gov:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A primary goal of Data.gov is to improve access to Federal data and expand creative use of those data beyond the walls of government by encouraging innovative ideas (e.g., web applications). Data.gov strives to make government more transparent and is committed to creating an unprecedented level of openness in Government. The openness derived from Data.gov will strengthen our Nation's democracy and promote efficiency and effectiveness in Government.&lt;/blockquote&gt;&lt;br /&gt;Governments around the world have taken notice and are now considering similar initiatives. It is clear that these initiatives are important for the proper functioning of democracy since they allow citizens to make informed decisions based on facts as opposed to the politicized views of special interests, lobbyists, and their spin doctors. These facts are related to important subjects such as health care, the environment, the criminal justice system, and education. There is an ongoing debate in the tech community about the best approach for publishing these datasets. There are several government data standards available such as the National Information Exchange Model (NIEM). In the Web 2.0 world, RESTful APIs with ATOM, XML, and JSON representation formats have become the norm.&lt;br /&gt;&lt;br /&gt;I believe however that Semantic Web technologies and Linked Data principles offer unique capabilities in terms of bridging data silos, queries, reasoning, and visualization of the data. Again, the methodology for adopting Semantic Web technologies is the same:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Create an OWL ontology that is flexible enough to support the different types of data in the dataset including statistical data. This is certainly the most important and challenging part of the effort.&lt;br /&gt;&lt;li&gt;Convert the data from its source format to RDF. For example XSLT2 can be used to convert from CSV or TSV to RDF/XML and XHTML+RDFa. There are also RDFizers such as D2R for relational data sources.&lt;br /&gt;&lt;li&gt;Link the data to other data sources such as Geonames, Federal Election Commission (FEC), and US Census datasets.&lt;br /&gt;&lt;li&gt;Provide an RDF dump for Semantic Web Crawlers and a SPARQL endpoint for querying the datasets.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;The following are some of the benefits of this approach:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It allows users to ask sophisticated questions against the datasets using the SPARQL query language. These are the kind of questions that a journalist, a researcher, or a concerned citizen will have in mind. For example, which airport has the highest number of reported aircraft bird strikes? (read more &lt;a target="_new" href="http://fastlane.dot.gov/2009/04/public-disclosure-is-our-job.html"&gt;here&lt;/a&gt; about why Transportation Secretary Ray LaHood rejected a proposal by the FAA to keep bird strikes data secret). Currently data.gov provides only full-text and category-based search.&lt;br /&gt;&lt;li&gt;It bridges data silos by allowing users to make queries and connect data in meaningful ways across datasets. For example, a query that correlates health care, environment, and census data.&lt;br /&gt;&lt;li&gt;It provides powerful visualizations of the data through Semantic Web meshups.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-8275359226714308310?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=8275359226714308310' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8275359226714308310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8275359226714308310'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/06/publishing-government-data-to-linked.html' title='Publishing Government Data to the Linked Open Data (LOD) Cloud'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vFn-XW2q8mg/SjHZD1P_HbI/AAAAAAAAAFo/3MoMNebhoWI/s72-c/lod-datasets_2009-03-05.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2113529508868683117</id><published>2009-06-02T17:29:00.005-04:00</published><updated>2010-03-21T09:18:42.204-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S1000D'/><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><category scheme='http://www.blogger.com/atom/ns#' term='SCORM'/><title type='text'>S1000D and SCORM Integration</title><content type='html'>This is a presentation I gave at the DocTrain Boston 07 conference on how to reduce product lifecycle costs by integrating the S1000D and SCORM specifications. &lt;br /&gt;&lt;br /&gt;S1000D is the International Specification for Technical Publications utilizing a Common Source Database (CSDB). Based on open XML standards, the latest issue (4.0) has been developed by the AeroSpace and Defence Industries Association of Europe (ASD), the Aerospace Industries Association of America (AIA), and the Air Transport Association of America (ATA).&lt;br /&gt;&lt;br /&gt;Sharable Content Object Reference Model (SCORM) is a specification for online learning content developed by the Advanced Distributed Learning (ADL) Initiative.&lt;br /&gt;&lt;br /&gt;The presentation has been updated to reflect the addition of SCORM support in S1000D 4.0.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1432328"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/jamoussou/s1000d-and-scorm-integration?type=presentation" title="S1000D and SCORM Integration"&gt;S1000D and SCORM Integration&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=s1000d-scorm-integration-090513213220-phpapp02&amp;stripped_title=s1000d-and-scorm-integration" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=s1000d-scorm-integration-090513213220-phpapp02&amp;stripped_title=s1000d-and-scorm-integration" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;OpenOffice presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/jamoussou"&gt;Joel Amoussou&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2113529508868683117?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2113529508868683117' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2113529508868683117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2113529508868683117'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/06/s1000d-and-scorm-integration.html' title='S1000D and SCORM Integration'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2103573221292079397</id><published>2009-05-19T22:31:00.012-04:00</published><updated>2010-03-21T09:20:05.270-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XProc'/><category scheme='http://www.blogger.com/atom/ns#' term='XQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>Why XProc Rocks</title><content type='html'>These are exciting times to be a technologist in the news publishing business. The industry is going through fundamental changes driven by the current economic downturn. Innovation has become an imperative. Examples of recent innovations include news content APIs (newspaper as a Platform), specialized desktop news readers, the ability to publish to an increasing number of mobile devices (Kindle, iPhone, etc.), and migrating news content to the Semantic Web and Linked Open Data (LOD) cloud.&lt;br /&gt;&lt;br /&gt;The result is that news publishing workflows are getting more complex. The following is an example of what can be expected from such a workflow:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Retrieve content from a native XML database such as Exist using XQuery and from a MySQL database and combine the result as an XML document.&lt;br /&gt;&lt;li&gt;Expand XIncludes and other content references in the XML.&lt;br /&gt;&lt;li&gt;Apply various processing to the XML depending on the content type.&lt;br /&gt;&lt;li&gt;Make a REST call to data.gov and recovery.gov to retrieve some government published data in XML for a graphical mashup visualization of the data.&lt;br /&gt;&lt;li&gt;Transform the XML into XHTML+RDFa for consumption by Yahoo's SearchMonkey and the recently unveiled Google Rich Snippets.&lt;br /&gt;&lt;li&gt;Transform the XML into RDF/XML and validate the result using the Jena command line ARP RDF parser. The RDF/XML output will provide an RDF dump for RDF crawlers and will be searched via a SPARQL endpoint.&lt;br /&gt;&lt;li&gt;Transform the XML into an Amazon Kindle-friendly format such as Text.&lt;br /&gt;&lt;li&gt;Publish the content as a PDF document with a print layout (e.g. header, footer, multi-column, pagination, etc.).&lt;br /&gt;&lt;li&gt;Transform the XML into a NewsML document and validate the result against the NewsML XML Schema and an ISO Schematron schema.&lt;br /&gt;&lt;li&gt;Generate an Atom feed containing NewsML elements and validate the result using NVDL (Namespace-based Validation Dispatching Language). NVDL is required here because the Atom feed will contain nodes that will be validated against the Atom RelaxNG schema as well as nodes that will be validated against the NewsML XML schema.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;As you can see, this publishing workflow is XML document-centric. If you are a Java developer, your first instinct might be to automate all those processing steps with an Ant build file. There is now a better alternative and it is called XProc (an XML Pipeline Language) currently a W3C candidate recommendation. Here are some reasons why XProc is a superior alternative when dealing with an XML document-centric publishing workflow:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;With XProc, XML documents are first-class citizens. Java objects are first-class citizens in Ant. In fact, using Ant to automate a complex XML document-centric publishing workflow can quickly lead to spaghetti code. &lt;br /&gt;&lt;li&gt;XProc allows you to add, delete, rename, replace, filter, split, wrap, unwrap, compare, insert, and conditionally process nodes in XML documents by addressing these nodes using XPath.&lt;br /&gt;&lt;li&gt;XProc comes with built-in steps for XML processing such as p:xquery, p:xinclude, p:xslt, p:validate-with-xml-schema, p:validate-with-relax-ng, p:validate-with-schematron, p:xsl-formatter, and p:http-request for making REST calls.&lt;br /&gt;&lt;li&gt;XProc is declarative, and programming language and platform neutral. For example, work is underway for an &lt;a target="_new" href="http://code.google.com/p/xprocxq/"&gt;XQuery implementation&lt;/a&gt; for the Exist database. Note that step 1. above can be implemented with the SQL extension function provided by Exist for retrieving data from relational databases using JDBC.&lt;br /&gt;&lt;li&gt;XProc is extensible, so you can add custom steps. For example the &lt;a target="_new" href="http://xmlcalabash.com/"&gt;XML Calabash&lt;/a&gt; XProc implementation provides extension steps such as cx:nvdl and cx:unzip.&lt;br /&gt;&lt;li&gt;XProc provides exception handlers which are essential for any complex workflow.&lt;br /&gt;&lt;li&gt;XProc pipelines are amenable to streaming.&lt;br /&gt;&lt;li&gt;XProc can simplify the design, documentation, and maintenance of very complex publishing workflows. Since XProc is in XML format, one can envision a visual designer for building XProc pipelines or a tool (such as Graphviz) to visualize XProc documents in the form of processing diagrams.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;There are other pipeline technologies that can be useful as well, particularly if you're building mashup applications. &lt;a target="_new" href="http://pipes.yahoo.com/pipes/"&gt;Yahoo Pipes&lt;/a&gt; is a good choice for combining feeds from various sources, manipulating them as needed, and outputting RSS, JSON, KML, and other formats. And if you are into Semantic Web meshups, &lt;a target="_new" href="http://pipes.deri.org/"&gt;DERI Pipes&lt;/a&gt; provides support for RDF, OWL, and SPARQL queries. DERI Pipes  works as a command line tool and can be hooked into an XProc pipeline with the XProc built-in p:exec step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2103573221292079397?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2103573221292079397' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2103573221292079397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2103573221292079397'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/05/why-xproc-rocks.html' title='Why XProc Rocks'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3614502699655252120</id><published>2009-04-26T19:34:00.009-04:00</published><updated>2010-03-21T09:20:18.410-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Thoughts on SOAP vs. REST</title><content type='html'>REST is now an increasingly popular architectural style for building web services. The question for developers is: should REST always be the preferred mechanism for building web services or is SOAP still relevant for certain use cases? &lt;br /&gt;&lt;br /&gt;In my opinion, REST is usually a no-brainer when you are exposing a public API over the internet and all you need is basic CRUD operations on your data. However, when designing a truly RESTful web services interface (as opposed to some HTTP API), care must be taken to adhere to key principles:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Everything is a URI addressable resource&lt;br /&gt;&lt;li&gt;Representations (media types such as XHTML, JSON, RDF, and Atom) describe resources and use links to describe the relationships between those resources&lt;br /&gt;&lt;li&gt;These links drive changes in application state (hence Representational State Transfer or REST)&lt;br /&gt;&lt;li&gt;The only type that is significant for clients is the representation media type&lt;br /&gt;&lt;li&gt;URI templates as opposed to fixed or hard coded resource names&lt;br /&gt;&lt;li&gt;Generic HTTP methods (no RPC-style overloaded POST)&lt;br /&gt;&lt;li&gt;Statelessness (the server keeps no state information)&lt;br /&gt;&lt;li&gt;Cacheability.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Adherence to these principles is what enables massive scalability. One good place to start is the AtomPub protocol which embodies these principles. In the Java space, the recently approved Java API for RESTful Web Services (JAX-RS) specification greatly simplifies REST development with simple annotated POJOs.&lt;br /&gt;&lt;br /&gt;Within the enterprise and in B2B scenarios, SOAP (and its WS-* family of specifications) is still very attractive. This is not to say that REST is not enterprise ready. In fact, there are known successful RESTful implementations in mission critical applications such as banking. However, enterprise applications can have specific requirements in the areas of security, reliable messaging, business process execution, and transactions for which SOAP, the WS-* specifications, and supporting tools provide solutions.&lt;br /&gt;&lt;br /&gt;These specifications include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;WS-Addressing&lt;br /&gt;&lt;li&gt;WS-Policy&lt;br /&gt;&lt;li&gt;WS-ReliableMessaging&lt;br /&gt;&lt;li&gt;WS-SecureConversation&lt;br /&gt;&lt;li&gt;WS-Security&lt;br /&gt;&lt;li&gt;WS-SecurityPolicy&lt;br /&gt;&lt;li&gt;WS-Trust&lt;br /&gt;&lt;li&gt;WS-AtomicTransaction&lt;br /&gt;&lt;li&gt;WS-BPEL (Business Process Execution Language)&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;RESTafarians will tell you that REST can handle these requirements as well. For example, RESTful transactions can be implemented by treating the transactions themselves as URI addressable REST resources. This approach can work, but is certainly not trivial to implement. In fact, it is often difficult to support some of these requirements without resorting to overloaded POST, which works more like SOAP and is a clear departure from a pure REST architectural style.&lt;br /&gt;&lt;br /&gt;One characteristic of enterprise SOA is the need to expose pieces of application logic (as opposed to data) as web services and this can be more amenable to a SOAP-based approach. Existing SOAP web services toolkits such as Apache CXF provide support for WS-* specifications. More importantly, they greatly simplify the development process by providing various tools such as the ability to create new services with a contract-first approach where JAX-WS annotated services and server stubs can be automatically generated from an existing WSDL.&lt;br /&gt;&lt;br /&gt;Furthermore, during the last ten years, organizations have made significant investments in SOAP-based infrastructure such as Enterprise Service Buses (ESBs) and Business Process Management (BPM) software based on WS-BPEL. The Content Management Interoperability Services (CMIS) specification which is currently being developed by OASIS specifies protocol bindings for both SOAP and AtomPub. The SOAP binding will allow organizations to leverage those investments in building interoperable content repositories.&lt;br /&gt;&lt;br /&gt;Architecting an SOA solution is a balancing act. It's important not to dismiss any particular approach too soon. Both SOAP and REST should carefully be considered for new web services projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3614502699655252120?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3614502699655252120' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3614502699655252120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3614502699655252120'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/04/thoughts-on-soap-vs-rest.html' title='Thoughts on SOAP vs. REST'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4460289028673118501</id><published>2009-03-26T19:20:00.007-04:00</published><updated>2010-03-21T09:20:35.256-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Media'/><title type='text'>News Content APIs: Uniform Access or Content Silos</title><content type='html'>The first generation of online news content applications was designed for consumption by humans. With the massive amounts of online content now available, machine processable structured data will be the key to findability and relevance. Major news organizations like the New York Times (NYT), the National Public Radio (NPR), and The Guardian have recently opened up their content repositories through APIs. &lt;br /&gt;&lt;br /&gt;These APIs have generated a lot of excitement in the content developers community and are certainly a significant step forward in the evolution of how news content is processed and consumed on the web. The APIs allow developers to create new interesting mashup applications. An example of such a mashup is a map of the United States showing how the stimulus money is being spent by municipalities across the country with hotspots to local newspaper articles about corruption investigations related to the spending. The stimulus spending data will be provided by the Stimulus Feed on the recovery.gov site as specified by the &lt;a target="_new" href="http://www.recovery.gov/files/Initial%20Recovery%20Act%20Implementing%20Guidance.pdf"&gt;"Initial Implementation Guidance for the American Recovery and Reinvestment Act"&lt;/a&gt; document. This is certainly an example of mashup that US tax payers will like.&lt;br /&gt;&lt;br /&gt;For news organizations, these APIs represent an opportunity to grow their ad network by pushing their content to more sites on the web. That's the idea behind the recent release of The &lt;a target="_new" href="http://uk.techcrunch.com/2009/03/10/the-guardian-launches-open-api-for-all-content-but-they-still-control-the-ads/"&gt;Guardian Open Platform API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;APIs and Content Silos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The emerging news content APIs typically offer a REST or SOAP web services interface and return content in XML, JSON, or ATOM feeds. However, despite the excitement that they generate, these APIs can quickly turn into content silos for the following reasons:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The structure of the content is often based on a proprietary schema. This introduces several potential interoperability issues for API users in terms of content structure, content types, and semantics. &lt;br /&gt;&lt;li&gt;It is not trivial to link content across APIs&lt;br /&gt;&lt;li&gt;Each API provides its own query syntax. There is a need for universal data browsers and a query language to read, navigate, crawl, and query structured content from different sources.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;XML, XSD, XSLT, and XQuery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Migrating content from HTML to XML (so called document-oriented XML) has many benefits. XSLT enables media-independent publishing (single sourcing) to multiple devices such as  Amazon's Kindle e-reader and  "smart phones". With XQuery, sophisticated contextualized database-like queries can be performed, turning the content itself into a database. In addition, XQuery allows the dynamic assembly of content where new compound documents can be constructed on the fly from multiple documents and external data sources. This allows publishers to repurpose content into new information products as needed to satisfy new customer demands and market opportunities. &lt;br /&gt;&lt;br /&gt;However XSD,  XSLT, and XQuery operate at the syntax level. The next level up in the content technology stack is semantics and reasoning and that's where RDF, OWL, and SPARQL come into play. To illustrate the issue, consider three news organizations, each with their own XML Schema for describing news articles. To describe the author of an article, the first news organization uses the &amp;lt;creator&gt; element, the second the &amp;lt;byline&gt; element, and the third the &amp;lt;author&gt; element. All of these three distinct element names have exactly the same meaning. Using an OWL ontology, we can establish that these three terms are equivalent.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Semantic Web and Linked Data to the Rescue&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Semantic web technologies such as RDF, OWL, and SPARQL can help us close the semantic gap and also open up new opportunities for publishers. Furthermore, with the decline in ad revenues, news organizations are now considering charging users for accessing content online. Semantic web technologies can enrich content by providing new ways to discover and explore content based on user context and interests. An interesting example is a mashup application built by Zemanta called &lt;a target="_new" href="http://labs.zemanta.com/guardian/"&gt;Guardian topic researchr&lt;/a&gt; which extract entities (people, places, organizations, etc.) from The Guardian Open Platform API query results and allows readers to explore these entities further. In addition, the recently unveiled &lt;a target="_new" href="http://www.ft.com/cms/s/0/ae0a5d4c-14b8-11de-8cd1-0000779fd2ac.html?nclick_check=1"&gt;Newssift&lt;/a&gt; site by the Financial Times is an indication that the industry is starting to pay attention to the benefits of "semantic search" as opposed to keyword search.&lt;br /&gt;&lt;br /&gt;The rest of this post outlines some practical steps for migrating news content to the Semantic Web. For existing news content APIs, an interim solution is to create Semantic Web wrappers around these APIs (more on that later). The long term objective however should be to fully embrace the Semantic Web and adopt Linked Data principles in publishing news content.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Adopt the International Press Telecommunication Council (IPTC) News Architecture (NAR) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The main reason for adopting the NAR is interoperability at the content structure, content types, and semantic levels. Imagine a mashup developer trying to integrate news content from three different news organizations. In addition to using three different element names (&amp;lt;creator&gt;, &amp;lt;byline&gt;, and &amp;lt;author&gt;) to describe the same concept, these three organizations use completely different XML Schemas to describe the structure and types of their respective news content. That can lead to a data mapping nightmare for the mashup developer and the problem will only get worse as the number of news sources increases.&lt;br /&gt;&lt;br /&gt;The NAR content model defines four high level elements: newsItem, packageItem, conceptItem, and knowledgeItem. You don't have to manage your content internally using the XML structure defined by the NAR. However, you should be able to map and export your content to the NAR as a delivery format. If you have fields in your content repository that do not map to the NAR structure, then you should extend the standard NAR XML Schema using the appropriate XML Schema extension mechanism that allows you to clearly identify your extension elements in your own XML namespace. Provide a mechansim such as &lt;a target="_new" href="http://www.w3.org/2001/tag/doc/httpRange-14/2007-05-31/HttpRange-14"&gt;dereferenceable URIs&lt;/a&gt; to allows users to obtain the meaning of these extensions elements.&lt;br /&gt;&lt;br /&gt;The same logic applies to the news taxonomy that you use. Adopting the IPTC News Codes which specified 1300 terms used for categorizing news content will greatly facilitate interoperability as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Adopt or Create a News Ontology&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Several news ontologies in RDFS or OWL format are now available. The IPTC is in the process of creating an IPTC news ontology in OWL format. To facilitate semantic interoperability, news organizations should use this ontology when it becomes available.  In mapping XML Schemas into OWL, ontology best practices should be followed. For example, if mapped automatically, container elements in the XML Schema could generate blank nodes in the RDF graph. However, blank nodes cannot be used for external RDF links and are not recommended for Linked Data applications. Also, RDF reification, RDF containers, and RDF collections are not SPARQL-friendly and should be avoided. &lt;br /&gt;&lt;br /&gt;While creating the news ontology, you should reuse or link to other existing ontologies such as FOAF and Dublin Core using OWL elements like owl:equivalentProperty, owl:equivalentClass, rdfs:subClassOf, or rdfs:subPropertyOf.&lt;br /&gt;&lt;br /&gt;Similarly, existing taxonomies should be mapped to an RDF compatible format using the SKOS specification. This makes it possible to use an owl:Restriction to constrain the value of a property in the OWL ontology to be an skos:Concept or skos:ConceptScheme.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Generate RDF Data&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Assign a dereferenceable HTTP URI for each news item and use content negotiation to provide both an XHTML and an RDF/XML representation of the resource. When the resource is requested, an HTTP 303 See Other redirect is used to serve XHTML or RDF/XML depending on whether the browser's Accept header is text/html or application/rdf+xml. The W3C &lt;a target="_new" href="http://www.w3.org/TR/2008/NOTE-swbp-vocab-pub-20080828/"&gt;Best Practice Recipes for Publishing RDF Vocabularies&lt;/a&gt; explains how dereferenceale URIs and content negotiation work in the Semantic Web.&lt;br /&gt;&lt;br /&gt;The RDF data can be generated using a variety of techniques. For example, you can use an XSLT-based RDFizer to extract RDF/XML from news item already marked up in XML. There are also RDFizers for relational databases. Entity extraction tools like &lt;a target="_new" href="http://www.opencalais.com/"&gt;Open Calais&lt;/a&gt; can also be useful particularly for extracting RDF metadata from legacy news items available in HTML format. &lt;br /&gt;&lt;br /&gt;Link the RDF data to external data sources such as DBPedia and Geonames by using RDF links from existing vocabularies such as FOAF. For example, an article about US Treasury Secretary Timothy Geithner can use foaf:base_near to link the news item to a resource describing Washington, DC on &lt;a target="new" href="http://dbpedia.org/About"&gt;DBPedia&lt;/a&gt;. If there is an HTTP URI that describes the same resource in another data source, then use owl:sameAs links to link the two resources. For example, if a news item is about Timothy Geithner, then you can use owl:sameAs to link to Timothy Geithner's data page on DBPedia. An RDF browser like &lt;a target="_new" href="http://www.w3.org/2005/ajar/tab"&gt;Tabulator&lt;/a&gt; can traverse those links and help the reader explore more information about topics of interest.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Expose a SPARQL Endpoint&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use a &lt;a target="_new" href="http://sw.deri.org/2007/07/sitemapextension/"&gt;Semantic Web Crawler&lt;/a&gt; (an extension to the Sitemap Protocol) to specify the location of the SPARQL endpoint or an RDF dump for Semantic Web clients and crawlers. &lt;a target="_new" href="http://virtuoso.openlinksw.com/wiki/main/Main/"&gt;OpenLink Virtuoso&lt;/a&gt; is an RDF store that also provides a SPARQL endpoint.&lt;br /&gt;&lt;br /&gt;Provide a user interface for performing semantic searches. Expose the RDF metadata as facets for browsing the news items.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Provide a Semantic Web Wrapper for existing APIs. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A wrapper provides a deferenceable URI for every news item available through an existing news content API. When an RDF browser requests the news item, the Semantic Web wrapper translates the request into an API call, transforms the response from XML into RDF, and send it back to the Semantic Web client. The &lt;a href="http://www4.wiwiss.fu-berlin.de/bizer/bookmashup/index.html" target="_new"&gt;RDF Book Mashup&lt;/a&gt; is an example of how a Semantic Web Wrapper can be used to integrate publicly available APIs from Amazon, Google, and Yahoo into the Semantic Web.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Semantic Web is still an obscure topic in the mainstream developers community. I hope I've outlined few practical steps you can take now to take advantage of the new Web of Linked Data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4460289028673118501?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4460289028673118501' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4460289028673118501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4460289028673118501'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/03/news-content-apis-uniform-access-or.html' title='News Content APIs: Uniform Access or Content Silos'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3778217214071179766</id><published>2009-02-21T09:01:00.011-05:00</published><updated>2010-03-21T09:20:59.923-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><title type='text'>TOGAF 9: The missing link between IT and the business</title><content type='html'>In a recent and famous &lt;a target='new' href='http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html'&gt;blog&lt;/a&gt; about the death of SOA, Anne Thomas Manes wrote:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;After investing millions, IT systems are no better than before. In many organizations, things are worse: costs are higher, projects take longer, and systems are more fragile than ever. The people holding the purse strings have had enough. With the tight budgets of 2009, most organizations have cut funding for their SOA initiatives.&lt;br /&gt;...&lt;br /&gt;The small select group of organizations that has seen spectacular gains from SOA did so by treating it as an agent of transformation. In each of these success stories, SOA was just one aspect of the transformation effort. And here’s the secret to success: SOA needs to be part of something bigger. If it isn’t, then you need to ask yourself why you’ve been doing it.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;In my opinion, that "something bigger" that Anne is referring to is Enterprise Architecture (EA), the missing link between IT and the business. There are several reasons why IT projects fail to deliver on their promise. The lack of EA expertise and practice is certainly one of them. If you ask a group of developers how they will go about architecting an SOA solution, the typical answer that you will hear is the use of some kind of agile or UML-based methodology for gathering the requirements and modelling the application. While these steps are required in any software development project, the lack of a methodology and governance framework for aligning IT with the overarching business context, vision, and drivers can lead to chaos and total failure. In the case of SOA, this situation creates a phenomenon known as JBOWS (Just a Bunch of Web Services) Architecture. &lt;br /&gt;&lt;br /&gt;For people who are interested or responsible for EA in their organizations, this month has seen the release of two interesting publications:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;"97 Things Every Software Architect Should Know: Collective Wisdom from the Experts" by &lt;a target='new' href='http://oreilly.com/catalog/9780596522698/#top'&gt;O'Reilly Media&lt;/a&gt;&lt;br /&gt;&lt;li&gt;TOGAF 9 by the &lt;a href='http://www.opengroup.org/' target='new'&gt;Open Group&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;In the first publication, several software architects share their experiences and lessons learned from the trenches. One of those "97 things" is entitled "Architecting is about balancing". I couldn't agree more. The wisdom of these experts will be a great asset to any software architect.&lt;br /&gt;&lt;br /&gt;TOGAF 9 is an ambitious project by the Open Group to create a set of standardized semantics, methodology, and processes in the field of EA. IT professionals have been told repeatedly that they need to become business savvy in order to be more effective to their organizations. TOGAF 9 help them bridge the gap. The diagram below from the TOGAF 9 documentation provides an overview (click on the image to enlarge).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vFn-XW2q8mg/SaALAdYYXMI/AAAAAAAAADQ/DwTYXxSAmJs/s1600-h/01_structure.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 260px;" src="http://4.bp.blogspot.com/_vFn-XW2q8mg/SaALAdYYXMI/AAAAAAAAADQ/DwTYXxSAmJs/s320/01_structure.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5305252463557237954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TOGAF 9 has a modular structure which permits an incremental approach to implementation and allows different stakeholders to focus on their respective concerns. The Architecture Development Method (ADM) describes a method for developing an enterprise architecture and is the core of TOGAF. The diagram below from the TOGAF 9 documentation shows the different phases of the ADM (click on the image to enlarge)..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vFn-XW2q8mg/SaALtTxE8UI/AAAAAAAAADY/QtaU3FK-2xw/s1600-h/19_adm_iteration.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 274px; height: 320px;" src="http://4.bp.blogspot.com/_vFn-XW2q8mg/SaALtTxE8UI/AAAAAAAAADY/QtaU3FK-2xw/s320/19_adm_iteration.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5305253234070581570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Content Framework specifies deliverables and artifacts for each architectural building block. These artifacts represent the output of the ADM. The specification provides guidance on how the ADM can be applied to SOA and enterprise security. TOGAF 9 also addresses the important issues of architecture partitioning and architecture repository.&lt;br /&gt;&lt;br /&gt;Finally, the Open Group has been working on the adoption of an open EA modeling standard called ArchiMate. ArchiMate provides a higher level view of EA when compared to modeling standards such as BPMN and UML. It can be used to depict different layers of EA including business processes, applications, and technology in a way that can be consumed by non-technical business stakeholders. A sample of an ArchiMate enterprise view of a hospital can be found &lt;a href="http://earchpal.files.wordpress.com/2008/08/archimate-demo.jpg" target="new"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3778217214071179766?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3778217214071179766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3778217214071179766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3778217214071179766'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/02/togaf-9-missing-link-between-it-and.html' title='TOGAF 9: The missing link between IT and the business'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vFn-XW2q8mg/SaALAdYYXMI/AAAAAAAAADQ/DwTYXxSAmJs/s72-c/01_structure.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5366734663177878097</id><published>2009-01-24T14:34:00.007-05:00</published><updated>2010-03-21T09:21:34.004-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>In Defense of XSLT</title><content type='html'>I recently had a conversation with a Java programmer about why he doesn't like XSLT. The following describes his objections and how I handled them as an XSLT salesman.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;XSLT is hard to read and debug&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a matter of using the right tool for the job. While an Eclipse plug-in like EclipseXSLT is better than a simple text editor, using a full blown XML IDE like OxygenXML can greatly increase productivity.&lt;br /&gt;&lt;br /&gt;OxygenXML can help you navigate both the input XML document (XML input document view) and the XSLT transform (XSLT template view). The contextual XPath and XSLT content assistants are very helpful given the large number of XSLT 2.0 elements and XPath 2.0 functions now available. The XSLT refactoring feature allows you to turn a selection into a named template or an included XSLT fragment. Finally, the XSLT debugging perspective allows execution with breakpoints as well as an XSLT call stack and XPath watch views and many other goodies.&lt;br /&gt;&lt;br /&gt;In addition, the XSLT 2.0 specification itself defines constructs to facilitate the debugging process. You can use the &lt;span style="font-style:italic;"&gt;select&lt;/span&gt; attribute (an XPath expression) of the &amp;lt;xsl:message&gt; instruction or the content of &amp;lt;xsl:message&gt; as a sequence constructor to output useful information to standard output or even to a log file. The &amp;lt;xsl:comment&gt; instruction and the XPath 2.0 trace() function can be helpful in debugging as well. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;XSLT does not support the reusability and maintainability of code&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In addition to XSLT named templates inherited from XSLT 1.0, you can now create your own custom functions in XSLT 2.0. While the content models of both &amp;lt;xsl:template&gt; and &amp;lt;xsl:function&gt; are the same, &amp;lt;xsl:function&gt; is preferred for computing new values and selecting nodes (because functions are called from XPath expressions), while &amp;lt;xsl:template&gt; is preferred for constructing new nodes. The &lt;span style="font-style:italic;"&gt;“as”&lt;/span&gt; attribute which can be specified on &amp;lt;xsl:template&gt;, &amp;lt;xsl:function&gt;, and their &amp;lt;xsl:param&gt; children allows you to constrain the type of returned value and input parameters.&lt;br /&gt;&lt;br /&gt;For reusability and maintainability, the &amp;lt;xsl:include&gt;, &amp;lt;xsl:import&gt;, and &amp;lt;xsl:apply-imports&gt; elements inherited from XSLT 1.0 are still available. When used properly, &amp;lt;xsl:import&gt; provides capabilities that are similar to inheritance in object-oriented languages like Java. &amp;lt;xsl:apply-imports&gt; and the XSLT 2.0 &amp;lt;xsl:next-match&gt; instructions are reminiscent of a call to super() in Java. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;There is no way to integrate XSLT with my Java libraries&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With Saxon, you can represent a Java class as the namespace URI of a function and you can call Java methods and constructors directly from your XSLT transform. This allows you to reuse existing pieces of application logic build in Java without rewriting them in XSLT.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;There is no type checking and no way to verify that the result of a transformation is valid against a schema&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Again, this argument is no longer valid with XSLT 2.0. You can now validate both the input and output by using a schema-aware XSLT processor. I strongly recommend the schema-aware version of &lt;a href='http://www.saxonica.com' target='_new'&gt;Saxon&lt;/a&gt;. This allows you to root out errors and correct bugs early. In addition to the built-in XML Schema types such as xs:decimal and xs:dateTime, you can define custom types in an XSD. You can then write a template that matches all elements of a certain type. XSD type hierarchies and substitution groups are fully supported as well.&lt;br /&gt;&lt;br /&gt;After schema validation, a Post Schema Validation Infoset (PSVI) is generated and each node is assigned a typed value (which can be obtained using the data() function) and a type annotation (which is the schema type used to validate the node). To ensure that a string has a given type annotation, constructor functions are available for built-in and custom types such as in xs:date(“2009-01-24”). &lt;br /&gt;&lt;br /&gt;Saxon supports “optimistic static type-checking”. The following is an excerpt from the Saxon FAQ:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;“Saxon does not do static type-checking in the sense that the term is used in the W3C language specifications (this refers to pessimistic type checking, in which any construct that might fail at run-time is rejected at compile time). This is an optional feature of the W3C specifications. Saxon does however perform optimistic static analysis of queries and stylesheets, in which an error is reported only for constructions that must always fail at run-time. The information derived from this static analysis is also used to optimize the run-time code."&lt;/blockquote&gt;&lt;br /&gt;Unlike Java, XSLT 2.0 lacks a try/catch feature. However you can use the handy “castable as” and “instance of” operators to detect programming errors as well as data errors in the input document. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;With XSLT, it is "run and pray": there is no unit and functional testing framework like in Java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Automated unit and functional testing are essential in agile software development. Type checking (or schema-aware XSLT) can help you reduce the number of unit tests needed to fully test your XSLT transform but may not be enough to detect all errors such as those related to business rules violations in the output.&lt;br /&gt;&lt;br /&gt;Unit testing is performed by testing individual XSLT functions and templates. You can try Jeni Tennison's &lt;a href="http://code.google.com/p/xspec/" target="_new"&gt;XSpec&lt;/a&gt; framework  which is inspired by the Ruby RSpec framework itself based on a Behavior Driven Development (BDD) approach. &lt;br /&gt;&lt;br /&gt;Functional testing consists in testing whole outputs of the XSLT transform. One way of doing this is to run a Schematron schema which contains XPath 2.0-based assertions against the output of the XSLT transform. Since the Schematron schema validation process is itself based on XSLT, you can chain all these transformations together with a build tool like Ant which produces an HTML report with friendly diagnostic messages. With XML Schema 1.1, you will be able to build these assertions directly into your schema, although you will have less control other the diagnostic messages that are produced by the XSD validator.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In a world marked up in XML, XSLT 2.0 is a very powerful language available to developers. However, to take full advantage of the language it is important to use the right tools and take the time to explore the full capabilities of the language particularly its code reuse and type checking features. Finally, to bring XSLT into the realm of agile software development, unit and functional testing should become an integrated part of the XSLT development process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5366734663177878097?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5366734663177878097' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5366734663177878097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5366734663177878097'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2009/01/in-defense-of-xslt.html' title='In Defense of XSLT'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7039251005416483016</id><published>2008-12-29T20:18:00.015-05:00</published><updated>2010-03-21T09:21:53.684-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Media'/><title type='text'>From Web 2.0 to the Semantic Web: Bridging the Gap in the News and Media Industry</title><content type='html'>The news and media industry is going through fundamental changes. This transformation is driven by the current economic downturn and the emergence of the web as the new platform for creating and publishing content. The decline in ad revenues has forced some media companies to cancel their print publications (e.g. PC Magazine and the Christian Science Monitor). Others such as Forbes Media are consolidating their online and editorial groups into a single entity.  &lt;br /&gt;&lt;br /&gt;What are the opportunities and challenges of the Semantic Web (sometimes referred to as Web 3.0) for the industry and how can these companies embrace and extend the new web of &lt;a href="http://en.wikipedia.org/wiki/Linked_Data" target="_new"&gt;Linked Data&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Widgets and APIs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Media companies are looking for ways to gain a competitive advantage from their web offerings. In addition to Web 2.0 features like blogs and RSS feeds, major news organizations such as the New York Times (NYT) and the National Pubic Radio (NPR) are opening their content to external developers through APIs. These APIs allow developers to mash-up content in new ways limited only by their own imagination. The ultimate goal is to drive ad revenues by pushing content to places like social networking sites and blogs where readers “hang out” online. Another interesting example is the Times Widget (from the NYT) which allows readers to insert NYT content such as news headlines, stock quotes, and recipes on their personal web pages or blogs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Beyond Web 2.0: the Semantic Web&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Today's end users obtain information from a variety of sources such as online newspapers, blogs, Wikipedia, YouTube videos, Flickr photos, cartoons, animations, and social networking sites such as Facebook and Twitter. I personally get some of the news I read from the people I follow on &lt;a href="http://twitter.com/jamoussou" target="_new"&gt;Twitter&lt;/a&gt; (including political cartoons at &lt;a href="http://twitter.com/dcagle" target="_new"&gt;http://twitter.com/dcagle&lt;/a&gt;). The challenge is to integrate all these sources of information into a seamless search and browsing experience for readers. Publishers are starting to realize the importance of this integration as illustrated by the recently unveiled "Times Extra" feature from the NYT.&lt;br /&gt;&lt;br /&gt;The key to this integration is metadata and this is where Semantic Web technologies such as RDF, OWL, and SPARQL have an important role to play in presenting massive amounts of content to end users in a way that is compelling. Semantic search and browsing as well as inference capabilities can help publishers in their effort to attract and retain readers and boost ad revenues.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;News and Media Industry Metadata Standards&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Established in 1965, the International Press Telecommunications Council (IPTC) is a consortium of news agencies and publishers including the Associated Press, the NYT, Reuters, and the Dow Jones Company. The IPTC maintains and publishes a set of news exchange and metadata standards for media types such as text, photos, graphics, and streaming media like audio and video. This includes:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;NITF which defines the content and structure of news articles&lt;br /&gt;&lt;li&gt;NewsML 1 for the packaging and exchange of multimedia news&lt;br /&gt;&lt;li&gt;NewsML-G2, the latest standard for the exchange of all kinds of media types&lt;br /&gt;&lt;li&gt;EventsML-G2 for news events&lt;br /&gt;&lt;li&gt;SportsML for sport data&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;These standards are all based on XML and use XML Schema Definitions (XSDs) to describe the structure and content of the media types. In addition, IPTC defines a taxonomy for news items called NewsCodes as well as a Photo Metadata Standard based on Adobe's XMP specification.&lt;br /&gt;&lt;br /&gt;Another interesting standard in the news and media industry is the Publishing Requirements for Industry Standard Metadata (PRISM) specification. Also based on XML, PRISM is more applicable to magazines and journals and is compatible with RDF. There is a certain degree of overlap between PRISM and the IPTC news metadata standards. Media companies that have adopted these standards are well positioned to bridge the gap to the Semantic Web.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;From XML/XSD to RDF/OWL &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The W3C Semantic Web Activity and the Semantic Web community have been working on a number of specifications and tools to facilitate the transition to the Semantic Web. The W3C Gleaning Resource Descriptions from Dialects of Languages (GRDDL) specification defines a method for using XSLT to extract RDF statements from existing XML documents. For example, using GRDDL,  a news organization would be able to generate RDF from content items marked up in NITF or NewsML.&lt;br /&gt;&lt;br /&gt;The recently approved &lt;a href="http://en.wikipedia.org/wiki/RDFa" target="_new"&gt;RDFa&lt;/a&gt; W3C specification allows publishers to get their content ready for the Semantic Web by adding extension attributes to XHTML content to capture semantic information based on Dublin Core or FOAF for example.&lt;br /&gt;&lt;br /&gt;The W3C Simple Knowledge Organization System (SKOS) is an application of RDF that can be used to represent existing taxonomies and classification schemes (such as the IPTC NewsCodes) in a way that is compatible with the Semantic Web. SPARQL is a query language for RDF that is supported in Semantic Web toolkits such as &lt;a href="http://jena.sourceforge.net/" target="_new"&gt;Jena&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are also tools that can be used to derive an OWL ontology from an existing XSD. This transformations can be straightforward if the XSD was designed to be compatible with RDF. As an example, an OWL ontology can be derived from the IPTC's NewsML-G2 XSDs. Once created, new ontologies can be linked to existing ontologies such as Dublin Core, FOAF, and DBPedia as described by Tim Berner Lee in his vision of &lt;a href="http://www.w3.org/DesignIssues/LinkedData.html" target="_new"&gt;Linked Data&lt;/a&gt;. Other relevant ontologies for the news and media industry include MPEG-7, the Core Ontology for Multimedia (COMM), and Geonames.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;From Web 2.0 Tagging to Semantic Annotations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To facilitate the transition of the industry to the Semantic Web, it will be important to design content management systems (CMS) interfaces that make it easy for content contributors to add semantic annotations to their content. These systems certainly have a lot to learn from Web 2.0 tagging interfaces such as Flickr clustering and &lt;a href='http://www.flickr.com/groups/api/discuss/72157594497877875/' target='_new'&gt;machine tags&lt;/a&gt;. However the complexity of content in the news and media industry demands more sophisticated annotation capabilities than those that are available to the masses on YouTube and Flickr. Therefore full support for Semantic Web standards like RDF, OWL, SKOS, and SPARQL will be expected.&lt;br /&gt;&lt;br /&gt;An interesting application in this space is the Thompson Reuters &lt;a href="http://www.opencalais.com/" target="_new"&gt;Calais&lt;/a&gt; application which allows content publishers to automatically extract RDF-based metadata on entities such as people, places, facts, and events. &lt;a href="http://www.linkedfacts.com/" target="_new"&gt;LinkedFacts.com&lt;/a&gt; is an example of a semantic news search application powered by Calais.&lt;br /&gt;&lt;br /&gt;Calais has been &lt;a href="http://integratedsemantics.org/__oneclick_uploads/2008/12/geotag2.swf" target="_new"&gt;integrated&lt;/a&gt; with the open source content management system (CMS) Alfresco to enable auto-tagging of content as well as the automatic suggestion of tags to content contributors. The latest release of Calais adds the ability to generate Linked Data to other sources such as DBPedia, GeoNames, and the CIA World Fact Book.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With the rapid growth of news content online, relevance is going to become very important. This will require metadata and structured data in general. By exposing content in XML format, news content APIs are certainly a step in the right direction. However, these APIs do have their own limitations and can create content silos in the future. Beyond APIs, Semantic Web technologies and Linked Data principles will ensure a uniform and intelligent access to news content. This will be the key to reader retention and content monetization.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7039251005416483016?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7039251005416483016' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7039251005416483016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7039251005416483016'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/12/from-web-20-to-semantic-web-bridging.html' title='From Web 2.0 to the Semantic Web: Bridging the Gap in the News and Media Industry'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-9185124884064816592</id><published>2008-12-03T21:23:00.018-05:00</published><updated>2010-03-21T09:22:04.163-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>Keeping Data Under Control in SOA with XSLT 2.0 and XQuery</title><content type='html'>In a typical SOA project, several artifacts are represented in XML format. This includes SOAP messages, XML Schema definitions (XSDs), WSDL, WS-Policy, BPMN, BPEL, and various configuration files.  The following are some examples of how XSLT 2.0 and XQuery can be leveraged in an SOA project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Data Model and Data Format Transformation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When the services don't share the same data model (XSD) or the same data format (e.g. EDI vs. XML), there is a need to transform the data. An Enterprise Service Bus (ESB) typically provides data transformation as part of its mediation services. Some developers will find XQuery easier to use than XSLT 2.0 for transforming XML data because XQuery has a SQL-like syntax. In Oracle Aqualogic ESB, XQuery is used for data transformation while the Apache ServiceMix ESB provides support for Saxon-based XSLT 2.0 and XQuery transformations. An XSLT/XQuery engine can be deployed as Service Component Architecture (SCA) implementation type or a Java Business Integration (JBI) service engine.&lt;br /&gt;&lt;br /&gt;One aspect of data model or data format transformation that can quickly get out of control and become difficult to manage is the mapping specification which says that a field X in message A maps to field Y in message B. In addition, the mapping specification defines business rules. This mapping specification is often produced in Excel spreadsheets format by business analysts and handed over to programmers who then code the transformation script. Now, you need to maintain and synchronize the Excel mapping document, the source XSD, the target XSD, and the XSLT 2.0 or XQuery transformation script. On top of that, if a user interface is involved, you need to ensure that it is also kept in sync with those changes.&lt;br /&gt;&lt;br /&gt;One technique that can be useful is to use an &lt;span style="font-weight:bold;"&gt;xsd:appinfo&lt;/span&gt; element to capture and keep metadata close to the XSD declarations:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Data mapping specifications&lt;br /&gt;&lt;li&gt;Business rules using inline ISO Schematron rules for example&lt;br /&gt;&lt;li&gt;Labels, alerts, and appearances of UI components such as XForms controls.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;This allows you to use XSLT 2.0 or XQuery to automatically generate data mapping reports in Excel or even generate UI components by transforming the XSD into XForms controls.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Managing Artifacts and Promoting Reuse with an SOA Repository&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the key aspects of design-time SOA Governance is the management of the lifecycle of service artifacts and the dependencies between them. This is accomplished through a new breed of tools called SOA Repositories. Some of these repositories are being build on top of a JCR compliant repository such as Apache Jackrabbit. JCR supports querying compliant repositories using XPath 2.0. Suppose that I need to add a new element to my XSD. To ensure that I am reusing existing schema constructs, I first query the SOA Repository with XPath 2.0 to find all schema components (types, elements, and attributes) that contain a certain keyword inside their &lt;span style="font-weight:bold;"&gt;xsd:documentation&lt;/span&gt; element. XPath 2.0 can also help in detecting dependencies between artifacts (e.g. WSDL and XSD definitions) for change impact analysis. Open source SOA repositories such as Mule Galaxy, JBoss DNA, and WSO2 Repository have adopted this approach.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Functional Testing of Web Services&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Automated testing is a key principle in agile software development. &lt;a href="http://www.soapui.org" target="_new"&gt;SoapUI&lt;/a&gt; is an open source web services functional testing framework that allows testers to not only perform XSD validation of SOAP messages, but also allows them to specify assertions on the structure and content of those messages using XPath 2.0 and XQuery. SoapUI can be easily integrated into a continuous integration process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Data Integration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XQuery can alleviate performance and scalability issues related to the marshalling/unmarshalling of Java objects to/from XML (databinding) and object-relational mapping (ORM) for persisting XML data in relational databases. XQuery is a natural solution for querying and aggregating data coming from heterogeneous sources such as relational databases, native XML databases, LDAP, file systems, and legacy data formats such as EDI and CSV.&lt;br /&gt;&lt;br /&gt;One promising specification in the data integration space is the W3C &lt;a href='http://www.w3.org/TR/2008/WD-xquery-sx-10-20081203/' target="_new"&gt;XQuery Scripting Extension&lt;/a&gt; (XQSE). By extending XQuery with imperative features such as state management, XSQE (pronounced "excuse") provide developers with additional XML processing power without the need to embed XQuery in a host language such as Java. At the time of this writing, XQSE is still a W3C working draft but is already supported by the Oracle AquaLogic Data Services Platform (ALDSP 3.0).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-9185124884064816592?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=9185124884064816592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/9185124884064816592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/9185124884064816592'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/12/keeping-data-under-control-in-soa-with.html' title='Keeping Data Under Control in SOA with XSLT 2.0 and XQuery'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5183551835484354596</id><published>2008-11-11T22:14:00.028-05:00</published><updated>2010-03-21T09:21:23.905-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XMLDB'/><category scheme='http://www.blogger.com/atom/ns#' term='NoSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='XQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>The Content Imperative: Unlearning the Relational Model</title><content type='html'>The relational data model and the SQL query language are an essential part on any computer science curriculum and are well understood by a large number of developers.  On the other hand, the use of markup technologies such as SGML and XML for content management and publishing has remained a niche market for highly specialized vendors and consultants. &lt;br /&gt;&lt;br /&gt;Today, the majority of developers use XML for application configuration files (e.g. Spring, Hibernate, JSF), syndication (RSS), and web services.  When these developers are asked to design and develop XML content management and publishing applications, they often approach the problem from a relational data paradigm which is what they know and are used to. For example, when migrating content stored in a relational database into an XML format, they will simply dump the relational tables into a flat XML representation. The problem is that content is not relational data. The following are some fundamental differences between content and relational data:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Content is created to be consumed by eyeballs&lt;br /&gt;&lt;li&gt;Content can be rendered in multiple presentation formats such as print, web, and wireless devices. Therefore it is very important to cleanly separate content from presentation&lt;br /&gt;&lt;li&gt;Content can have an inherent deep hierarchical structure. For example, think about the book/part/chapter/section/subsection/paragraph hierarchy&lt;br /&gt;&lt;li&gt;The relationships between content items are expressed through hierarchical containment and hyperlinks&lt;br /&gt;&lt;li&gt;Content is often mixed (in the sense of mixed content in XML). For example, inside a paragraph, some words are italicized, in bold, or underlined to indicate special meaning&lt;br /&gt;&lt;li&gt;Content can have multi-valued properties such as the authors of a document. Multi-valued properties are not supported by SQL.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;However, content and data do have one important thing in common. Data and content stay with us for a long time, sometimes forever. APIs, protocols, and programming languages come and go. Therefore, content modeling is by far the most important investment you can make during a content management migration project. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Unstructured Content Modeling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In a typical enterprise, there are two different types of content: unstructured and structured. Unstructured content represents the large majority of content in the enterprise. Examples are Office documents such as Word, PowerPoint, and Excel. Content modeling for unstructured content consists in describing document metadata as well as the relationships between the documents. The metadata is usually stored in a relational database. In a typical CMS, the content model is used to customize the user interface for querying specific documents based on metadata and for customizing the user interface (e.g. for capturing and displaying metadata). &lt;br /&gt;&lt;br /&gt;Most content management systems have their own proprietary meta-model. The Java content repository API (JCR) introduced a standardized hierarchical repository model. This &lt;a href="http://wiki.apache.org/jackrabbit/DavidsModel" target="_new"&gt;article&lt;/a&gt; by David Nuescheler (JCR spec Lead and CTO at Day Software) explains the peculiarities of JCR content modeling and the gotchas for people coming from a relational data modeling background. &lt;br /&gt;&lt;br /&gt;Apache Jackrabbit (the JCR reference implementation) uses a textual DSL called Compact Namespace and Node Type Definition (CND) for specifying a JCR content model. There is no formal graphical notation like UML or ERDs for specifying JCR content models. Lars Trieloff of Day Software proposed a content &lt;a href='http://dev.day.com/microsling/content/blogs/main/contentmodels2.html' target="_new"&gt;modeling notation&lt;/a&gt; based on UML and Fundamental Modeling Concepts (FMC).&lt;br /&gt;&lt;br /&gt;The Content Management Interoperability Services (CMIS) specification proposed a simplified meta-model based on documents, folders, policies, and relationships. The CMIS query language extends SQL 92 with text search, multi-valued properties, and folder-scoped queries. This choice was made because most existing CMS use a relational database and SQL is well understood by the majority of developers out there.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Case Against Unstructured Content&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem with unstructured content is that it cannot be processed and queried like the well-structured relational data stored by the RDBMS on which your ERP and CRM systems sit. XML goes beyond tags (in the web 2.0 sense), taxonomies, full-text search, and content categorization to provide fine-grained content discovery, query, and processing capabilities. With XML, the document becomes the database. If your business is content (you are a media company, a publisher, or the technical documentation department of a manufacturing company), then you should seriously consider the benefits of XML in terms of content longevity, reuse, repurposing, and cross-media publishing.&lt;br /&gt;&lt;br /&gt;The question is: how to do it right? &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;From SGML to XML to the Infoset&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Charles Goldfarb invented SGML at IBM in 1969, the same year his colleague Edgar Codd invented the relational model. The SGML (through its very popular subset called XML) and relational models are still rock solid today. To be precise, the abstract data model for XML documents was formally specified in the XML Infoset and subsequently the XQuery 1.0 and XPath 2.0 data model (XDM) specifications. &lt;br /&gt;&lt;br /&gt;SGML was originally designed at IBM for the editing, retrieval, and composition of legal documents. The second edition of the Oxford English Dictionary and the US Department of Defense (DoD) adopted SGML in the 80s. The goal of the US DoD CALS initiative was to replace the huge quantities of paper with digital data in the acquisition of weapon systems. Before the adoption of XML by the W3C in February 98, SGML was primarily used in the publishing industry as well as for technical  documentation applications in industries such as aerospace, defense, software, and telecommunications. Examples of SGML vocabularies include S1000D (aerospace and defense), Docbook (software), and TIM (telecommunications). The most popular SGML vocabulary, HTML, is the foundation of the web itself.&lt;br /&gt;&lt;br /&gt;The XML Infoset describes the content of a well-formed XML document as an abstract tree of information items including document, namespace, element, and attribute information items. These information items have properties such as &lt;span style="font-style:italic;"&gt;children&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;parent&lt;/span&gt;. Based on the XML Infoset, the XDM defines the abstract data model for the input to XSLT 2.0 and XQuery 1.0 processors. In addition, the XDM supports XML Schema types, atomic typed values, and ordered heterogeneous sequences. &lt;br /&gt;&lt;br /&gt;The relational data model is based on set theory and predicate logic. It was designed originally for accounting and banking systems. Data is represented as n-ary relations and manipulated with relational algebra. CMS vendors and even standard bodies have tried to fork SQL in order to support hierarchies and multi-value properties. It is clear however that XQuery is a superior alternative, specifically designed to address those content-related concerns. &lt;br /&gt;&lt;br /&gt;&lt;a target="_new" href='http://wikixmldb.dyndns.org/help/use-cases/'&gt;WikiXMLDB&lt;/a&gt; is an interesting application that uses XQuery to query Wikipedia content. WikiXMLDB allows you to not only perform database-like queries, but also enables dynamic content assembly or the ability to build compound documents from multiple Wikipedia pages. This opens up new opportunities in terms of content enrichment at a time when publishers are struggling to find new ways to monetize their content assets in the face of declining ad revenues.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Structured Content Modeling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is a body of specialized knowledge in SGML/XML content analysis and modeling that has been applied successfully to projects such as the Oxford English Dictionary (OED), CALS, and Docbook. &lt;br /&gt;&lt;br /&gt;In relational data modeling, the three phases of modeling typically include:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;The conceptual or domain model&lt;br /&gt;&lt;li&gt;The logical data model (LDM)&lt;br /&gt;&lt;li&gt;The physical data model (PDM)&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;The LDM describes entity types, data attributes, and the relationships between the entities. The LDM is normalized to eliminate redundancies. The PDM describes the schema of the database that will be used to store the data and may be denormalized to improve performance. Relational data modeling uses well known modeling notations like Entity-Relationship (ER) diagrams and UML.&lt;br /&gt;&lt;br /&gt;The difference between logical model and physical model is even more important in modeling XML documents. The logical model can be expressed in XML Schema or Relax NG. However, the physical model depends on the underlying data persistence mechanism (e.g. relational vs. JCR vs. XQuery-enabled native XML database). Many projects make the mistake of skipping the logical modeling phase. The problem is that the physical storage can and will probably change over time.&lt;br /&gt;&lt;br /&gt;There is no formal notation for modeling XML documents. Back in the SGML days, document analysis and modeling was a well understood process. Eve Maler and Jeanne El Andaloussi describes a tree notation for modeling DTDs in their book entitled “Developing SGML DTDs: From Text To Model To Markup”.  One of the peculiarities of modeling narrative text is the presence of mixed content which is essential for intelligent processing of content (for example for the automatic extraction of book indexes). &lt;br /&gt;&lt;br /&gt;David Carlson proposed a &lt;a href='http://www.xmlmodeling.com/documentation/specs/' target="_new"&gt;UML Profile for XSD&lt;/a&gt; which can be used to auto-generate XML schemas from UML class diagrams. As with any model-driven development tool, care should be taken to ensure that the generated XML Schema complies with XML content modeling principles and satisfies the business and technical requirements such as content reuse and repurposing. &lt;br /&gt;&lt;br /&gt;Many people prefer Relax NG to XML Schema for its simplicity. The important think to remember however is that XML Schema is part of a full stack of XML specifications which also includes XForms, XPath 2.0, XQuery, and XSLT 2.0. The ability to load XML Schema types into your XForms, validate XForms submissions against an XML Schema, and create schema-aware XSLT 2.0 transforms and XQuery queries can be a deciding factor. &lt;br /&gt;&lt;br /&gt;Instead of starting your content modeling effort from scratch, you can leverage any of the existing proven and well tested document-oriented XML vocabularies such as Docbook, DITA, S1000D, and NewsML.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;JCR and XML Content Modeling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JCR supports the import of arbitrary XML documents into a compliant repository. The following is an excerpt from the specification:&lt;br /&gt;&lt;blockquote&gt;On import...&lt;br /&gt;&lt;br /&gt;Each XML element E becomes a content repository node of the same name, E. &lt;br /&gt;...&lt;br /&gt;Each child XML element C of XML element E becomes a content repository child node C of node E. &lt;br /&gt;Each XML attribute A within an XML element E becomes a property A of content repository node E. The value of each XML attribute A becomes the value of the corresponding property A. &lt;br /&gt;...&lt;br /&gt;Text within an XML element E becomes a STRING property called jcr:xmlcharacters of a node called jcr:xmltext, which itself becomes a child node of the node E. &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This is fine if you're only storing a small quantity of XML documents. Performance will probably degrade quickly if you're storing a large quantity of XML documents with a deep hierarchy. Same name siblings are almost always used in document-oriented XML (e.g. paragraph siblings) and can cause performance to degrade or JCR paths to become brittle if you remove or reorder nodes. JCR allows roundtripping of imported XML. However, JCR adds repository metadata such as  jcr:primaryType that must be stripped out at export time. It's possible to derive an optimized JCR content model from the XML document's logical model, although this could prevent you from fully exploiting the original hierarchy of the XML documents in your application. This shows the importance of separating the logical model from the physical model.&lt;br /&gt;&lt;br /&gt;You should seriously consider a native XML database when dealing with large quantities of document-oriented XML documents. A simple benchmarking exercise (between Jackrabbit and the Exist database for example) can help you settle down on the right solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Business Rules and Content Quality&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In addition to specifying the content items, types, and relationships in your schema, you should also specify business rules that are beyond the capabilities of the XML Schema language. ISO Schematron uses XPath 2.0 to declare assertions about arbitrary patterns in XML documents and then reports on the presence or absence of those patterns. In this &lt;a href='http://broadcast.oreilly.com/2008/11/validating-code-lists-with-sch.html' target="_new"&gt;article&lt;/a&gt;, Rick Jelliffe, inventor of Schematron explains how it works.&lt;br /&gt;&lt;br /&gt;Assertions and conditional type assignments capabilities have been added to XML Schema 1.1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Content Capture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XML editors have been around for a long time. However, these XML editors remain complex specialist tools that are often used only by professional technical authors in documentation departments. Using XForms, you can provide a user friendly interface for your end users to contribute XML content by presenting them with a simple XHTML form. The Alfresco web content management (WCM) platform uses XForms for content capture and XSLT/XSL FO for content rendition. The XForms controls can be generated automatically from an XML Schema. Alfresco's implementation is based on the open source Chiba XForms engine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Right Tools for the Job&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When content is stored in a relational database, typically an object relational mapping (ORM) solution like Hibernate is used to map relational tables into Java objects. The business logic is handled with POJOs such as Spring beans which communicate with the front end through a UI framework or templating technology such as JSP or Freemarker.&lt;br /&gt;&lt;br /&gt;When dealing with XML documents however, there are domain specific languages such as XForms, XInclude, XLink, XPointer, XPath 2.0, XSLT 2.0, XQuery, and XSL FO that greatly facilitate the processing of document-oriented XML and provide unmatched processing power when compared to traditional approaches based on SQL, JSP, or Freemarker. These XML-related languages are declarative in nature and require some learning curve. Many software architects and developers are not yet aware of the power of this new paradigm. However, I believe that rather than using only familiar development frameworks, it’s important to always evaluate alternatives and select the best approach even if it involves a learning curve.&lt;br /&gt;&lt;br /&gt;XML databases such as Exist can store data natively in XML and provide full XQuery support for sophisticated queries and manipulation of XML content. Exist also provides integrated support for XInclude, XSLT 2.0, and AtomPub. The XRX (XForms, REST, XQuery) architecture with Exist and the Orbeon XForms engine allows you to integrate an XForm front end to an Exist data store through a REST API, therefore bypassing the ORM layer altogether.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Content Modeling for the Semantic Web&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The web ontology language (OWL) is used for modeling for the Semantic Web. In the RDF data model, statements are expresses as Subject-Predicate-Object. Specialized RDF stores exist for storing RDF triples. In this blog post, Kingsley Idehen, CEO of OpenLink Software (maker of the Virtuoso  RDF triple store), explains why &lt;a href="http://www.openlinksw.com/blog/~kidehen/?id=1519"&gt;The Time for RDBMS Primacy Downgrade is Nigh!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In summary, content modeling in general and XML content modeling in particular are intrinsically different from relational data modeling. In modeling XML content, the logical model should be separated from the physical model because the latter depends on the persistence storage mechanism which can change during the content's life cycle. XQuery-enabled native XML databases provide a better alternative for storing, querying, and processing large quantities of document-oriented XML. The relational data model is still rock solid today and will be around for many years to come because of its strong foundations in mathematics. However, it is not a panacea for all information management problems. While SQL can be forked to support content characteristics such as hierarchy and multi-valued properties, XQuery was natively designed to address those concerns. Companies can help their developers by providing training on declarative XML processing languages like XForms, XQuery, and XSLT 2.0 which are better suited for handling XML content.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5183551835484354596?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5183551835484354596' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5183551835484354596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5183551835484354596'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/11/content-imperative-unlearning.html' title='The Content Imperative: Unlearning the Relational Model'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7077532297911172739</id><published>2008-10-23T20:20:00.024-04:00</published><updated>2010-03-21T09:22:41.668-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>AtomPub Use Cases in the Aviation Industry</title><content type='html'>At the XML 2007 Conference in Boston, I introduced my concept of an Integrated Documentation Environment for Aircraft Support (IDEAS) based on AtomPub and OpenSearch. The following are some use cases that illustrate how such an approach could facilitate integration and technical information publishing in the aviation industry:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Notification&lt;/span&gt;. Nancy is an aircraft mechanic. When she gets to work in the morning, she opens her feeds aggregator to get new and updated content from all of the following sources: airframer, engine manufacturer, component manufacturers, FAA, or airline policies. Essentially, Nancy doesn't want to login into the support sites of all those content providers to find out what is new and updated. She wants content pushed to her instead. This use case is implemented with the Atom syndication format.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Federated search&lt;/span&gt;. While Nancy is repairing the hydraulic tank, she wants to perform a single search against all those content repositories. She wants the results aggregated and returned to her as Atom entries, so that she can subscribe to those items that she is interested in and receive updates via web feeds. This use case is implemented with the OpenSearch specification.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Airline Originated Changes&lt;/span&gt;. Judy is an engineer working on a new engineering order (EO) to be performed on the hydraulic tank. The airline's technical documents are hosted by the aircraft manufacturer. Judy uses an XML editor which is also an AtomPub client to post the EO to the remote content repository (an AtomPub server).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Distributed Aircraft Manufacturing&lt;/span&gt;. Future Composites Inc. is a supplier of composite aircraft structures to X-Aero, a major airframer (systems integrator). Future Composites is also responsible for providing technical content in S1000D to X-Aero on those composite structures. After a failed attempt to connect to X-Aero's repository using their SOAP and WS-* interface, Future Composites and X-Aero mutually agree to go back to the basics and use AtomPub and its simple and generic RESTfull HTTP interface to CRUD (create, retrieve, update, and delete) documents to X-Aero's content repository.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The main argument in favor of this approach is simplicity and scalability. I am glad to see that the software industry is moving in that direction. Having been involved in complex WS-*-based integration projects in the airline industry, I believe this new approach is a breath of fresh air. The RESTful approach is also more amenable to agile software development as opposed to the waterfall approach which is typical when the big up front purchase of a proprietary ESB is involved.&lt;br /&gt;&lt;br /&gt;Integration projects are becoming critical to the success of new aircraft projects. Speaking about the repeated postponement of the 787 maiden flight in an internal memo send to Boeing employees on April 21, 2008 (and obtained by the Seattle Times) Boeing CEO Jim McNerney wrote:&lt;br /&gt;&lt;em&gt;&lt;blockquote&gt;I expect we’ll modify our approach somewhat on future programs—possibly drawing the lines in different places with regard to what we ask our partners to do, but also&lt;span style="font-weight:bold;"&gt; sharpening our tools for overseeing overall supply chain activities&lt;/span&gt;.&lt;/blockquote&gt;&lt;/em&gt;&lt;br /&gt;Why AtomPub specifically? Because too many people have been putting the "REST" label on their unRESTful chef-d'oeuvre (HTTP APIs) lately. AtomPub is a good embodiment of the principles of the REST architectural style and a good place to start.&lt;br /&gt;&lt;br /&gt;So, what are the key principles of RESTful design:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Everything is a URI addressable resource&lt;br /&gt;&lt;li&gt;Representations (media types such as XHTML, JSON, and Atom) describe resources and use links to describe the relationships between those resources.&lt;br /&gt;&lt;li&gt;These links drive changes in application state (hence Representational State Transfer or REST).&lt;br /&gt;&lt;li&gt;The only type that is significant for clients is the representation media type, not any other resource type&lt;br /&gt;&lt;li&gt;URI templates (a la OpenSearch) as opposed to fixed or hard coded resource names&lt;br /&gt;&lt;li&gt;Generic HTTP methods (no RPC-style overloaded POST)&lt;br /&gt;&lt;li&gt;Stalessness (the server keeps no state information)&lt;br /&gt;&lt;li&gt;Cacheability&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Adherence to these principles is what drives massive scalability. Security in a RESTful application can be achieved with any of the following existing solutions:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;XML Signature and Encryption&lt;br /&gt;&lt;li&gt;OpenID&lt;br /&gt;&lt;li&gt;HTTP Authentication&lt;br /&gt;&lt;li&gt;SSL&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;How does the aviation industry gets started with this new approach? This will require leadership from aviation IT specialists, particularly from original equipment manufacturers (OEMs). I don't think that another Air Transport Association (ATA) standard committee is needed. Such standard committees are plagued by vendor politics. By the time they finish their work, someone may have invented a better solution than AtomPub.&lt;br /&gt;&lt;br /&gt;In the Java space, the recently approved Java API for RESTful Web Services (JAX-RS) specification greatly simplifies REST development with simple annotated POJOs. &lt;a href='https://jersey.dev.java.net/'&gt;Jersey&lt;/a&gt; is the open source reference implementation of JAX-RS. &lt;a href='http://incubator.apache.org/abdera/reference.html'&gt;Apache Abdera&lt;/a&gt; is an AtomPub implementation with Spring Framework integration. The latest release of Abdera features a collection of pre-bundled Atom Publishing Protocol adapters for JDBC, JCR, and filesystems.&lt;br /&gt;&lt;br /&gt;The following is an excellent technical article from InfoQ that explains how REST and AtomPub facilitate integration: "&lt;a href="http://www.infoq.com/articles/webber-rest-workflow"&gt;How to Get a Cup of Coffee&lt;/a&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7077532297911172739?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7077532297911172739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7077532297911172739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7077532297911172739'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/10/atompub-use-cases-in-aviation-industry.html' title='AtomPub Use Cases in the Aviation Industry'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7478501126043741046</id><published>2008-08-11T11:45:00.031-04:00</published><updated>2010-03-21T09:31:42.625-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='OSS'/><title type='text'>Recession-Proof Computing</title><content type='html'>The past three years have been very exciting at Efasoft. We've delivered value to a  number of customers in a variety of industries including automotive, pharmaceutical, homeland security, wireless internet, aerospace, defense, insurance, and customer loyalty management. We've also learned a lot in the process. These projects have allowed us to strengthen our expertise in XML, Java EE, and SOA. In the aerospace vertical where we have a strong expertise, we took the initiative to propose new ideas such as using ISO Schematron to exchange and validate S1000D business rules and the AtomPub protocol and Atom syndication for the efficient exchange of up-to-date aircraft technical data between airlines and aerospace manufacturers.&lt;br /&gt;&lt;br /&gt;Going forward, our objective will continue to be the success of our customers. We'll achieve that by researching and implementing best practices as always. We understand that technology must be aligned with strategic business goals, but should also take into consideration the context within which the business operates.&lt;br /&gt;&lt;br /&gt;So, key questions that a lot of business leaders are now asking include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;How can we continue to invest in much needed strategic IT initiatives in the current economic downturn under tight budgets?&lt;br /&gt;&lt;li&gt;Given the high rate of IT project failures, how do we minimize risk?&lt;br /&gt;&lt;li&gt;Which software development methodology can help us deliver quality software on time and under budget?&lt;br /&gt;&lt;li&gt;What are the tools that we can use to help our developers in their work and keep them productive?&lt;br /&gt;&lt;li&gt;Is outsourcing and offshoring the right approach? And if we do outsource, how do we keep control, quality, and our intellectual property?&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Open source software (OSS) is the answer to some of these questions. OSS lowers the total cost of ownership (TCO). By providing full access to the source code (including unit and functional tests), OSS provides transparency into enterprise software. By supporting standards and open frameworks, OSS allows organizations to avoid vendor lock-in, protect their investments, and find talent in the open job market to maintain and support their software assets in the future (in case the software vendor goes out of business).&lt;br /&gt;&lt;br /&gt;SOA and Web 2.0 technologies allow organizations to gain a competitive advantage by supporting business process efficiency and by facilitating collaboration and online communities.&lt;br /&gt;&lt;br /&gt;On the SOA front, OSS tools such as Apache CXF (web services framework), Apache Tucsany (SCA implementation), Intallio BPMS (BPMN), Apache Axis2, Mule ESB, Apache ODE (BPEL), and Apache ServiceMix (ESB) have demonstrated their strength in supporting SOA projects in mission critical applications in industries such as banking. Based on carefully researched SOA design principles and patterns, our SOA offering includes the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Business process analysis using BPMN&lt;br /&gt;&lt;li&gt;A model driven development (MDD) approach where appropriate&lt;br /&gt;&lt;li&gt;SOA implementation using emerging standards such as BPEL and SCA (Service Component Architecture)&lt;br /&gt;&lt;li&gt;SOA Governance using open source SOA Repositories.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;On the Web 2.0 front, we really like the Liferay enterprise portal and the Alfresco document/web content management platforms particularly their built-in social networking features which enable enterprise collaboration and online communities. Document management is one area where we can leverage our expertise in XML and related technologies (XInclude, XSLT, XQuery, XForms, ISO Schematron, and S1000D) to help our customers bring their knowledge assets under control. We'll continue to support the Exist XQuery-enabled native XML database to build dynamic XML content applications. The XRX (XForms, REST, XQuery) architecture with Exist and the Orbeon XForms engine enables what we call "Web 2.0 XML authoring and Publishing". We've acquired a strong expertise in document management for maintenance and operation documentation in the aerospace industry (our traditional forte) and drug related documentation in the pharmaceutical industry.&lt;br /&gt;&lt;br /&gt;JBoss Seam is a very compelling application development framework because it not only brings together Java EE frameworks such as Hibernate, JPA, EJB 3, Spring, JSF, Facelets, and Java portlets, but also integrates human workflow capabilities (jBPM), full-text search (Hibernate Search), a business rules engine (Drools), and an integration testing facility. We like the ability to leverage third party AJAX-enabled JSF component libraries such as ICEFaces and Apache MyFaces to quickly create rich internet applications (RIA). However, JBoss Seam is not limited to JSF and can also integrate Flex 3 front-ends. &lt;br /&gt;&lt;br /&gt;Going forward, all these open source software will be part of our toolkit as we craft innovative software solutions for our customers.&lt;br /&gt;&lt;br /&gt;At Efasoft, we are proponents of agile development methodologies such as Extreme Programming and Scrum. These methodologies are based on practices such as user stories, iteration (sprint) planning, pair programming, unit test first, refactoring, continuous integration, and acceptance tests. Agile programming helps create better software that is also easier to maintain. We've witnessed the success of agile first hand and believe that it can help IT organizations achieve success. For more on Efasoft's approach to quality, see my previous blog &lt;a href="http://efasoft.blogspot.com/2008/06/addressing-software-quality-head-on.html"&gt;Addressing Software Quality Head-On&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7478501126043741046?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7478501126043741046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7478501126043741046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7478501126043741046'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/08/recession-proof-computing.html' title='Recession-Proof Computing'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4869816700778820716</id><published>2008-07-26T07:48:00.014-04:00</published><updated>2010-03-21T09:22:18.935-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Architecting SOA Solutions with a Model Driven Development (MDD) Approach</title><content type='html'>How do you architect an SOA solution to ensure that it is driven by the business and can respond rapidly and efficiently to ever changing business requirements? A Model Driven Development (MDD) approach can help provide that level of agility. The goal with the MDD approach to SOA is to auto-generate service artifacts such as WSDL, XSD, SCA composites, and BPEL code from the service model.&lt;br /&gt;&lt;br /&gt;First, the business articulates their vision for the SOA project in requirements documents or in the form of use cases. Business analysts (BAs) then model business processes that realize the use cases by leveraging the Business Process Modeling Notation (BPMN). With the help of the right tools, the BAs can specify Key Performance Indicators (KPI) such as those required by service level agreements (SLAs). They can also run simulations to validate the proposed business processes.&lt;br /&gt;&lt;br /&gt;SOA is indeed all about reengineering and supporting organizational business processes. Back in 1993, Michael Hammer and James Champy made the case and outlined the management framework for reengineering in their book entitled "Reengineering the Corporation: A Manifesto for Business Revolution". Today, SOA is the software architecture that enables and facilitates the reengineering of business processes.&lt;br /&gt;&lt;br /&gt;BPMN is an effective tool for BAs (as opposed to UML) because they should only focus on the business and operational aspects of the business process and shouldn’t have to worry about IT concerns such as service loose coupling, reusability, reliability, security, persistence, and transactions. While direct transformation from BPMN to executable BPEL code (so called BPMN-BPEL round tripping) may be effective for simple business processes, it can not always satisfy those IT concerns. More complex business processes will require advanced modeling and coding by SOA architects and developers. &lt;br /&gt;&lt;br /&gt;For example, the SOA architect will have to decompose the proposed business process into task, entity, and utility service layers in order to satisfy the SOA principles of loose coupling, reusability, and composability. That will also give the SOA Architect opportunity to apply SOA design principles and patterns and check the enterprise SOA Repository or Registry to reuse existing services or legacy assets.&lt;br /&gt;&lt;br /&gt;After decomposing the proposed business process to identify reuse opportunities and address other IT concerns, the SOA architect can then build an assembly of service components based on the Service Component Architecture (SCA). SCA implementation types can be Spring beans, EJBs, C++, Cobol, WS-BPEL, PHP, Spring, XSLT, XQuery, and OSGi bundles. SCA supports different bindings such as SOAP/HTTP Web services, JMS, RSS, and Atom.&lt;br /&gt;&lt;br /&gt;The tool of choice for software architects is UML 2.0. In the case of SOA, UML can help abstract the service model from technology-specific implementation details. Basic UML artifacts such as activity and collaboration diagrams can be auto-generated from the BPMN diagrams produced by the BAs to bootstrap the SOA Architect's modeling effort. &lt;br /&gt;&lt;br /&gt;To help SOA architects in crafting service-oriented solution logic, a UML Profile for service-oriented design should be adopted. The profile should define a number of stereotypes that can be applied to UML artifacts in order to refine the transformation from UML artifacts to service artifacts.&lt;br /&gt;&lt;br /&gt;The automatic generation of the service artifacts from the UML model should be part of the build and continuous integration process which should also include automated tests (for example to ensure that the generated XSD and WSDL are syntactically correct, WSI-BP compliant, and backward compatible).&lt;br /&gt;&lt;br /&gt;The benefits of an MDD approach to crafting SOA solutions include: increased development productivity, traceability to business requirements, responsiveness to changing requirements, quality, and overall agility.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4869816700778820716?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4869816700778820716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4869816700778820716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4869816700778820716'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/07/architecting-soa-solutions-with-model.html' title='Architecting SOA Solutions with a Model Driven Development (MDD) Approach'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-6193145329716550031</id><published>2008-07-09T18:23:00.012-04:00</published><updated>2010-03-21T09:22:56.997-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA in the Java Space: State of the Union</title><content type='html'>In the Java space, an SOA Architect starting a new SOA project will have to make some strategic as well as tactical decisions regarding which approach and technologies are appropriate for their project. Of course, the SOA project should be aligned with the organization’s long term business goals. &lt;br /&gt;&lt;br /&gt;Technically, there is a myriad of specifications to choose from:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The Business Process Modeling Notation (BPMN)&lt;br /&gt;&lt;li&gt;The Java API for XML Web Services (JAX-WS)&lt;br /&gt;&lt;li&gt;The WS-* specifications including the WS-I Basic Profile, WS-Addressing, WS-Policy, WS-Reliable Messaging, and WS-Security &lt;br /&gt;&lt;li&gt;The Java API for RESTful Web Services (JAX-RS)&lt;br /&gt;&lt;li&gt;The Java Business Integration (JBI)&lt;br /&gt;&lt;li&gt;The Web Services Business Process Execution Language (WS-BPEL)&lt;br /&gt;&lt;li&gt;The Service Component Architecture (SCA).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Each of these specifications has its raison d’etre and should be part of the architect’s toolkit. However, I find SCA quite intriguing. SCA defines a language neutral programming model for the assembly and deployment of services. SCA implementation types include Java, C++, Cobol, WS-BPEL, PHP, Spring, XSLT, XQuery, and OSGi bundles. SCA supports different bindings such as SOAP/HTTP Web services, JMS, RSS, and Atom. SCA applications can be hosted in web containers, application servers, and OSGi runtimes. SCA is geared toward the developer and can apply policies such as reliability, security, and transactions to services in a declarative manner. SCA has the support of big players including Oracle, SAP, and IBM. At the time of this writing, Sun Microsystems support for SCA is less than clear (to me anyway).&lt;br /&gt;&lt;br /&gt;JBI is implemented by a number of  Enterprise Service Bus (ESB) products. JBI defines a runtime architecture that allows plugins such as binding components and service engines to interoperate via a Normalized Message Router (NMR).  Binding components (BCs) use communication protocols such as JMS, FTP, XMPP, and HTTP/S to connect external services to the JBI environment. Service engines provide application logic in the JBI environment. Examples of SEs are XSLT/XQuery data transformation engines, rules engines, and WS-BPEL engines. BCs and SEs do not communicate directly. They only communicate through the NMR. IBM, BEA (now part of Oracle) and SAP did not vote in favor of JBI Java Specification Request (JSR 208). &lt;br /&gt;&lt;br /&gt;When starting a new SOA project, SOA architects will have to look beyond vendors  politics and make some judgment calls about the best approach based on their business goals and functional requirements. &lt;br /&gt;&lt;br /&gt;My personal take on this is to adopt an agile approach where new functionalities are implemented in an iterative manner. For example, instead of starting with an ESB infrastructure, a project can start by service enabling existing applications (code-first approach) with JAX-WS annotation capabilities or by creating new services with a contract-first approach where JAX-WS annotated service and server stub are generated from a WSDL. Alternatively, the Java API for RESTfulWeb Services (WS-RS) could be used when a RESTful approach seems more appropriate.&lt;br /&gt;&lt;br /&gt;An ESB could later come into the picture in a context where you are connecting to multiple services (often across organizational boundaries) and there is a need for mediation services such as business process orchestration, business rules processing, data model transformation, message routing, and protocol bridging. In that context, JBI provides plug-and-play functionality in ESBs for service engines such as business rules engines and BPEL engines. For that reason, JBI can help avoid ESB vendor lockin (perhaps a reason why proprietary ESB vendors are not backing JBI).&lt;br /&gt;&lt;br /&gt;However, SOA architects should carefully consider the benefits of the programming language and binding agnostic service assembly model proposed by SCA. This will be essentially a choice between centralized mediation and decentralized assembly. The Open Service Oriented Architecture (OSOA) group believes that JBI and SCA can actually work together for example to allow SCA components to call JBI components or to use JBI runtime containers to deploy SCA composites.&lt;br /&gt;&lt;br /&gt;Decentralized assembly is agile and looks a lot more like the way the web itself works. So I believe that while the JBI model is fine for integrating legacy enterprise applications, new and future service-oriented applications will embrace the SCA approach.&lt;br /&gt;&lt;br /&gt;So is the state of the union strong? There is certainly a risk of fragmentation. But choice will always drive innovation forward and that’s what attracts me to the Java platform in the first place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-6193145329716550031?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=6193145329716550031' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6193145329716550031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6193145329716550031'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/07/soa-in-java-space-state-of-union.html' title='SOA in the Java Space: State of the Union'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-6900116459563881255</id><published>2008-07-04T23:20:00.023-04:00</published><updated>2009-08-05T11:50:41.011-04:00</updated><title type='text'>XML Schema Design Strategies for SOA Projects</title><content type='html'>The schema modeling and design effort should be an integrated part of an agile approach which implements practices such as user stories, acceptance tests, unit test first, refactoring, short iterations, common code base, and continuous integration.&lt;br /&gt;&lt;br /&gt;In the recommended contract-first approach to web services development, the XML Schema and WSDL artifacts are the foundation of an SOA project. For example, with Apache CXF, you can use the WSDL2Java tool to automatically generate a JAX-WS annotated service and server stub from your WSDL.&lt;br /&gt;&lt;br /&gt;The first step is to adopt schema naming and design rules (NDR). Industry and government standard bodies like the Universal Business Language (UBL) and the National Information Exchange Model (NIEM) have published such NDRs.&lt;br /&gt;&lt;br /&gt;If you’re building a new schema from scratch, then the schema should be designed in an iterative and collaborative manner. During each iteration, add just enough components to your schema to support the specific user stories that are being implemented. As the schema grows, refactor as required.&lt;br /&gt;&lt;br /&gt;One option is to start the modeling effort with a domain model in the form of UML class diagrams to facilitate collaboration between non-technical subject matter experts (SMEs), the modeler, and the technical team. An XML schema can then be generated automatically from the UML class diagram with a tool such as Hypermodel. David Carlson, creator of Hypermodel, proposed a UML Profile for XSDs which defined a number of stereotypes that can be added to UML class diagrams to refine the mapping from class diagrams to XML schemas. Alternatively, you could export the UML model to the XML Metadata Interchange (XMI) format and use an XSLT transform to map the XMI into an XML Schema and even an XML instance. This Model Driven Development (MDD) approach to XSD provides agility in the face of constant changes in business requirements.&lt;br /&gt;&lt;br /&gt;If you are reusing an industry or government schema such as UBL or NIEM, it is very important to use the right methodology for extending the schema as recommended by the applicable NDR or Information Exchange Package Documentation (IEPD) process in the case of NIEM. Extensions to the standard schema should be clearly defined in a new custom namespace and documented properly. The following are some strategies for extending an XML schema:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Wildcards xs:any and xs:anyAttribute&lt;br /&gt;&lt;li&gt;Element substitution and abstract elements&lt;br /&gt;&lt;li&gt;Type substitution via xsi:type and abstract types&lt;br /&gt;&lt;li&gt;Concrete Extension (creating a new type by extending an existing type to include additional local elements).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The schema should be tested for quality against the NDRs. The US National Institute of Standards and Technology (NIST) has published an XML Schema Quality of Design Tool (or QoD Tool) which combines Schematron and JESS rules (a Java-based open source rule engine) to validate schemas against NDRs.&lt;br /&gt;&lt;br /&gt;For unit testing, the XMLUnit framework can be helpful in testing the schema as you refactor and implement new user stories. XMLUnit for Java allows you to make assertions about the validity of an XML document against an XML Schema. The execution of these tests should be part of your build and continuous integration process.&lt;br /&gt;&lt;br /&gt;The automatic generation of the XSD code from the UML model should also be part of the build and continuous integration process.&lt;br /&gt;&lt;br /&gt;Business rules or modeling requirements that are beyond the capabilities of XML Schema 1.0 should be implemented with an assertion-based language such as ISO Schematron or with the new assertion and conditional type assignment (co-constraints) capabilities in XML Schema 1.1.&lt;br /&gt;&lt;br /&gt;Although ISO Schematron and XML Schema 1.1 can be quite powerful when used with XPath 2.0, some complex business rules will be easier to handle with rule engines such as JBoss Drools and JESS. The rule engine can be deployed as a dedicated and reusable utility web service to validate messages.&lt;br /&gt;&lt;br /&gt;When modeling XML schemas for an SOA project, careful consideration should be given to the issue of data transformations. When the services don’t share the same data model and XML Schema, there is a need to transform the XML data using technologies such as XQuery and XSLT. This can introduce additional design complexity and runtime performance issues. Data transformations shall be avoided unless absolutely required.&lt;br /&gt;&lt;br /&gt;The XML Schema's xsd:appinfo element can be used to capture and keep metadata close to the XSD declarations:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Metadata such as data transformation specifications&lt;br /&gt;&lt;li&gt;Business rules using inline ISO Schematron rules &lt;br /&gt;&lt;li&gt;Labels, alerts, and appearances of UI components such as XForms controls. This provides the opportunity to auto-generate UI components from your XSD using a transformation language like XSLT or XQuery. Keeping UI and XSD components in sync can be a challenge in SOA projects.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Finally, to maximize reuse, an enterprise-wide SOA Repository/Registry should be used to publish, centralize, and discover schema components (see my previous post on &lt;a href='http://efasoft.blogspot.com/2008/04/soa-governance-tools.html'&gt;SOA Governance tools&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-6900116459563881255?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=6900116459563881255' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6900116459563881255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6900116459563881255'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/07/xml-schema-design-strategies-for-soa.html' title='XML Schema Design Strategies for SOA Projects'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-1864434826908291073</id><published>2008-06-10T18:48:00.023-04:00</published><updated>2010-03-21T09:23:36.182-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Quality'/><title type='text'>Addressing Software Quality Head-On</title><content type='html'>Adopting a test-driven development methodology (TDD) and using the right tools can help deliver quality software.&lt;br /&gt;&lt;br /&gt;With TDD, you start with user stories and you write acceptance tests for those stories.  To implement the functionality for the stories, you write unit tests first, then just enough code to make the unit tests pass, and then you refactor. You repeat the test-code-refactor cycle until the acceptance tests pass. &lt;br /&gt;&lt;br /&gt;If your development team is not already using TDD, the first step is to provide adequate training on the concepts and patterns of TDD. One option is to hire an Agile coach or pair junior developers with experienced practitioners of TDD. Next, you need to use the frameworks and tools that will facilitate adoption, keep your developers productive, and provide transparency into the process. The following are tools and frameworks (all are free and open-source) that we find useful:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Build tool: Maven 2&lt;br /&gt;&lt;li&gt;Continuous integration: Hudson&lt;br /&gt;&lt;li&gt;A tool for configuring, starting, stopping Java containers and deploying applications for continuous integration and functional tests: Cargo&lt;br /&gt;&lt;li&gt;Unit testing frameworks: JUnit 4.4, EasyMock, and JSFUnit (for JSF applications)&lt;br /&gt;&lt;li&gt;Enforcing coding standards: Checkstyle&lt;br /&gt;&lt;li&gt;Detecting bugs, overcomplicated expressions, and suboptimal/dead/duplicate code: PMD and FindBugs&lt;br /&gt;&lt;li&gt;Code review: Jupiter&lt;br /&gt;&lt;li&gt;Test coverage: Cobertura&lt;br /&gt;&lt;li&gt;Web Services functional and load testing: SoapUI&lt;br /&gt;&lt;li&gt;User interface testing: Selenium and Umangite&lt;br /&gt;&lt;li&gt;Integration testing: Fit, DBUnit, DbFit, and ORMUnit&lt;br /&gt;&lt;li&gt;XML unit testing: XMLUnit and Tennison Test&lt;br /&gt;&lt;li&gt;Load and performance testing: JMeter&lt;br /&gt;&lt;li&gt;Profiling and monitoring: JConsole&lt;br /&gt;&lt;li&gt;Analyzing code dependencies: JDepend&lt;br /&gt;&lt;li&gt;Source code documentation: Doxygen&lt;br /&gt;&lt;li&gt;Project tracking and planning: XPlanner&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;By enforcing Java best practices, tools like Checkstyle, PMD, and FindBugs are very helpful for developing high quality code. &lt;br /&gt;&lt;br /&gt;Unit and integration tests should be fast, repeatable, and automated. That's why you need to deploy a build tool and a continuous integration server from the start. All the tools listed above should be executed as part of your continuous integration process. You should use a dedicated integration build machine.&lt;br /&gt;&lt;br /&gt;DBUnit helps make your system tests repeatable by using XML to insert a specific data set into the database before each test run. Cargo can configure and starts the web container or application server (AS), deploy your application's WAR or EAR file, and then shutdown the container after each test run.&lt;br /&gt;&lt;br /&gt;Keep in mind that test coverage reports such as those provided by Cobertura should be used mainly to isolate code that has not been appropriately tested in order to take corrective measures. These reports shall not be used solely to aim at a magical high coverage percentage. Applications that are built on an inversion of control (IoC) container such as Spring are more amenable to unit testing. &lt;br /&gt;&lt;br /&gt;For web applications with a user interface (UI) layer such as Struts or JSF, make sure that you exercise the UI functionalities on real web browsers (IE, Firefox, etc.) with a tool like Selenium. Fit and Fitness (the wiki-based version of Fit) are effective tools for integration testing your application's business logic. By integrating Selenium, TestNG, Spring, and Cargo, the Umangite framework makes it easy to write web tests.&lt;br /&gt;&lt;br /&gt;If you intend to service-enable the same application, then  SoapUI will help with both integration and load testing of the  web services over HTTP. The nice thing about SoapUI is that in addition to XML Schema validation,  it allows you to specify response assertions by using XPath 2.0, XQuery, and Groovy scripts.&lt;br /&gt;&lt;br /&gt;Sun JDK tools such as jConsole, jmap, and jhat can help with profiling and diagnosing memory leak issues. The JMeter Proxy makes load and performance tests easy my allowing you to record a test case.&lt;br /&gt;&lt;br /&gt;Are agile practices applicable to XML development (XML Schema modeling, XSLT, XQuery, and XSL FO programming)? You bet. More on that on my previous blog entitled &lt;a href="http://efasoft.blogspot.com/2007/11/extreme-xml-programming.html" target="_new"&gt;Extreme XML Programming&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-1864434826908291073?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=1864434826908291073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1864434826908291073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/1864434826908291073'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/06/addressing-software-quality-head-on.html' title='Addressing Software Quality Head-On'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7481897160234476669</id><published>2008-05-24T21:09:00.030-04:00</published><updated>2009-12-08T05:46:03.555-05:00</updated><title type='text'>S1000D Content Reuse for Aircraft Documentation</title><content type='html'>One of the justifications for moving to an XML-based S1000D content management system (CMS) is the ability to reduce cost and improve quality by reusing content. In the aerospace industry, hundreds of thousands of pages of maintenance and operation documentation are produced and maintained for every new aircraft project. Warnings and cautions are a good example of reuse in aerospace documentation. They describe hazards that may cause injury or death or damage to the aircraft. For product liability reasons, these warnings and cautions are carefully reviewed and approved by qualified personnel. Technical authors may be required to reuse these warnings and cautions verbatim across all documents. In this blog, I will discuss some principles and practices that facilitate S1000D content reuse.&lt;br /&gt;&lt;br /&gt;From a technical perspective, the key to successful reuse in S1000D is the W3C XInclude specification. The S1000D specification does not make reference to XInclude. The reason is that earlier versions of S1000D were based on SGML. Some S1000D CMS still rely on the SGML/XML 1.0 external parsed entity mechanism for implementing reuse. This approach has several limitations and should be avoided. The preferred approach in modern XML content applications is to use XInclude which allows the &lt;span style="font-weight:bold;"&gt;transclusion&lt;/span&gt; of not only whole chunks of XML content, but also elements (addressed using XPath/XPointer) within those chunks. The following are some examples:&lt;br /&gt;&lt;br /&gt;&amp;lt;xi:include href="dm.xml"/&gt;&lt;br /&gt;&amp;lt;xi:include href="dm.xml" xpointer="warning-001"/&gt;&lt;br /&gt;&lt;br /&gt;In the first example a data module file named dm.xml is included. In the second example, an element with ID value "waning-001" within the data module is included.&lt;br /&gt;&lt;br /&gt;Using XInclude in an S1000D content application requires some modifications to the XML Schema used for the authoring of data modules to allow the insertion of xi:include elements. However, these modifications will still produce valid S1000D documents since you're not altering the structure of your documents, but rather simply modularizing the content.&lt;br /&gt;&lt;br /&gt;While we are on the subject of inclusion, the XLink specification can be used as a simpler alternative to the XML 1.0 unparsed entity and notation mechanism (another concept inherited from SGML) for including illustrations into S1000D documents.  &lt;br /&gt;&lt;br /&gt;At the DocTrain 2007 conference in Boston, I gave a presentation on how to integrate training and documentation using S1000D and the Shareable Content Object Reference Model (SCORM) specification. One way to reuse S1000D content in SCORM is to assign a unique ID to all elements in S1000D data modules (DMs) that are reusable such as paragraphs, steps, warning, cautions, notes, tables, etc. This can be done automatically using the XSLT generate-id() function. The instructional designer then searches the S1000D common source database (CSDB) to find and display relevant DMs. She can then use XInclude to include reusable elements from S1000D DMs into SCORM shareabe content objects (SCOs). When this is done, the SCOs are automatically updated when the DMs are updated.&lt;br /&gt;&lt;br /&gt;Successful S1000D reuse requires adherence to the principle of &lt;span style="font-weight:bold;"&gt;context-agnostic content&lt;/span&gt;. For example, to make it possible to reuse a warning across multiple documents in different contexts, one should avoid formulations such as "refer to the illustration in the next section" inside the warning. &lt;br /&gt;&lt;br /&gt;Enforcing the principle of context-agnostic content can be semi-automated using an assertion-based schema language like ISO Schematron to report the occurrence of keywords such as "previous", "next", "below", etc. The warning shall be routed through a comprehensive review and approval workflow provided by the CMS before final publication. The principle of &lt;span style="font-weight:bold;"&gt;business rules definitions and enforcement&lt;/span&gt; ensures that reusable content is of the highest quality. Consider a dual-purpose data module that is written to be reused by both training and publications. A business rule could require the use of a certain language style (e.g. active as opposed to passive voice) for the dual-purpose data module.&lt;br /&gt;&lt;br /&gt;Another principle that can help when the content cannot be context-agnostic, is the &lt;span style="font-weight:bold;"&gt;parameterization&lt;/span&gt; of reusable content. With parameterization, you include variable references in the reusable content that are resolved at run time. The Exist XML database has an elegant way of handling this using a combination of XInclude and XQuery as in the following example:&lt;br /&gt;&lt;br /&gt;&amp;lt;xi:include href="warning.xq?var1=material&amp;var2=process"/&gt;&lt;br /&gt;&lt;br /&gt;Here warning.xq is a stored XQuery witch is compiled and executed by Exist to return the root element of the warning. The content of the warning depends on the material and process used to carry out the maintenance procedure. var1 and var2 are passed as global external variables to the XQuery.&lt;br /&gt;&lt;br /&gt;The issue of &lt;span style="font-weight:bold;"&gt;content granularity&lt;/span&gt; is directly related to the principle of context-agnostic content. Although the data module is the basic unit of information in S1000D, content can be managed at a lower level of granularity. An interested feature of some XML editors is the ability to select an element inside an XML document and convert that element into an XIncluded file. So while a technical author is writing a warning inside a data module, she can pull out that warning as an XIncluded XML file if she determines that the warning could be reusable in other publications.&lt;br /&gt;&lt;br /&gt;Another area where XQuery facilitates reuse is the &lt;span style="font-weight:bold;"&gt;dynamic assembly&lt;/span&gt; of content based on product attributes such as applicability, security, and skill level. S1000D has a comprehensive metadata facility called IDSTATUS that can be leveraged to filter content. A good example is applicability filtering. In the case of an aircraft, the applicability of an S1000D maintenance or operation procedure can depend on the following attributes and conditions (among others):&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Manufacturer serial number&lt;br /&gt;&lt;li&gt;Aircraft registration number&lt;br /&gt;&lt;li&gt;Service bulletin incorporation&lt;br /&gt;&lt;li&gt;Location of maintenance&lt;br /&gt;&lt;li&gt;Aviation regulations&lt;br /&gt;&lt;li&gt;Temperature, wind speed, and sandy conditions.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;XInclude and XQuery can be used together to package content into S1000D publication modules by executing queries that filter content based on metadata in the IDSTATUS.&lt;br /&gt;&lt;br /&gt;An important condition for content reuse is the principle of &lt;span style="font-weight:bold;"&gt;discoverability&lt;/span&gt; of reusable content. Obviously, you cannot reuse a piece of content if you don't know that it exists and where to find it. A technical author should be able to query or browse the S1000D CSDB (Common Source Data Base) to find relevant reusable content. To facilitate enterprise-wide content reuse, I highly recommend a CSDB based on a native XQuery-compliant XML database and deployed as a web application. That will allow authors to perform both full-text and structured queries on the CSDB. The query should return a list of data modules or reusable chunks. The author should then be able to select the reusable chunk to automatically insert an XInclude targeting that chunk. &lt;br /&gt;&lt;br /&gt;In support of the principle of reusable content discoverability, appropriate &lt;span style="font-weight:bold;"&gt;metadata&lt;/span&gt; should be added to the content. The DMs already have comprehensive metadata in the IDSTATUS section. Reusable content at a lower level of granularity (like a warning) should also have appropriate metadata specified.&lt;br /&gt;&lt;br /&gt;An XQuery-enabled native XML database can help with the &lt;span style="font-weight:bold;"&gt;governance&lt;/span&gt; of your reuse initiative by providing powerful reporting capabilities. For example, you can easily run an XQuery to find all documents that contain an XInclude to a particular chunk. This is important for understanding the impact of updates to that chunk. Another potential issue that could require some attention is the &lt;span style="font-weight:bold;"&gt;versionning &lt;/span&gt;of reusable content. Some form of notification mechanism can be helpful to alert consumers to changes to reusable content. This can take the form of an Atom feed to which consumers can subscribe. &lt;br /&gt;&lt;br /&gt;It is important to select an XML authoring tool that has good support for XInclude. Fortunately, some commercial XML editors now have decent support for XInclude. However, these XML editors remain complex specialist tools that are often used only by professional technical authors in documentation departments. At one of our aerospace customers, manufacturing assembly and functional test procedures were used to create installation and testing procedures for service publications. To allow their engineers to contribute S1000D content, we designed a light XML authoring application based on an XForms front-end with XML data persisted in a native XML database using a RESTful API. &lt;br /&gt;&lt;br /&gt;Any data reuse strategy should look beyond training and publication to identify opportunities to reuse data and streamline processes across the entire aircraft lifecycle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7481897160234476669?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7481897160234476669' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7481897160234476669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7481897160234476669'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/05/s1000d-content-reuse.html' title='S1000D Content Reuse for Aircraft Documentation'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-6609105562368654256</id><published>2008-05-15T23:06:00.004-04:00</published><updated>2008-06-26T18:06:19.642-04:00</updated><title type='text'>Spring, SCA, and OSGi</title><content type='html'>French paleontologist Pierre Teilhard de Chardin once said: “Tout Ce Qui Monte Converge” or “Everything That Rises Must Converge”. I learned this quotation from my father who mentioned to me that it was the topic of his philosophy dissertation at his university entrance exam.&lt;br /&gt;&lt;br /&gt;The quotation accurately describes what I see happening in the world of software development with the rise of Spring, OSGi, and SCA. &lt;br /&gt;&lt;br /&gt;During the last 30 years, the software industry has evolved from structured design to object-oriented design, POJO programming, and lately service-oriented design. With the rising complexity and costs of software systems, the ultimate goal of this evolution has been the reuse of software assets through loose coupling and service orientation.&lt;br /&gt;&lt;br /&gt;Spring is based on the principle of inversion of control (IoC) or dependency injection. With Spring, objects (simple POJOs) are provided with their dependencies as opposed to the objects managing or looking up those dependencies themselves. Spring relies on aspect-oriented programming (AOP) to declaratively manage cross-cutting concerns such as security, transaction, and logging. From a quality and agile development perspective, one big advantage of Spring-based applications is that they are amenable to unit testing using frameworks such as JUnit or EasyMock.&lt;br /&gt;&lt;br /&gt;Service-oriented architecture (SOA) exposes application business logic as a set of services that are remotely accessible and reusable across platforms and programming languages. The Service Component Architecture (SCA) has been designed to facilitate service composition. The SCA Assembly Model consists of one or more service components. Service components provide business functions to other components within or outside the module. A composite contains one or more service components and specifies communication bindings and policies such as security and transactions. Like in Spring, the artifacts and the dependencies between them are described using XML.&lt;br /&gt;&lt;br /&gt;The Open Services Gateway initiative (OSGi) defines a dynamic service model where components (packaged as bundles) and their dependencies are specified in a service registry. OSGi standardizes the life cycle management of these bundles including deployment, installation/uninstallation, and updates with full versioning capabilities. Bundles can be dynamically started, stopped, or updated without the need for a reboot. OSGi defines a model for publishing, discovering, and binding to services within the same virtual machine (VM).&lt;br /&gt;&lt;br /&gt;Spring, SCA, and OSGi are converging to create an environment that facilitates the design and the lifecycle management of software assets that are exposed as reusable services. Software vendors are actively exploring different opportunities to combine these three technologies. The combination of Spring, SCA, and OSGi is already having a transformative impact not only on service-oriented design and application development in general, but also on the application servers and middleware market as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-6609105562368654256?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=6609105562368654256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6609105562368654256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6609105562368654256'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/05/spring-sca-and-osgi.html' title='Spring, SCA, and OSGi'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-8942322753071166275</id><published>2008-05-04T11:44:00.010-04:00</published><updated>2010-03-21T09:22:27.424-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA and ROA Design Principles and Patterns</title><content type='html'>I've been compiling a list of design patterns and anti-patterns on Service Oriented Architecture (SOA) and Resource Oriented Architecture (ROA). I find the following resources quite useful.&lt;br /&gt;&lt;br /&gt;If you're looking for design patterns in building RESTful applications, the best way to start is to look at the Atom Publishing Protocol (&lt;a href="http://www.ietf.org/rfc/rfc5023.txt" target="_new"&gt;AtomPub&lt;/a&gt;) which is a good embodiment of the principles of the REST architectural style. The Google Data API (&lt;a href="http://code.google.com/apis/gdata/overview.html" target="_new"&gt;GData&lt;/a&gt;) is a real world implementation of AtomPub. At the XML 2007 Conference, I've proposed a RESTful approach to aviation technical data management called "Integrated Documentation Environment for Aircraft Support (IDEAS)" (more on that on my previous blog &lt;a href="http://efasoft.blogspot.com/2007/12/xml-2007-presentation.html" target="_new"&gt;RESTful IDEAS&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Another good resource is the book "RESTful Web Services" by Leonard Richardson and Sam Ruby. Chapter 8 entitled "REST and ROA Best Practices" is a must read and also addresses potential REST implementation issues such as asynchronous operations and transactions. Chapter 10 entitled "The Resource-Oriented Architecture Versus Big Web Services" offers ROA alternatives to WS-* specifications. &lt;br /&gt;&lt;br /&gt;For SOA design patterns and anti-patterns, here are some useful resources:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/webservices/library/ws-antipatterns/" target="_new"&gt;SOA Antipatterns&lt;/a&gt;: an article by a group of IBM SOA architects&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/SOA-anti-patterns" target="_new"&gt;SOA anti-Patterns&lt;/a&gt;: an article by Steve Jones at InfoQ&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.soapatterns.org" target="_new"&gt;SOA Patterns&lt;/a&gt;: the first draft of Thomas Erl's upcoming book entitled "SOA Design Patterns"&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/pete-lacey-ws-criticism" target="_new"&gt;Pete Lacey Criticizes Web Services&lt;/a&gt;: an interesting discussion on REST vs. WS-*.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I don't believe that ROA is the answer to all SOA project failures out there. However, I do believe that certain requirements and use cases are more amenable to the REST architectural style (more on that in a future post).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-8942322753071166275?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=8942322753071166275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8942322753071166275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8942322753071166275'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/05/soa-and-roa-design-patterns.html' title='SOA and ROA Design Principles and Patterns'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-8225366939483468059</id><published>2008-04-13T14:39:00.017-04:00</published><updated>2010-03-21T09:25:59.784-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><title type='text'>SOA Governance Tools</title><content type='html'>First, an important caveat: SOA governance is not a tool or a product. SOA governance is about people and leadership. No tool will deliver good governance out the box if the human factor is not taken into consideration. However the right tool can facilitate and provide transparency into SOA governance.&lt;br /&gt;&lt;br /&gt;It’s important to make a distinction between design-time SOA governance and run-time SOA governance. The main objective of run-time SOA governance is the enforcement of QoS and SLAs. Design-time governance focuses on the enforcement of industry-recognized SOA design principles and patterns.&lt;br /&gt;&lt;br /&gt;The goal of these patterns is not to kill the creativity of SOA developers or police their work, but instead to avoid SOA anti-patterns that are known to undermine the success of SOA projects. For example, SOA developers cannot reuse services if they are not aware of the existence of these services in the enterprise. Even if they know these services exist and where to find them, they cannot reuse the services if they don't understand them. Therefore the ability to easily discover well specified service metadata is one good design principle that can help deliver on SOA's promise of service reuse across the enterprise.&lt;br /&gt;&lt;br /&gt;One of the key aspects of design-time SOA Governance is the management of the lifecycle of service artifacts and the dependencies between them. This is accomplished through a new breed of tools called SOA Repositories/Registries. The following are what I consider important requirements for an SOA Repository/Registry.&lt;br /&gt;&lt;br /&gt;Indexing of XML-formatted artifacts such as WSDL, XML Schemas, Schematron rules, XSLT transforms, Spring and Hibernate configuration files, data mapping specifications, WS-Policy documents, etc. Ideally, users should be able to use languages such as XSLT and XQuery to manipulate artifacts and query the Repository/Registry. Requirements and specification documents should be stored in XML (as opposed to MS Word or Excel) if possible so that they can be processed the same way. The SOA Repository/Registry should sit on a native XQuery compliant database. This would provide powerful visualization and reporting capabilities to the registry. I should be able to run an XQuery search against the SOA Repository/Registry to return all artifacts that contain a reference to a certain XML element, so that I can visualize the impact that a change to that element would have. Automatic detection of certain dependencies (e.g. WSDL and XML Schemas) should be supported as well.&lt;br /&gt;&lt;br /&gt;Policy enforcement is also important as artifacts are added to the registry. For example, Schematron can be used to enforce XML Schema best practices. WS-I Basic Profile compliance and XML schema backward compatibility may also need to be enforced.&lt;br /&gt;&lt;br /&gt;Support for a RESTful API for all CRUD (create, read, update, delete) operations on artifacts. Ideally, I would prefer support for the AtomPub specification and the Atom syndication format for pushing updates to stakeholders. Competing SOA Registry protocols and APIs include: UDDI v3, the Java API for XML Registry (JAXR), JSR 170/283 (Java Content Repository API), and  IBM WebSphere Registry and Repository (WSRR). However, Open source vendors such as MuleSource and WSO2 have adopted AtomPub for its simplicity, while RedHat is building its upcoming SOA Repository/Registry (JBoss DNA) on JSR 170. Mule Galaxy sits on the Apache Jackrabbit JCR reposiroty. The JSR 170 repository model could also be adopted in the Java space as a standardized repository model for SOA registries.&lt;br /&gt;&lt;br /&gt;Of course authentication, authorization, audit trails, workflow, and versioning should be expected in any SOA Repository/Registry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-8225366939483468059?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=8225366939483468059' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8225366939483468059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8225366939483468059'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/04/soa-governance-tools.html' title='SOA Governance Tools'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2506052134794348336</id><published>2008-03-23T17:19:00.009-04:00</published><updated>2008-07-02T22:18:12.197-04:00</updated><title type='text'>Passportgate: what would you do about it?</title><content type='html'>The current Passportgate scandal in the US involving the unauthorized access to the passport files of the three presidential candidates got me thinking about information security in enterprise applications particularly records and content management systems.&lt;br /&gt;&lt;br /&gt;Ensuring information security requires a multidimensional approach based on technology, process, policy, and governance. Technology alone is not the answer. However, since this is a technology-oriented blog, I will focus only on the state of the art in securing Java EE applications particularly in the open source space.&lt;br /&gt;&lt;br /&gt;From a technology standpoint, I see at least four potential issues: authentication, authorization/access control, audit trail, and business process.&lt;br /&gt;&lt;br /&gt;Spring Security (formally Acegi) has demonstrated its strength for both authentication and authorization in Spring-based portal and content/record management applications. Spring AOP (Aspect-Oriented Programming) provides an elegant and simple solution for audit trails in such systems. &lt;br /&gt;&lt;br /&gt;JBoss jBPM is a robust BPM engine that meets the requirements for workflow and enterprise business process orchestration between applications, services, and people. &lt;br /&gt;&lt;br /&gt;The eXtensible Access Control Markup Language (XACML) is an OASIS standard for specifying access control policies in XML. XACML is not currently widely used in content/record management systems. One explanation is that XACML has been designed to provide access control for new services such as web services in service-oriented architectures (SOA). XACML would be challenging to use for document-level security in content repositories that have a hierarchical structure (e.g. JSR 170/283 repository model) and demand sophisticated caching for scalable and rapid access to massive amounts of content. &lt;br /&gt;&lt;br /&gt;However, my favorite XML database (eXist) has an elegant implementation of XACML for controlling access to resources such as XQuery modules and Java methods, proving once again that Open Source is ahead in terms of innovation in the software industry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2506052134794348336?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2506052134794348336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2506052134794348336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2506052134794348336'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/03/passportgate-what-would-you-do-about-it.html' title='Passportgate: what would you do about it?'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4142507480215133458</id><published>2008-03-04T20:51:00.012-05:00</published><updated>2010-03-21T09:30:22.682-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>Boeing 787 Flight Control Software and Composite Fuselage Tested</title><content type='html'>Randy Tinseth, Boeing Commercial Airplanes vice-president for marketing announced on his &lt;a href="http://boeingblogs.com/randy/archives/2008/02/first_flight.html" target='new'&gt;blog &lt;/a&gt;that Boeing chief pilot Mike Carriker and 787 systems director Mike Sinnett successfully tested the flight-control Blockpoint 8 software code in the 787 engineering flight simulator. He wrote:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;During the test, Mike and Mike demonstrated most of the operational procedures required by a flight crew - pushback and engine start at Sea-Tac airport near Seattle, taxi and takeoff, climb, cruise, simulated engine failure, descent, approach, single-engine go-around, landing, taxi and arrival at the gate at the Portland, Oregon airport. &lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;Boeing also performed a serie of test on the composite fuselage of the B787 including "limit load", "ultimate load", and beyond 2.5 times the normal force of gravity (2.5 G). According to a Boeing &lt;a href="http://www.boeing.com/news/releases/2008/q1/080228b_pr.html" target="new"&gt;press release&lt;/a&gt; dated 02/28/2008:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;Testers observed audible indications of damage as the test progressed but the piece did not reach the level of destruction that had been anticipated.&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;This is a significant development because last September, Boeing announced the delay of the maiden flight of the first 787 due to flight control software issues, fastener shortage, and supply chain bottleneck. Also last year, a former Boeing engineer went public with &lt;a target="new" href="http://archives.seattletimes.nwsource.com/cgi-bin/texis.cgi/web/vortex/display?slug=boeing180&amp;date=20070918"&gt;concerns&lt;/a&gt; about the survivability of the 787 composite structure in case of a crash.&lt;br /&gt;&lt;br /&gt;The maiden flight has been postponed again to June this year. First delivery to launch customer All Nippon Airways is scheduled for early 2009.&lt;br /&gt;&lt;br /&gt;UPDATE: On April 9, 2008, Boeing has announced that 787 maiden flight has been postponed to the 4th quarter of 2008 and the first delivery for the 3rd quarter of 2009. &lt;br /&gt;&lt;br /&gt;Speaking about the 787 globally distributed aircraft manufacturing model in an internal memo send to Boeing employees on April 21, 2008, (and obtained by the Seattle Times) Boeing CEO Jim McNerney noted:&lt;br /&gt;&lt;em&gt;&lt;blockquote&gt;I expect we’ll modify our approach somewhat on future programs—possibly drawing the lines in different places with regard to what we ask our partners to do, but also sharpening our tools for overseeing overall supply chain activities.&lt;/blockquote&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4142507480215133458?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4142507480215133458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4142507480215133458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4142507480215133458'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/03/boeing-787-7-flight-control-software.html' title='Boeing 787 Flight Control Software and Composite Fuselage Tested'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7494733636252429458</id><published>2008-02-29T22:00:00.018-05:00</published><updated>2010-03-21T09:29:55.050-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XProc'/><category scheme='http://www.blogger.com/atom/ns#' term='Schematron'/><category scheme='http://www.blogger.com/atom/ns#' term='XQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>Declarative Programming Recipes</title><content type='html'>If you've been using an imperative programming language such as Java, C#, or JavaScript, then you should consider the benefits of declarative programming when designing your next application. In this blog, I will explore the benefits of the following technologies:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;XML Schema&lt;br /&gt;&lt;li&gt;ISO Schematron&lt;br /&gt;&lt;li&gt;XForms/XBL (XML Binding Language)&lt;br /&gt;&lt;li&gt;XSLT 2.0&lt;br /&gt;&lt;li&gt;XQuery&lt;br /&gt;&lt;li&gt;Atom Syndication&lt;br /&gt;&lt;li&gt;AtomPub&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The basic difference between declarative programming languages and imperative programming languages such as C# and Java is that the former specify the “what” (the intent) as opposed to the “how” (the algorithm). The following are some reasons to consider this new paradigm:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Declarative programming languages are accessible to many non-programmers&lt;br /&gt;&lt;li&gt;It’s possible to create a solution that is completely declarative (no Java, C#, JavaScript, or AJAX code)&lt;br /&gt;&lt;li&gt;It facilitates the Model-Driven Architecture (MDA) software design approach&lt;br /&gt;&lt;li&gt;When the data or content is managed in XML, a declarative programming model is a superior and simpler alternative to a conventional approach based on Java Server Faces (JSF), Spring, and Hibernate. For example, you get a more robust and simpler data and business rules validation mechanism and you can forgo ORM mapping altogether. However, declarative and imperative programming can co-exist in the same solution.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The following are some recipes for taking advantage of this new paradigm:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Define your data structures and types in the XML Schema.&lt;br /&gt;&lt;li&gt;Use XML Schema's xsd:appinfo element to: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Capture metadata such such as XML to RDBMS mapping information&lt;br /&gt;&lt;li&gt;Capture business rules using inline ISO Schematron rules &lt;br /&gt;&lt;li&gt;Control the labels, alerts, and appearances of UI components such as XForms controls.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Generate your UI by transforming the XML Schema into XForms with XSLT.&lt;br /&gt;&lt;li&gt;Alternatively, store your XML schema and other XML-formatted metadata artifacts in a native XML database and use XQuery to extract and manipulate the metadata during development and at run-time.&lt;br /&gt;&lt;li&gt;Use XBL for enabling custom UI controls for your XForms. As an example, you can integrate a rich text editor using XBL and Dojo. &lt;br /&gt;&lt;li&gt;Use ISO Schematron for business rules validation either post form-submission or by using XSLT to inject schematron rules into the XForms directly with the xforms:bind element.&lt;br /&gt;&lt;li&gt;Use the RESTful or AtomPub API to a native XQuery-enabled XML database (such as Exist) to CRUD (create, read, update, delete) the data.&lt;br /&gt;&lt;li&gt;If you're using SOAP-based web services, use XForms to send SOAP requests and display SOAP responses as well.&lt;br /&gt;&lt;li&gt;Leverage Atom syndication for pushing updates to data consumers. In general, when creating your application, think "Syndication Bus".&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Many software architects and developers are not yet aware of the power of this new paradigm. However, I believe that rather than using only familiar development frameworks, it’s important to always evaluate emerging alternatives and select the best approach even it involves a learning curve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7494733636252429458?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7494733636252429458' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7494733636252429458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7494733636252429458'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/02/declarative-programming-recipes.html' title='Declarative Programming Recipes'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-3706023669547074875</id><published>2008-02-02T20:29:00.000-05:00</published><updated>2008-02-02T21:21:08.769-05:00</updated><title type='text'>Open Source and the Democratization of Knowledge</title><content type='html'>I like Open Source Software (OSS) for a number of reasons. It lowers the cost of software and allows a larger number of organizations and individuals worldwide to make use of it. OSS is also where real innovation is currently happening in the software industry. OSS companies focus their resources on the engineering process and use the web itself as a marketing and distribution channel. This allows users to freely download and try the product and decide for themselves if it’s good for them. They can get free support from the community of users or purchase commercial support for mission critical applications. The quality of product can be quickly enhanced because of the feedback that the OSS developer gets from the potentially thousands of users who download the software.&lt;br /&gt;&lt;br /&gt;But the most important reason why I like OSS is that it enables what I call the democratization of knowledge. Complex software like operating systems, databases, ERP, CMS, and web portals all exist today in OSS.  OSS is a great equalizer because anyone can access the source code to learn or discover how such complex systems are designed. They can also contribute to the code if they wish. This is unprecedented in human history. Traditionally certain groups of people have kept their technological know-how to themselves as a competitive advantage used to dominate and control markets and/or other groups of people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-3706023669547074875?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=3706023669547074875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3706023669547074875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/3706023669547074875'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/02/open-source-and-democratization-of.html' title='Open Source and the Democratization of Knowledge'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-7610619969891961617</id><published>2008-01-23T20:54:00.000-05:00</published><updated>2008-01-23T21:31:02.209-05:00</updated><title type='text'>Learning From My Students</title><content type='html'>For the past 10 years, I've taught a variety of technical topics in classroom settings. The subjects I've covered include XML, XML Schema, XPath, XSLT, XSL FO, SAX, DOM, XQuery, and S1000D. The participants are usually professionals who are looking to upgrade their skills. It’s gratifying to read an e-mail from a student saying how a course I’ve taught has helped them be more productive in their work or pass a certification exam. &lt;br /&gt;&lt;br /&gt;It’s always a pleasure to share my knowledge and experience with people, but also to learn from them. When you teach a class, you must master the topic because you can't afford to always respond to students questions by saying that you will do some research and get back to them later with an answer. While preparing for the class, you need to find examples and real life scenarios to explain complex concepts to them. During the class itself, by listening to students’ questions and comments and trying to answer them, you actually discover some aspects or applications of the topic that you have not thought about before.&lt;br /&gt;&lt;br /&gt;As the saying goes "the best way to learn is to teach".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-7610619969891961617?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=7610619969891961617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7610619969891961617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/7610619969891961617'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/01/learning-from-my-students.html' title='Learning From My Students'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-8311566090026690770</id><published>2008-01-19T20:40:00.001-05:00</published><updated>2010-03-21T09:26:18.054-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S1000D'/><title type='text'>Applicability in S1000D 3.0</title><content type='html'>S1000D has a new and improved applicability mechanism based on the concepts of Applicability Cross Reference Table (ACT), Condition Cross Reference Table (CCT), and Product Cross Reference Table (PCT).&lt;br /&gt;&lt;br /&gt;The ACT data module declares attributes of the product that are not likely to change during its life cycle such as model, series, and serial number. Examples of product attributes for a commercial aircraft include the manufacturer serial number and aircraft registration number. &lt;br /&gt;&lt;br /&gt;The CCT data module declares technical, operational, and environmental conditions that can affect the applicability of technical content. Examples of these conditions are: service bulletin incorporation, location of maintenance, aviation regulations, temperature, wind speed, and sandy conditions.&lt;br /&gt;&lt;br /&gt;The PCT data module lists actual physical product instances. For each product instance, the PCT specifies the values of product attributes and conditions pertaining to the product instance.&lt;br /&gt;&lt;br /&gt;Applicability can be specified at the data module level inside the IDSTATUS or within the content of the data module at a more granular level such as a &amp;lt;step1&gt; element. The ACT and the CCT are used as look up tables to lookup the relevant product attribute or condition as well as their allowed possible values. The applicability element then specifies the correct product attribute or condition identifier from the ACT or CCT and the values to test against.&lt;br /&gt;&lt;br /&gt;The applicability information itself can be captured in human readable format for simple cases. For more complex cases, one or more assertions are used to specify the product attribute or condition to test and the values to test against. These values can be constrained with a pattern based on regular expressions as defined by the XML Schema specification. &lt;br /&gt;&lt;br /&gt;The new S1000D applicability mechanism supports the "effectivity" requirements of civil aviation and provides capabilities that are beyond the ATA 2200 effectivity mechanism. It also facilitates the development of applicability filtering functionalties in Interactive Electronic Publications (IETPs). However, building an authoring front end that hides its complexity (regular expressions and logical operations) to the technical authors creating the content will be the key. This is also an area where well-defined business rules should be specified and enforced using a tool such as ISO Schematron.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-8311566090026690770?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=8311566090026690770' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8311566090026690770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/8311566090026690770'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/01/applicability-in-s1000d-30.html' title='Applicability in S1000D 3.0'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5048650201303704949</id><published>2008-01-04T23:35:00.000-05:00</published><updated>2008-01-05T15:24:43.526-05:00</updated><title type='text'>On our Radar in 2008</title><content type='html'>First, Happy New Year and Best Wishes for a Peaceful 2008!&lt;br /&gt;&lt;br /&gt;Since this is my first blog this year, I will talk about what will be on our radar screen. The Java EE platform with JSF and the open source frameworks Spring and Hibernate will continue to be our preferred development platform for robust enterprise applications (ERP, portals and CMS). We like the ability to leverage third party AJAX-enabled JSF component libraries such as ICEFaces and Apache MyFaces to quickly create rich internet applications (RIA). JSF also allows us to target both the mobile and web delivery platforms simultaneously through the use of render kits. Spring brings sanity and simplicity into the development of complex Java EE applications and Hibernate allows us to develop database agnostic applications among other benefits.&lt;br /&gt;&lt;br /&gt;Although we still believe Java EE is the way to go for complex enterprise applications, we will learn and embrace Ruby on Rails and Adobe Flex this year. Feel free to recommend your favorite books on these topics.&lt;br /&gt;&lt;br /&gt;We'll continue to make innovative uses of ATOM syndication, AtomPub, FeedSync, and OpenSearch to solve our customers problems. &lt;br /&gt;&lt;br /&gt;A new version of our favorite XML database (Exist) will be released soon and will improve performance significantly. Exist already has some support for AtomPub. Declarative programming using a combination of XForms, ISO Schematron, XSLT 2.0, XQuery, and Exist's RESTful API will deliver great value for those who are willing to experiment.&lt;br /&gt;&lt;br /&gt;Finally on the Web 2.0 front, we'll be exploring the intersection of content management with social computing, mashups, user-generated content, and rich internet applications (RIA).&lt;br /&gt;&lt;br /&gt;We look forward to another collaborative and productive year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5048650201303704949?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5048650201303704949' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5048650201303704949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5048650201303704949'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2008/01/on-our-radar-in-2008.html' title='On our Radar in 2008'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4710308942050204376</id><published>2007-11-17T21:59:00.004-05:00</published><updated>2008-11-21T12:35:55.713-05:00</updated><title type='text'>Extreme XML Programming</title><content type='html'>I am a proponent of agile development methodologies such as Extreme Programming and Scrum. These methodologies are based on practices such as user stories, iteration (sprint) planning, pair programming, unit test first, refactoring, continuous integration, and acceptance test. Agile programming helps create better software that is also easier to maintain.&lt;br /&gt;&lt;br /&gt;Test-Driven Development (TDD) is a well known practice in the Java EE world with unit testing frameworks such as JUnit, EasyMock, and JMock. With TDD, you always write the test code first before you write the functional code itself. This simple principle can also be used in developing applications with XML related languages such as XSLT 2.0, XSL FO, and XQuery. Both XSLT 2.0 and XQuery 1.0 are strongly typed languages with a rich built-in function library. They can also be used to create libraries of custom functions that perform very complex business logic. Adopting a TDD methodology can increase the quality of your XSLT 2.0 or XQuery code and make it easy for you to maintain the code as you refactor and implement new requirements.&lt;br /&gt;&lt;br /&gt;The following are my favorite unit testing frameworks:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://tennison-tests.sourceforge.net/" target="new"&gt;Tennison-test&lt;/a&gt; is an XSLT Unit Test framework that allows you to write your unit tests in XML, but also allows you to automate the execution of the test as part of a build and continuous integration process based on Ant.&lt;br /&gt;&lt;li&gt;&lt;a href="http://xmlunit.sourceforge.net/"target="new"&gt;XMLUnit 1.1&lt;/a&gt; for Java allows you to make assertions about the differences between two XML documents, the result of an XSLT transformation, the evaluation of an XPath expression, and the validity of an XML document.&lt;br /&gt;&lt;Li&gt;&lt;a href="http://wiki.apache.org/xmlgraphics-fop/HowToCreateLayoutEngineTests" target="new"&gt;Apache FOP&lt;/a&gt; provides a LayoutEngineTestSuite which can be used to check against the "Area Tree XML" generated by FOP's XMLRenderer.&lt;br /&gt;&lt;li&gt;Schema-aware XSLT 2.0 and XQuery can help root out errors early. With XML Schema 1.1's assertions and conditional type assignments, this will get even more interesting.&lt;br /&gt;&lt;li&gt;ISO Schematron can be used to write XPath 2.0-based assertions about the output of your XSLT or XQuery program.&lt;br /&gt;&lt;li&gt;&lt;a href="http://xchecker.sourceforge.net/" target="new"&gt;xchecker&lt;/a&gt; is an interesting testing framework based on XML Schema, XPath 2.0, XSLT 2.0, XQuery, and Relax NG. &lt;br /&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/xspec/" target="new"&gt;xSpec&lt;/a&gt; is a Behavior Driven Development (BDD) framework by Jeni Tennison for XSLT testing. &lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;XML IDEs today provide the ability to write XSLT and XQuery code in debug mode my setting breakpoints, stepping through code one line at the time, and inspecting the value of variables. It would be nice if they could also integrate an XSLT/XQuery unit test framework a la Eclipse IDE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4710308942050204376?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4710308942050204376' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4710308942050204376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4710308942050204376'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2007/11/extreme-xml-programming.html' title='Extreme XML Programming'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2036577113213893199</id><published>2007-11-03T18:08:00.001-04:00</published><updated>2010-03-21T09:29:28.105-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>Aviation Data Management in the Web 2.0 Era</title><content type='html'>I will make a presentation at the XML 2007 Conference in Boston on December 5. The title of my presentation is: RESTful IDEAS. IDEAS stands for Integrated Documentation Environment for Aircraft Support. Based on AtomPub and OpenSearch, the IDEAS Framework enables federated searches of technical content and updates via web feeds. This presentation is essentially about how Web 2.0 innovations can be leveraged to create a cost-effective, efficient, and massively scalable environment for aggregating and publishing up-to-date technical documentation to end users in the aviation industry.&lt;br /&gt;&lt;br /&gt;So what exactly is Web 2.0? Does it mean anything at all?  For me Web 2.0 represents new web functionalities such as:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Content aggregation and syndication using technologies like RSS and Atom&lt;br /&gt;&lt;li&gt;Social networking (e.g. Linkedin and Facebook)&lt;br /&gt;&lt;li&gt;User generated content with videos, pictures, blogs, wikis, and podcasts (e.g. YouTube and Flickr)&lt;br /&gt;&lt;li&gt;Mashups or the ability to merge data from different sources (e.g. Google Maps and Yahoo Pipes)&lt;br /&gt;&lt;li&gt;Rich Internet Applications (RIA) using user interface technologies such as Flex and AJAX&lt;br /&gt;&lt;li&gt;Web Services and web-based APIs particularly those using RESTful protocols such as AtomPub&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Those are the types of functionalities that today's web users expect from web applications, and the consumers of aviation technical documents are no exception.&lt;br /&gt;&lt;br /&gt;Atom and AtomPub are already playing a fundamental role in the Web 2.0 world. The Google Data API which also includes Google Documents is based on AtomPub and OpenSearch. This week, a group of social networking sites including hi5, LinkedIn, MySpace, Ning, Orkut, and XING released OpenSocial which is a common set of APIs for developing social applications across multiple websites. OpenSocial is also based on AtomPub.&lt;br /&gt;&lt;br /&gt;So how can the aviation industry embrace and extend Web 2.0 innovations to solve the challenge of aggregating and presenting up-to-date technical data from multiple content sources? I will be sharing my thoughts. &lt;br /&gt;&lt;br /&gt;See you in Boston!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2036577113213893199?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2036577113213893199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2036577113213893199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2036577113213893199'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2007/11/aviation-data-management-in-web-20-era.html' title='Aviation Data Management in the Web 2.0 Era'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5405888185312458319</id><published>2007-10-20T19:06:00.001-04:00</published><updated>2010-03-21T09:26:51.067-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S1000D'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><category scheme='http://www.blogger.com/atom/ns#' term='SCORM'/><title type='text'>S1000D and SCORM Integration</title><content type='html'>I gave a presentation yesterday on S1000D and SCORM integration at the Doctrain 2007 conference in Lowell, MA. The main goal of integrating these two specifications is to reduce product life cycle costs and eliminate redundancies by streamlining business processes across the documentation and training functions. I noted that there are many opportunities for data reuse at every phase of the product life cycle including: concept, design, manufacturing, assembly, testing, delivery, and support. Documentation and training belong to the support phase and are often the only departments where content is captured in XML. This is due to the complexity and cost of current specialist XML authoring tools. XForms will allow knowledge workers to contribute knowledge assets in XML at every phase of the product lifecycle with a simple web form. I also believe that Office Open XML (OOXML) offers the opportunity to extract some value out of MS Office documents by exposing their contents to XML processing languages and tools such as XSLT 2.0 and XQuery.&lt;br /&gt;&lt;br /&gt;Engineering data should be the trusted source of data for both publications and training. For example, product model data and engineering drawings can be used to create simulation for training and manufacturing assembly instructions can be used to create installation procedures for publications. Any data reuse strategy should look beyond training and publication to identify ways to reuse data and streamline processes across the entire product lifecycle.&lt;br /&gt;&lt;br /&gt;The integration of SCORM and S1000D presents management and technical challenges. Since training and documentation are often two separate functions within the enterprise, the integration can have an impact on budget, processes, roles, and the organizational structure. For example, the cross-functional integrated project team is a good approach. The success of the integration will also require top leadership commitment and support. It is also important to address technical challenges such as the integration of existing content management systems (CMS) and learning management systems (LMS).&lt;br /&gt;&lt;br /&gt;The first technical approach is to create dual purpose data modules (DMs). I highlighted the importance of clearly defining and documenting business rules, particularly for dual purpose data modules. The business rules should specify among other things the appropriate level of granularity and language style (e.g. Simplified English). These business rules should be validated with technologies such as ISO Schematron and Simplified English Checkers. Since S1000D is weak on learning content metadata, the IEEE Learning Object Metadata (LOM) specification should be used to add learning object metadata to the S1000D dual purpose DMs. It is also possible to package all training data modules as a training publication module (PM). XSLT is then used to transform the S1000D DM into SCORM sharable content objects (SCOs) and learning assets. The S1000D metadata (IDSTATUS) shall be retained in the result SCOs to facilitate product applicability filtering when the SCOs are presented to the learners with an LMS. The S1000D PM can be used to generate the SCORM manifest as well. The dual purpose S1000D DM approach does not always support complex learning interactions and good instructional design principles.&lt;br /&gt;&lt;br /&gt;The second approach is to give complete freedom to the instructional designer to design an effective learning experience. All elements in the S1000D data modules that are reusable in SCOs are assigned a unique ID. Examples are: paragraphs, steps, warning, cautions, notes, tables, etc. This can be done automatically using the XSLT generate-id() function. The instructional designer then searches the CSDB to find and display relevant DMs. She can then use XInclude/XPointer to include reusable elements from the DM into the SCO. When this is done, the SCO is automatically updated when the DM is updated.&lt;br /&gt;&lt;br /&gt;Future versions of the S1000D specification will incorporate change proposal forms (CPFs) that will facilitate the integration of SCORM and S1000D content.&lt;br /&gt;&lt;br /&gt;A copy of my presentation is available &lt;a href="http://www.efasoft.com/JoelAmoussouOnS1000DSCORM.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5405888185312458319?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5405888185312458319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5405888185312458319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5405888185312458319'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2007/10/s1000d-and-scorm-integration.html' title='S1000D and SCORM Integration'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-2229668387335503721</id><published>2007-09-23T18:52:00.002-04:00</published><updated>2010-03-21T09:27:10.264-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S1000D'/><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><category scheme='http://www.blogger.com/atom/ns#' term='SCORM'/><title type='text'>Guidance for the Paperless Cockpit</title><content type='html'>One of the interesting applications of the Electronic Flight Bag (EFB) is electronic documents. Electronic documents allow aircraft operators to amend manufacturer’s flight operations manuals based on operator's policies and procedures and publish these manuals in electronic formats such as Adobe® Portable Document Format (PDF) and XML. Examples of these manuals are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Flight Crew Operating Manual (FCOM)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Quick Reference Handbook (QRH)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Flight Crew Training Manual (FCTM) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Minimum Equipment List (MEL)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Fault Reporting Manuals (FRM)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Weight and Balance Manual&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dispatch Deviations Guide&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;US Federal Aviation Administration (FAA) Advisory Circular (AC) 120 76A “Guidelines for the Certification, Airworthiness, and Operational Approval of Electronic Flight Bag Computing Devices” specifies the design and technical criteria for the approval of the human/machine interface of EFB systems. The following is an excerpt of the EFB Operational Evaluation and Approval Job Aid used by FAA inspectors for electronic documents functionalities:&lt;br /&gt;&lt;em&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Is there a training program on how to display and interact with electronic documents? Is it adequate?&lt;br /&gt;&lt;li&gt;Can the crews find the material they are looking for?&lt;br /&gt;&lt;li&gt;Is the information organized in a way that makes sense to the crews?&lt;br /&gt;&lt;li&gt;Is the information arranged in a consistent way on the screen so that the crews know where to look for specific types of information?&lt;br /&gt;&lt;li&gt;Is it obvious when text is out of view? Is it easy to bring that text into view?&lt;br /&gt;&lt;li&gt;Can the crew tell where they are in relation to the full document?&lt;br /&gt;&lt;li&gt;Can the crew tell where they are in relation to the section of the document they are currently viewing?&lt;br /&gt;&lt;li&gt;Is the text of the document easy to read on the screen?&lt;br /&gt;&lt;li&gt;Is white space used to separate short main sections of text?&lt;br /&gt;&lt;li&gt;Is high priority information especially easy to read?&lt;br /&gt;&lt;li&gt;Are tables readable and usable?&lt;br /&gt;&lt;li&gt;How are especially long and complex tables handled?&lt;br /&gt;&lt;li&gt;Are figures readable and usable?&lt;br /&gt;&lt;li&gt;Can the entire figure be viewed at one time?&lt;br /&gt;&lt;li&gt;Can the crew zoom in to read details on the figure?&lt;br /&gt;&lt;li&gt;Is it easy to move quickly to specific locations (e.g., to the beginning of a section, or to recently visited locations)?&lt;br /&gt;&lt;li&gt;Are active regions (e.g., hyperlinks) clearly indicated?&lt;br /&gt;&lt;li&gt;Is it easy to move between documents quickly?&lt;br /&gt;&lt;li&gt;Is it easy to tell what document is currently in view?&lt;br /&gt;&lt;li&gt;Is there a list of available documents to choose from?&lt;br /&gt;&lt;li&gt;Can crews search the document electronically?&lt;br /&gt;&lt;li&gt;Is the search technique adequate?&lt;br /&gt;&lt;li&gt;If animation is supported, does the crew have adequate control over it?&lt;br /&gt;&lt;li&gt;Can the crew start and stop the animation as needed?&lt;br /&gt;&lt;li&gt;Is there a text description of the animation that describes its contents (so the crews know its contents without running the segment)?&lt;br /&gt;&lt;li&gt;Is printing supported? If so, is it adequate?&lt;br /&gt;&lt;li&gt;Can crews select a portion of a document to be printed?&lt;br /&gt;&lt;li&gt;Is the hard copy usable?&lt;br /&gt;&lt;li&gt;Can the crew terminate a print job immediately, if necessary?&lt;br /&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/em&gt;These criteria have been developed as the result of research into human factors in the use of electronic documents in EFBs by the Human Factors Division of the Office of Aviation Programs at the Volpe National Transportation Systems Center. Knowing these criteria in advance can help an aircraft operator in preparing for approval. However, I believe that operators can benefit from a more detailed set of specifications in regard to the interface to electronic documents. Section 6.3.1 of the S1000D standard provides rules and guidance for the look and feel, and printed output from an Interactive Electronic Technical Publication (IETP). Section 6.4.1 defines a functionality matrix for IETPs to be used as an aid for defining requirements for S1000D projects. The functionality matrix leverages the US Department of Defense (DoD) long experience in defining class 1 to 5 IETMs with military specifications MIL-PRF-87268 and MIL-PRF-87269. For example, in the area of searching, the S1000D functionality matrix provides very detailed guidelines that go beyond the simple criteria "Can crews search the document electronically?" and "Is the search technique adequate?". The matrix breaks down searching functionalities into:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Full-text search &lt;br /&gt;&lt;li&gt;User-defined Boolean search&lt;br /&gt;&lt;li&gt;Search across multiple databases and files&lt;br /&gt;&lt;li&gt;Context search&lt;br /&gt;&lt;li&gt;Keyword search&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Publishing EFB electronic documents in XML provides many benefits over the Adobe® PDF format. Key enabling technologies for XML-based EFB electronic documents are: ISO Schematron, XSLT, XSL FO, XLink, XPointer, XInclude, and XQuery. For quality assurance, the electronic documents application should be subjected to rigorous unit testing and functional testing before its release to flight crews. A content management system can help an operator by providing features such as workflow routing, versioning, document locking, access control, and full audit trail of modifications made to documents.&lt;br /&gt;&lt;br /&gt;The Air Transport Association (ATA) has adopted S1000D as the next generation aircraft digital data standard and there is already a very close collaboration between the ATA and the S1000D TPSMG to harmonize commercial aviation technical data requirements with S1000D. That collaboration should be extended to electronic documents for EFBs to allow aircraft operators to leverage and influence the development of the S1000D IETP functionality matrix for better guidance on creating the paperless cockpit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-2229668387335503721?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=2229668387335503721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2229668387335503721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/2229668387335503721'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2007/09/guidance-for-paperless-cockpit.html' title='Guidance for the Paperless Cockpit'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-6809712383193466052</id><published>2007-09-02T16:59:00.000-04:00</published><updated>2007-09-22T19:15:39.857-04:00</updated><title type='text'>The Business Value of XML</title><content type='html'>What exactly is the business value of XML and its related technologies such as XML Schema, ISO Schematron, XForms, XSLT, and XQuery? Let's review three use cases where XML adds real value.&lt;br /&gt;&lt;br /&gt;The first use case is software configuration and metadata. Java EE Frameworks such as Hibernate, Spring, Struts, and JSF use XML for configuration and metadata. Unfortunately, not all Java EE developers understand the value of configuring their application with XML as opposed to Java annotations. There is currently a backlash against XML with some developers complaining about what they call "XML hell". These developers prefer to keep configuration and metadata closer to the code itself using Java annotations. Newer Java EE frameworks such as the JPA (Java Persistence API) and Struts 2 provide annotation capabilities which are very popular with developers. I personally believe that this is a trend in the wrong direction. Annotations are certainly convenient for developers, but not necessarily to end users of your application. With XML configuration, end users of your software who are not programmers can achieve a certain level of customization on their own by simply editing an XML configuration file in a text editor without importing your SDK in an IDE and compiling Java code or hiring a Java EE developer to do it for them. As a software buyer, when deciding between two competing products, I would choose (everything else being equal) the one that allows me to do some customizations with simple XML files. Developers can reduce the verbosity of their XML configuration files by using techniques such as inheritance, overridable default values, and preferring the use of attributes over child elements for example. A compromise could be to make the annotations overridable with XML configuration.&lt;br /&gt;&lt;br /&gt;The next use case is data exchange across organizations. Two example applications that are currently delivering real value are UBL and NIEM. XML vocabularies such as UBL and NIEM define common semantics and data structure trough data dictionaries and XML schemas respectively. In addition, they can specify certain business rules that can be enforced with the use of an assertion-based schema language such as ISO Schematron.&lt;br /&gt;&lt;br /&gt;Developed by OASIS, UBL (Universal Business Language) is an XML vocabulary for the exchange of business documents such as invoices, purchase orders, and receipts. In Denmark, the government has mandated the use of UBL invoices for all public-sector billing. The result is over 100 millions euros in savings every year. The Swedish government estimates that it can save 440 millions euros with the adoption of UBL for electronic commerce. Please note that these initiatives involve not only big government and Fortune 500 companies, but hundreds of thousands of SMEs (small and medium size enterprises) as well.&lt;br /&gt;&lt;br /&gt;NIEM (National Information Exchange Model) developed by the U.S. Department of Justice and the Department of Homeland Security is an XML vocabulary for the exchange of information between government agencies. For example, it allows law enforcement agencies to quickly exchange information. Law enforcement agencies use heterogeneous applications called RMS (Record Management Systems) and XML data is the bridge between them because it is vendor neutral, cross-platform, and supports structured data of arbitrary complexity. XSLT 2.0 as a generic XML transformation language can play an important role here as well. As an example, an RMS system can export raw XML data which can then be mapped to a NIEM compliant XML Schema by performing an XSLT transformation. If a legacy RMS system can only export CSV (comma-separated values)text files, XSLT 2.0 can up-convert the CSV into a NIEM compliant XML document. It is possible to process XML with a traditional programming language such as C# or Java. However, the problem is the "impedance mismatch" between the type system of these programming languages and a type system based on XML (such as the XML schema type system). Some developers will find XQuery easier to use than XSLT (probably because of its SQL-like syntax) for processing XML data. In addition, XSLT 2.0 and XQuery are declarative processing languages (they describe the "what" as opposed to the "how") and are therefore accessible to many non-programmers. &lt;br /&gt;&lt;br /&gt;The last use case is knowledge management in general and content management in particular. In the new global knowledge economy, the most important asset of an organization is its intellectual capital which is acquired and developed by its knowledge workers. That intellectual capital is often captured in documents such as blogs, wikis, emails, PowerPoint presentations, podcasts, engineering drawings, architecture diagrams, ISO 9000 quality manuals, installation and troubleshooting procedures, Microsoft Word documents containing requirements and design specifications, various corporate forms, etc. These mission-critical documents are often dumped into shared network drives. They are not managed with the same rigor and cannot be queried as the data contained in your CRM and ERP systems. The main reason is that these documents represent unstructured data as opposed to the well-structured relational data stored by the RDBMS on which your ERP and CRM systems sit. In some industries, the need to bring content under control is driven by regulatory compliance. In any case, organizations shouldn't wait until their most valuable employees leave before they start thinking about managing their knowledge assets. That's where an enterprise content management system (CMS) and an enterprise portal come into play. &lt;br /&gt;&lt;br /&gt;XML goes beyond tags, taxonomy, and content categorization to provide fine-grained content discovery, query, and processing capabilities. With XML, the document becomes the database. First, using XML schema, you can constrain and validate the structure and data types of the content of your business documents just like you do with a relational database schema. Using XForms, you can provide a user friendly interface for your end users to contribute XML content by presenting them with a regular HTML form. Once the content is captured as XML, it can be stored in a native XML database. With XQuery, the native XML database allows you to perform structured queries on the content (as opposed to just full-text or metadata search). XQuery also allows you to assemble content dynamically (for example, build two distinct training manuals for two different configurations of your product from a single source). You can use XQuery to query both relational (from your ERP and CRM systems) and XML data sources and aggregate the results. With XSLT, you enable content adaptation for cross-media publishing (print, web, and wireless) from a single source. &lt;br /&gt;&lt;br /&gt;If you decide to manage your product technical documentation with XML, there are standards that can help. The DITA (Darwin Information Typing Architecture) specification is very popular with computer software and hardware documentation. The S1000D standard is designed to support mission critical maintenance and operation documentation in industries such as aerospace, defense, automotive, oil and gas, heavy equipments and machinery, and power generation. &lt;br /&gt;&lt;br /&gt;Organizations that have a strategy for managing their knowledge assets using XML and related technologies will have a definitive competitive advantage in today’s economy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-6809712383193466052?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=6809712383193466052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6809712383193466052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/6809712383193466052'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2007/09/business-value-of-xml.html' title='The Business Value of XML'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-5136004276646809335</id><published>2007-08-10T20:13:00.001-04:00</published><updated>2010-03-21T09:29:04.472-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>Canada welcomes the C-17</title><content type='html'>The Canadian Air Force will receive this weekend the first of four strategic lift aircraft-the C-17 Globemaster III. &lt;br /&gt;&lt;a href="http://bp0.blogger.com/_vFn-XW2q8mg/Rr0AXocnaxI/AAAAAAAAABk/Vk-6ChrAUkI/s1600-h/CanadaOneDeliveryCeremonySet600.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_vFn-XW2q8mg/Rr0AXocnaxI/AAAAAAAAABk/Vk-6ChrAUkI/s320/CanadaOneDeliveryCeremonySet600.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5097230759247702802" /&gt;&lt;/a&gt;&lt;br /&gt;This is a special occasion for the Canadian Air Force for the following reasons:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The men and women of our armed forces who are deployed in dangerous peace keeping operations worldwide deserve the best equipment and logistics support we can afford, and they need them now.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Canada needs its own airlift capability to provide quick humanitarian relief and piece keeping operations anywhere in the world when needed.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://bp0.blogger.com/_vFn-XW2q8mg/Rr0B3ocnayI/AAAAAAAAABs/l3jFduL4SwI/s1600-h/070809V.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_vFn-XW2q8mg/Rr0B3ocnayI/AAAAAAAAABs/l3jFduL4SwI/s320/070809V.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5097232408515144482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The C-17 was competing against the EADS A400M. The C-17 was a good choice for Canada because:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The C-17 is a proven airlifter and Canada can leverage that experience immediately.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;EADS revealed last week that the A400M's first flight has been delayed until "the summer of 2008", and that "the consequence on deliveries and cost is under assessment". &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Finally, I must confess that I've always been in love with the C-17 for its design and record breaking capabilities.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-5136004276646809335?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=5136004276646809335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5136004276646809335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/5136004276646809335'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2007/08/canada-welcomes-c-17.html' title='Canada welcomes the C-17'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_vFn-XW2q8mg/Rr0AXocnaxI/AAAAAAAAABk/Vk-6ChrAUkI/s72-c/CanadaOneDeliveryCeremonySet600.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-4149690830999293017</id><published>2007-08-04T20:52:00.002-04:00</published><updated>2010-09-18T13:37:49.113-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>My russian aviation adventures</title><content type='html'>Fifteen years ago, in the summer of 1992, I had the opportunity to fly the Tupolev 154 as a flight engineer. I was flying with an Aeroflot crew based in St-Petersburg, Russia. This was part of a flight training program that also included theoretical studies at the Russian Academy of Civil Aviation in Aviagorodok (near St-Petersburg) and practical exercises on a flight simulator. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_vFn-XW2q8mg/RreeW4cnaqI/AAAAAAAAAA0/MFGMqD_V4-w/s1600-h/vis.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_vFn-XW2q8mg/RreeW4cnaqI/AAAAAAAAAA0/MFGMqD_V4-w/s320/vis.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5095715619339725474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Tu-154 did not have a glass cockpit like modern aircrafts, so the flight crew had to be skilled in aerodynamics as well as aicraft systems and engines. For someone who wanted to learn about airplanes, this was the right airplane to fly. &lt;a href="http://bp3.blogger.com/_vFn-XW2q8mg/Rreey4cnarI/AAAAAAAAAA8/dcv2BRUk_mM/s1600-h/main2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_vFn-XW2q8mg/Rreey4cnarI/AAAAAAAAAA8/dcv2BRUk_mM/s320/main2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5095716100376062642" /&gt;&lt;/a&gt;The Tu-154 was powered by three Kuznetsov NK-82 turbofans and was a very reliable airplane at the time. The Tu-154 seats about 160 passengers and flight crew of three or four. I was seated on the flight engineer deck. My role was to control and monitor the aircraft's engines and systems (hydraulic, electrical, pneumatic, air conditioning, and APU) during normal, abnormal, and emergency situations. Each flight started with a visual inspection of the exterior of the airplane followed by some systems and engines checks inside the cabin.&lt;a href="http://bp2.blogger.com/_vFn-XW2q8mg/RrefBocnasI/AAAAAAAAABE/HuTIRM1cs9M/s1600-h/eng.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_vFn-XW2q8mg/RrefBocnasI/AAAAAAAAABE/HuTIRM1cs9M/s320/eng.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5095716353779133122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Tu-154 flight manual was a good guide and I was fortunate to have a very professional and experienced instructor during the simulator training. The flights took me to the following cities:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Anapa&lt;/li&gt;&lt;li&gt;Mourmansk&lt;/li&gt;&lt;li&gt;Dnepr&lt;/li&gt;&lt;li&gt;Kiev&lt;/li&gt;&lt;li&gt;Moscow&lt;/li&gt;&lt;li&gt;Simferopol&lt;/li&gt;&lt;li&gt;Volgograd&lt;/li&gt;&lt;li&gt;Krasnadar&lt;/li&gt;&lt;li&gt;Sotchi&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;a href="http://bp3.blogger.com/_vFn-XW2q8mg/RregP4cnawI/AAAAAAAAABc/Ub_v3jrn1e0/s1600-h/viewr3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_vFn-XW2q8mg/RregP4cnawI/AAAAAAAAABc/Ub_v3jrn1e0/s320/viewr3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5095717698103896834" /&gt;&lt;/a&gt;&lt;br /&gt;All these flights were uneventful and gave me the chance to discover the russian countryside. It was a pleasure to fly with the rest of the crew. They were interested in learning few english and french words from me. My first 6 months in Russia were spent learning to speak, read, and write in the russian language. The total immersion helped learn the language very quickly and I was able to take all the aviation courses and read the aircraft technical documentation in russian.&lt;br /&gt;&lt;br /&gt;I wanted to revive my memories of flying the Tu-154 with a PC-based flight simulator. While surfing the web, I found a web site for Project Tupolev Tu-154B2 which is a flight simulator for the Tu-154. In the simulator, the flight engineer panel is very detailed and realistic. It is divided in sub-panels for engine parameters, hydraulic system, electrical system, etc. &lt;a href="http://bp0.blogger.com/_vFn-XW2q8mg/RrefqIcnauI/AAAAAAAAABQ/96uhhmCWSKM/s1600-h/eng_n.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_vFn-XW2q8mg/RrefqIcnauI/AAAAAAAAABQ/96uhhmCWSKM/s320/eng_n.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5095717049563835106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Instructions are provided on how to get the engines and systems started, but clearly, my previous knowledge about the aircraft was very helpful. The simulator comes with an english user guide, but the flight deck is completely in russian.&lt;br /&gt;&lt;br /&gt;The simulator can be downloaded from the &lt;a href="http://www.protu-154.com/files_e.html"&gt;Project Tupolev Support Site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2374388455287292795-4149690830999293017?l=efasoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374388455287292795&amp;postID=4149690830999293017' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4149690830999293017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374388455287292795/posts/default/4149690830999293017'/><link rel='alternate' type='text/html' href='http://efasoft.blogspot.com/2007/08/my-russian-aviation-adventures.html' title='My russian aviation adventures'/><author><name>Joel Amoussou</name><uri>http://www.blogger.com/profile/06437681488603449364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-tHwScZfO9uc/TWfpiLDwi3I/AAAAAAAAAMQ/xzRuhT0IXxk/s220/zebra.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_vFn-XW2q8mg/RreeW4cnaqI/AAAAAAAAAA0/MFGMqD_V4-w/s72-c/vis.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374388455287292795.post-321865708830691503</id><published>2007-07-22T11:58:00.001-04:00</published><updated>2010-03-21T09:28:27.649-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Aviation'/><title type='text'>RESTful IDEAS</title><content type='html'>About a year ago, I published a white paper entitled: "Beyond S1000D: an SOA Enabled Interoperability Framework for the Aerospace Industry".&lt;br /&gt;&lt;br /&gt;The white paper proposed a framework called "Integrated Documentation Environment for Aircraft Support (IDEAS)" for the interoperability of enterprise content management and publishing systems within the aerospace industry. The goal was to allow new capabilities such as the remote access to library services, cross-repository exchange, cross-repository aggregation, and cross-repository observation.&lt;br /&gt;&lt;br /&gt;Global aerospace organizations acquire technical publications from multiple suppliers and business partners. They must address the following challenges:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The elimination of the high costs associated with paper libraries and the shipping of physical products such as paper, CDs, and DVDs.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The safety and regulatory compliance concerns related to the slow distribution of supplements to field sites. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;The need for a single point of access to the multitude of technical documentation needed to maintain and operate aerospace equipments.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The IDEAS concept was created to address current inefficiencies in technical data management processes within the industry by taking advantage of Service-Oriented Architecture (SOA) and emerging content management standards such as the JSR 170 Content Repository for Java Technology API.&lt;br /&gt;&lt;br /&gt;One the Java EE platform, JSR 170 is enjoying a lot of success in terms of adoption and implementation. In the Open Source world, the Apache Jackrabbit project continues to evolve and there is now a Spring JSR 170 Module to simplify development with the very popular Spring Framework.&lt;br /&gt;&lt;br /&gt;For cross-platform interoperability, SOA based solutions have traditionally relied on web services standards such as SOAP, WSDL, and UDDI. Ho
