Title: BizTalk Accelerator for Healthcare
1BizTalk Accelerator for Healthcare
2BizTalk Accelerator for Healthcare
Mark Oswald Program Manager E-Business Server
Division Microsoft Corporation
3Agenda
- BizTalk and HL7 Accelerator Overview
- Pipelines and Ports
- HL7 MLLP Communications
- HL7 Message Structure
- Working with HL7 Schema
- Transformation Maps
- Business Process Automation
- Health and Activity Tracking
4BizTalk Overview
5BizTalk Architecture
Orchestration
Monitoring Reporting Business Intelligence
Configuration Deployment
Mapping
HTTP
SOAP-RM
MSMQ
FTP
MQ Series
File
MLLP
6BizTalk Message Flow
Orchestration
Transport
Transport
Decrypt
Parse
Resolve Party
Serialize
Sign Encrypt
Send Pipeline
Receive Pipeline
Message Box
7Unified Development Environment
Schemas
Define Business Documents
Orchestration
Model the Business Process
Pipelines
Visual Studio .NET
Mapping
Process Messages
Transform Data
8Creating a BizTalk Server Project
Visual Studio .NET Solution
- Visual Studio .NET Solution
- Contains one or more projects
- BizTalk Projects
- Orchestrations
- Schemas
- Maps
- Pipelines
BizTalk Server Project
9HL7 Accelerator Overview
10HL7 Accelerator Components
- The HL7 Accelerator provides BizTalk with HL7
support through - Predefined message schemas
- 2.1, 2.2, 2.3, 2.3.1, 2.4 versions
- 2.xml
- Predefined Receive Pipeline
- Disassembles the HL7 flat file to an XML file to
be used internally by BizTalk (DASM Component) - Predefined Send Pipeline
- Assembles the data back into the original HL7
flat file format for exit from BizTalk (ASM
Component) -
11HL7 Accelerator Components Contd
- BTAHL7 Disassembler
- Engine that provides the following functionality
- Dynamically selects appropriate schema validation
- Structural validation
- Syntactic validation (data types)
- Dynamic delimiter validation
- Handles escape sequences
- Handles conditional optionality
- Handles defined or unexpected Z segments
- BTAHL7 Assembler
- Engine that generates HL7 encoded documents
12HL7 Accelerator Components Contd
- MLLP Adapter
- For processing HL7 data streamed over a TCP/IP
socket using MLLP - Can receive message and send ACK on same socket
- Configurable as request response (1 way) or
solicit response (2 way) - Automatic Message Acknowledgments
- HL7 Configuration Explorer for easy configuration
of acknowledgement messages - Supports original, enhanced, and static mode
acknowledgements - Routes deferred ACK messages
13HL7 Accelerator Components Contd
- Batch Processing
- Ability to
- Create a batch
- Fragment batched messages into individual
messages - Route pre-built batches (BI/BO)
- HL7 Configuration Explorer used for easy
configuration of batch scheduling and included
messages - Auditing and Logging
- Auditing and Logging SQL database extending
BizTalks Health and Activity Tracking (HAT)
functionality
14Fundamental BizTalk Components for HL7
BTAHL7 2X Receive Pipeline
HL7 Receive Pipeline
A predefined pipeline that disassembles the HL7
data into XML for use by the BT engine
Receive Port
Send Port
Serialize
Sign Encrypt
Decrypt
Parse
Resolve Party
DASM Component
Message Box
15Fundamental BizTalk Components for HL7
HL7 Send Pipeline
HL7 Send Pipeline
- A pre-defined pipeline that assembles data into
an HL7 encoded document
Receive Port
Send Port
Serialize
Sign Encrypt
Decrypt
Parse
Resolve Party
ASM Component
Message Box
16Configure Parties and Acknowledgments
- BTAHL7 Configuration Explorer
- Used to configure
- Validation
- Acknowledgements
- Batches
17System Walkthrough HL7 File Transfer
Registration system sends file to Receive Location
Health Information System (HIS)
Registration System
Send Port subscribes to messages with specific
MSH content
MLLP
MLLP
ASM
Sign Encrypt
Decrypt
DASM
Resolve Party
HL7 Send Pipeline
HL7 Receive Pipeline
Message Box
HL7 Assembler takes an XML document and returns
an HL7 formatted flat file
The HL7 Disassembler parses the flat file
messages and returns an XML document
18Ports and Pipelines
19Fundamental BizTalk Components
Send Port
Receive Port
A predefined data drop location that subscribes
to messages received in a particular Receive Port
- A data transformation map can be executed at
various stages along the way - or
- Data can simply be passed from point to point
A message is received in a predefined location
Receive Port
Send Port
Serialize
Sign Encrypt
Decrypt
Parse
Resolve Party
Send Pipeline
Receive Pipeline
Receive Pipeline
Message Box
Send Pipeline
Prepares the message for processing through the
BT message database
Reconstructs the message if necessary prior to
leaving BT
20The Fundamentals
- Ports and pipelines are fundamental to every
other BizTalk process - Ports
- All data gets into BizTalk through receive ports
- All data leaves BizTalk through send ports
- Send ports subscribe to receive ports
- All messages received in a specific port or
- Specific data content flowing through a specific
port
21The Fundamentals
- Pipelines
- Pipelines funnel data to and from the BizTalk
MessageBox - Data is parsed and validated in Receive Pipelines
- Data is serialized and encrypted in Send
Pipelines - Two default pipelines plus users can create their
own - Pass Thru the data is not touched, it is simply
funneled - XML data will be parsed as xml and validated
against a schema - HL7 Accelerator adds HL7 send and receive pipeline
22What is a Pipeline?
Pipeline Processing
Receive Pipeline
Orchestration
Send Pipeline
- Stages
- Pre-Assemble
- Assemble
- Encode
- Stages
- Decode
- Disassemble
- Validate
- Resolve Party
Pipeline Components
23Creating a Custom Pipeline with the Pipeline
Designer
Pipeline File
Toolbox
Drag the Flat file disassembler into the
Disassemble Component
24Create a Receive Port and Receive Location
- A Receive Port is the way that services interact
with external partners when receiving data - One Way
- Request-Response
- A receive location is the physical, design-time
notion of a location (such as a URL) and a
protocol type - Transport type
- Address (URL)
- Receive Handler (BizTalk Server Application)
- Receive Pipeline
25Configuring a Receive Port
- In BizTalk Explorer, right-click on Receive Port
to add a port - Specify the transport type
- Name the port
1
26Configuring a Receive Location
2
- Right click on Receive Locations under the
desired Receive Port - Choose Transport Type
- Enter Address (URL)
- Specify Receive Handler
- Specify Receive Pipeline
27Create a Send Port
- Similar to a receive location, a send port is a
grouping of endpoints that are used for
transmitting messages - Consists of
- A primary URL
- A backup URL
- Optionally refers to one send pipeline and an
encryption certificate
28Configuring a Send Port
Configure Put Location
- In BizTalk Explorer, right-click on Send Port to
add a port - Specify the port type
- Name the port
- Specify Transport Type and Address (URL)
29Configuring Send Pipeline and Filters
Specify Send Pipeline
- Under Configurations, select Send
- Select Pipeline
Subscribe to Receive Port
- Under Configurations, Filters Maps, Select
Filters - Enter Filter Expression
- Data causing the expression to evaluate to True
will be sent to this port
30MLLP Adapter
31HL7 Message Communications
- For IP-based communications, HL7 is often
streamed over a TCP/IP socket - Data is presented following Minimum Lower-Level
Protocol - Message start and stop control characters placed
around message - Data stream end is indicated by additional
control character - MLLP Communications Adapter
- Manages Communications with sending and receiving
systems - Moves HL7 messages to/from pipelines
32HL7 MLLP Adapter
- HL7 Accelerator provides an MLLP Adapter
- Socket configuration
- Can receive message and send ACK on same socket
- Configurable as request response (1 way) or
solicit response (2 way)
33Configuring the MLLP Adapter
- Select MLLP as Transport Type
- Configure Host and Socket in Transport Properties
- Use the HL7 Receive Pipeline
34HL7 Message Structure
35How the HL7 Standard Works
- HL7 assumes that an event in the real world of
healthcare creates the need for data to flow
among systems - Called a Trigger Event
- Trigger Event real world event
- Examples
- A change in a patients status
- Ordering of a procedure
- Return of Lab Results
- Identified by a unique 3 character code
36Sample Trigger Event Codes
- Patient Administration
- A01 Admit a Patient
- A03 Discharge a Patient
- A04 Register a Patient
- Order Processing
- O01 Order
- R01 Return of Order Results
37Message Types
- Four primary message types
- Referred to by a three character code
- Patient Administration - ADT
- Order Processing ORM
- Procedure (Observation) Results ORU
- Financial DFT
- Messages are referred to by both their Type Code
and Trigger Code - Example A message informing of a patient
admission is an ADTA01
38Flat File Syntax Characters
39Message Structure
- Message parts
- Segment
- Field
- Component (one or more)
- Sub Component (optional)
- All messages have a message header and body
- The message header is the first segment in the
message - The other segments make up the body
40Segments
- Segments are logical groupings of data fields
- Identified by a 3 character Segment ID
- Contain a specific type of information
- Segments end with a carriage return
Patient Last Name
PID1 PATID12345M11 SMITHHARRYT
Segment Id if PID Patient Identification
Patient First Name
41Segments
- May be required or optional
- May occur only once or they may be allowed to
repeat
MSH\ADT1MCMLABADTMCM198808181126SECURITY
ADTA01MSG00001P2.3 EVNA01198808181123 PI
DPATID12345M11JOHNSMITHJIII19610615M
C1 MICROSOFT WAY STREDMONDWA98052GL(425)93
6-7329(425)678-5309SPATID123450012M1012345
6789987654NC NK11SMITHBARBARAKWIFENK
NEXT OF KIN PV11I2000201201004777LEBAUE
RSIDNEYJ.SURADMA0 AL11PENICILLINP
RODUCES HIVESRASHLOSS OF APPETITE AL12DOG
HAIRRESPIRATORY DISTRESS
First Allergy
Second Allergy
42Data Fields
- Segments are logical groupings of fields
- Data fields are typically separated by a symbol
- A data field is a unit of data such as a name,
number, address, etc. - Identified by element name or data type code
- Referred to by position in segment
- EVN Segment
- EVN.1 (Event Type Code)
- EVN.2 (Recorded Date/Time)
- Etc. (Other Fields in EVN Segment)
43Components and Sub Components
- Data within a data field is further separated
into components - Components separated by a symbol
- Can repeat within the same field
- Repeating values separated by a symbol
-
PD11EEMERGENCYROOM31E4421WELBYMARCUS
MD
AL11PENICILLINPRODUCES HIVESRASHLOSS OF
APPETITE
reactions to an allergy
44Subcomponents
- A component may contain components, called
subcomponents - Separated by a symbol
- Subcomponents
- Can repeat in same field
- Are optional
-
45Sample Message
Patient Administration Message Patient has been
admitted
- MSH\ERADMITMAINBILLINGMAIN200309241123A
DTA019876PI2.3.1 - EVNA01200309241123
- PID88888PRIMARY99999LABU6123456SMITHHA
RRYTBabasafa19610521MALE123 CENTER
STREETMETROLOLISIL60016USAHOME(555)123-4567
ENGLISHMCATHOLIC3444-55-6666555555555IL - PV11EEMERGENCYROOMROOM3BED1E4421WELBYMA
RCUS - AL11PENICILLINPRODUCES HIVESRASHLOSS OF
APPETITE - AL12DOG HAIRRESPIRATORY DISTRESS
Date and Time of Admission
Attending Physician Physician IDLastFirst
46BizTalk Schema
47What is a BizTalk XML Schema?
- BizTalk uses the XML Schema Definition Language
(XSD)
- An XML schema defines
- Elements
- Attributes
- Data types
- Order of tags
- Mandatory fields
- Multiple occurrences
48Supported Schema Types
49Creating a Schema Using the BizTalk Editor
Schema Tree View
XSD View
50Transformation Maps
51What is a Map?
- Defines the correspondence between records and
fields in two different schemas
- Data Transformation
- Perform computational and other data operations
- Automatically inserts the data from one message
into another during runtime - Data Translation
- Change the format of data between messages
- Example translate to and from a flat file and an
XML file
52Creating a Map using the BizTalk Mapper
- BizTalk Mapper
- Integrated within Visual Studio .NET
- Becomes active when a map is opened or added to a
project - Schemas must be part of the project or referenced
in another assembly
DestinationSchema
Map Zone
Source Schema
53What is a Functoid?
- Mechanism for performing operations on mapped data
- 70 Predefined functoids
- Add and modify data
- Change date and time
- Concatenate fields
- Perform complex transformations
- Custom functoids
- Custom functionality
- Use scripting functoid
- Create in Visual Basic or C
Destination Schema
Source Schema
Order
(..)
PO Number
Date
Item No
Quantity
X
Order Status
Total Price
54Configuring a Send Port to execute a map
- Subscribing Send Port can execute a map on the
data its receiving - Select Outbound Maps under Filters Maps in Send
Port configuration - Select any deployed map
55Business Process Automation
56What is Orchestration?
- BizTalk Orchestration
- A new way to design, deploy, and maintain
distributed business processes - Used to design business processes that manage the
overall business logic - Combines a run-time engine with a design-time
tool called Orchestration Designer
Business Process
Orchestration
Mapping
lttaggt lttaggtlttaggt lttaggt
57Working in the Orchestration Designer
Design Surface
Port Surface
Port Surface
Toolbox
58Configuring Message and Data Handling Shapes
!
Receive_1
!
ContructMesssage_1
!
MessageAssignment_1
!
ContructMesssage_1
!
Transform_1
!
Send_1
Message_1
59Configuring Orchestration Flow Shapes
Decide_1
!
Else
Rule_1
Drop a shapefrom the toolbox here
Drop a shapefrom the toolbox here
!
Delay_1
Group_1
Drop a shapefrom the toolbox here
Listen_1
!
!
Drop a Receive orDelay shape here
Drop a Receive orDelay shape here
Drop a shapefrom the toolbox here
Drop a shapefrom the toolbox here
60Configuring Orchestration Flow Shapes (Cont.)
!
Loop_1
Drop a shapefrom the toolbox here
ParallelActions_1
Drop a shapefrom the toolbox here
Drop a shapefrom the toolbox here
!
Terminate_1
X
61Configuring Transaction and Exception Handling
Shapes
!
Compensate_1
62Configure Port and Role Link Shapes
Port_1 Operation_1 gt Request
RoleLink_1
Provider
Insert Ports that your orchestration is
Implementing into this role (i.e. receive ports)
Consumer
Insert Ports that your orchestration is using
into this role (i.e. receive ports)
63Health and Activity Tracking
64What is Health and Activity Tracking (HAT)?
- The ability to receive detailed information about
a message as it flows throughout your system
65The HAT Database
- Information is stored in SQL Server so can be
easily accessed through the HAT query interface
tool
Transport
Transport
Decrypt
Parse
Resolve Party
Serialize
Sign Encrypt
Config DB
Message DB
Tracking DB
66The HAT Tool
- A configurable, run-time tracking system
- View End-End Message Flow
- Query and analyze tracked data
- Interactive Orchestration Debugger
- General Troubleshooting
- External Interface
67Demo
68BizTalk Accelerator for HL7
http//www.microsoft.com/hl7
69Thank you for attending. Visit www.mshug.org.