Multi-tenant healthcare information systems integration

hcsa.002Scenario: A single healthcare information system needs to be exposed for different healthcare providers (hospitals). The system need to pass HL7 messages that comes via HTTP (API calls) to a HL7 receiver, (over tcp) reliably

TODO: Enable HL7 transport senders in axis2.xml & axis2_blocking_client.xml in WSO2 ESB
following config shows the ESB configuration for iuhealth.com tenant
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
<registry provider="org.wso2.carbon.mediation.registry.WSO2Registry"/>
<sequence name="hl7callout">
<callout serviceURL="hl7://localhost:9988">
<source type="envelope"/>
<target key="mssage"/>
</callout>
</sequence>
<sequence name="hl7msgstore">
<log level="full"/>
<store messageStore="JMSMSIU"/>
<payloadFactory media-type="xml">
<format>
<response xmlns="">HL7 Message Queued For Processing</response>
</format>
<args/>
</payloadFactory>
<respond/>
</sequence>
<sequence name="fault">
<log level="full"/>
</sequence>
<sequence name="main">
<log/>
<drop/>
</sequence>
<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore"
name="JMSMSIU">
<parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
<parameter name="store.jms.destination">iuhealth.com</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
</messageStore>
<messageProcessor class="org.apache.synapse.message.processor.impl.sampler.SamplingProcessor"
name="HL7MsgProcessorIUHealth"
messageStore="JMSMSIU">
<parameter name="interval">1000</parameter>
<parameter name="sequence">hl7callout</parameter>
<parameter name="concurrency">1</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
<api name="healthmsgapi" context="/t/iuhealth.com/healthmsg">
<resource methods="POST" inSequence="hl7msgstore"/>
</api>
</definitions>

view raw
synapse.xml
hosted with ❤ by GitHub

A simple tool for all sorts of diagrams

Recently I had to draw some solutions architecture diagrams, and searched some good tools for diagramming. I have used Visio, long time back, nice tool, but I wanted to stick to Ubuntu and didn’t like switching back and forth. I tried Dia and Umbrello but they couldn’t really content me.

What I really digged in a nice architecture diagram is mainly its simplicity (Simple way the complex scenarios are drawn), fresh, elegant and rich look, as for a diagramming tool, it has to be simple (don’t have to be an artist) and flexible (should be able to draw new shapes if needed etc)

Sometime back I have used “Pencil” to draw some wire frames for a web app I was creating, I really liked the tool, and the final look and feel of the diagram it created. Non of the advance diagramming tools generated such a rich look and feel. So I thought of creating few custom stencils to graduate Pencil from a wire-framing tool to a full fledged multipurpose diagramming tool.

I created Three stencils to draw most of the enterprise architecture diagrams, following diagram is a sample solutions architecture diagrams I created using Pencil, and the custom stencils I created.

The stencils I have created are,

So if you are interested go ahead download the stencils, and install them in “Pencil” and if you still haven’t tried “Pencil”, I highly recommend it.