2013-03-16

Preparation - VistA Messaging

Logical Links, Applications and Protocols are required in order to receive HL7 scheduling messages.

Logical Links

From VistA's perspective, links are required to receive and send HL7 messages. Using "HL7 Main Menu" --> "Interface Developer Options" --> "Link Edit"...

Receiving Link

Select HL LOGICAL LINK NODE: QBR39500
Are you adding 'QBR39500' as a new HL LOGICAL LINK (the 137TH)? No// Yes

This is the link that will be used to receive HL7 messages.


Sending Link

Select HL LOGICAL LINK NODE: QBS36400
Are you adding 'QBS36400' as a new HL LOGICAL LINK (the 137TH)? No// Yes

The IP address, 10.0.2.2, corresponds to the IP address of Mirth.


Applications

Applications are used to route messages within VistA. Using "HL7 Main Menu" --> "Interface Developer Options" --> "Application Edit"...

Select HL7 APPLICATION PARAMETER NAME: QBMIB MIRTH SCHED
  Are you adding 'QBMIB MIRTH SCHED' as a new HL7 APPLICATION PARAMETER (the 242ND)? No// Yes

Select HL7 APPLICATION PARAMETER NAME: QBMIB VISTA SCHED
  Are you adding 'QBMIB VISTA SCHED' as a new HL7 APPLICATION PARAMETER (the 242ND)? No// Yes

Protocols

Protocols tie Applications, Links and code together. For a proof oc concept, the initial HL7 v2.x set of scheduling messages are:

  • SIU-S12 – Notification of new appointment booking
  • SIU-S15 – Notification of appointment cancellation

Using "HL7 Main Menu" --> "Interface Developer Options" --> "Protocol Edit"...

SIU-S12 (Notification of new appointment booking)

Select PROTOCOL NAME: QBMIB SCH SIU-S12 RCVR
Not a known package or a local namespace.
  Are you adding 'QBMIB SCH SIU-S12 RCVR' as a new PROTOCOL? No// Yes

The "SENDING APPLICATION" should be the one defined above "QBMIB MIRTH SCHED". The  subscriber can be created directly from this screen; "QBMIB SCH SIU-S12 RSUBS"

The "RECEIVING APPLICATION" should be the one defined above "QBMIB VISTA SCHED". The code for the processing routine (SIURCVR^QBMIBSCHED) can be found in the code repository (link on right).


SIU-S15 (Notification of appointment cancellation)

Select PROTOCOL NAME: QBMIB SCH SIU-S15 RCVR
Not a known package or a local namespace.
  Are you adding 'QBMIB SCH SIU-S15 RCVR' as a new PROTOCOL? No// Yes

The "SENDING APPLICATION" should be the one defined above "QBMIB MIRTH SCHED". The  subscriber can be created directly from this screen; "QBMIB SCH SIU-S15 RSUBS"

The "RECEIVING APPLICATION" should be the one defined above "QBMIB VISTA SCHED". The code for the processing routine (SIURCVR^QBMIBSCHED) can be found in the code repository (link on right).

Preparation - Mirth

For the proof of concept, simple LLP sender and receiver channels are needed in Mirth.

LLP Sender

The sender listens on port 36500. Mirth does not do HL7 over HTTP out of the box., so for a proof of concept listening on LLP is sufficient.  
LLP Sender Channel - Summary
LLP Sender Channel - Source
LLP Sender Channel - Destination

LLP Receiver

The receiver listens on port 39500. This configuration corresponds to the VistA Logical Link, QBS36400, configured in Preparation - VistA Messaging.
LLP Receiver Channel - Summary
LLP Receiver Channel - Source
LLP Receiver Channel - Destination

Initial Concept

Figure 1 is an over simplified block diagram for the initial concept. This may or may not be achievable, probably will change and is definitely not complete.
Figure 1

The Placer Application will be a web app or portlet. It will communicate with the backend using HL7 v2.x SIU messages. HAPI's draft standard for HL7 over HTTP will be explored as the transport.

The initial HL7 v2.x set of scheduling messages are:
  • SIU-S12 – Notification of new appointment booking
  • SIU-S15 – Notification of appointment cancellation

The Filler Channel will create or update an iCalendar document inside an IHE XDS repository. Upon successfully storing the appointment in XDS, the Filler Channel will notify VistA (playing an Auxiliary Application Role) that a new appointment was created using a HL7 SIU message.

External applications, such as email clients (Outlook, Thunderbird, etc), can request the iCalendar document using an HTTP Get request.

Finally, XACML will be used to enforce authorization.

VA Medical Appointment Scheduling Contest

The purpose of the contest is to:
Help Veterans make appointments for VA outpatient and ambulatory care by creating systems that are compatible with Open Source VistA and help to lead health IT transformation.
The prize(s):
Monetary prizes as much as $3 Million to as many as 3 entrants
That's quite a prize... so I became an entrant. And started a code repository (Lamp Post) to hold code examples from this blog.