VistA Service Assembler

Report
VistA SOA Services
VistA Service Assembler (VSA)
Conceptual and Technical Overview
VSA Development Team
April 2014
The VSA “Narrow Focus”
“How is VistA supposed to integrate with
external systems / applications in the Service
Oriented Architecture (SOA) environment?”
VistA SOA Services
2
Common Legacy SOA Interpretations
VistA
Encapsulation / Encasement
HealtheVet VistA
Notes
Service
Ordering
Service
Rx
Service
CP&E
Service
Consumers
Atomization / Re-Hosting
– Major retooling and investment
– Subjective interpretation
– Inability to anticipate future
consumers
– Tendency to build too much, to
build too little
– Perpetuates shortcomings and
dependencies on legacy systems
– Inhibits individual application
replacement
– Granular logic, “chatty”
communications exacerbated by
the middleware layer
MDWS/VIA
VistA
Notes
Rx
Ordering
Consumers
CP&E
VistA SOA Services
3
VSA precepts
VistA Service Assembler (VSA) is not an “adaptor”. It
positions VistA as a direct provider of SOA web
services. This is a paradigm shift in VistA system
integration approach
VSA is not a collection of ‘services’, it is a set of utilities
that facilitate the structured creation of VistA-based,
SOA compatible services
With minimal technical orientation, VSA facilitates the
automated creation of VistA based web services to
support system integration and the implementation of
SOA in the VA
VistA SOA Services
4
VSA Objectives and Outcomes
Technical—
• Position VistA as a direct provider of SOA services
– Maintain/enhance existing security, auditing and role based access
– Ensure implementation of the ‘user identity communication’ design
pattern, generalizable for all VistA connectivity middleware solutions
– Maintain VistA data integrity and VistA application-based
provision/interpretation of data
– Ensure SOA architectural principles (e.g. authoritative services, nonredundancy, loose coupling)
– Standardize VistA SOA service design to support improved maintainability
and sustainability
Organizational—
• Facilitate effective and reliable VistA SOA development
– Simplify organizational orientation related to development that involves
both legacy VistA and OO environments
– Facilitate VistA SOA service development efficiency through automation
– Enable community development participation and VSA product utilization
(e.g. ‘open source’)
VistA SOA Services
5
Major Elements of the VSA Solution
• VistA SOA service infrastructure
–
–
–
–
VistA Service Assembler Wizard
Service descriptors database
Federating platform and federating logic
M environment components for ‘service’ execution
• Definition of Policy and Process
– VSA infrastructure distribution
– VistA SOA service distribution
• External component integration and
implementation**
– VistA SOA ‘reference implementation’ services
– VSA “Pre/Post” action logic components
**Collaboration with/contribution by external groups
VistA SOA Services
6
VistA Service Assembler (VSA) High Level
1
2
3
4
5
VistA
A M Developer or System Integrator identifies existing or new
M routine(s) to be called by a new or existing VistA SOA
Service.
The M Developer or System Integrator executes the
Assembler Wizard providing required information such as
operation names, mumps routines to be called, and parameter
mappings.
VistA SOA Federating
Services Platform - Regional
(Java)
2
M Hosting Platforms
MUMPS Caché
Hosting
Platform
(Intersystems
or open
source
(Intersystems
or Open
platform
(ie. GT.M),Caché
130+ instances
Source
Platform (ie.
in production
in Graystone))
VA)
VistA Service Assembler
Wizard
A VistA SOA Service descriptor is generated and stored in the
VistA SOA Federating Service Platform.
M Code and Data
All Other Packages
A new VistA SOA Service is auto-generated and published.
Organizations using VSA as an ‘open source’ solution can
engage VSA services directly if SOA infrastructure (e.g. ESB) is
not implemented.
3
6
Enterprise Service Bus (ESB)
4
VistA Service Assembler
SOA Service Descriptors
(generated by the Assembler
Wizard)
VSA Package
Site Specific VistA M
Routine Calling
Adapter (VMRCA)
Registry and Repository
Core ESB
VistA SOA Services
VistA SOAbyServices
(generated
the
(Websphere Registry and
Repository)
(Websphere Message
Broker)
(generated
by the
Assembler
Wizard)
Assembler Wizard)
VistA SOA Service
Registry Entries
VistA SOA Service
Proxies
6a
VA integration
approach
6b
Consuming
Applications
Consumers
6a
5
‘Open Source’
connectivity
Routines
Private
Interface
Site Specific VistA M
Routine Calling Service
(VMRCS)
6
VA integration approach – ESB is deployed to production
6a
Registry entries and service proxies created for the VistA SOA
Services.
6b
1
The Consuming Applications integrate with the VistA SOA
Service proxies published on the ESB and the direct
connection to the VistA SOA Services published on VistA are
retired.
7
VSA “Pre/Post” Logic
(Future Implementation)
SOA Services Environment
Consuming
Applications
“Pre”
logic
1.
10.
ESB
/
eMI
“Pre”
logic
3.
2.
4.
VSA
5.
core logic
9.
8.
“Post”
logic
VistA M Environment
6.
7.
“Post”
logic
VistAs
&
RPCs
Solution Attributes
• Cost Effective
–
–
–
–
Able to rapidly expose broad VistA functionality as ‘services’
Rapid development and incremental approach
Minimal retooling of VistA applications or retraining developers
Low impact organizationally
• Addresses SOA objectives
–
–
–
–
–
–
Security and system performance
Semantic and syntactic compatibility
Reusability and non-redundancy
System maintainability, sustainability and replaceability
Provides value before full SOA infrastructure is in place
Complete integration and compliance with SOA architecture
• Enables major consumers (e.g. mobile computing)
• Alleviates ‘vendor dependence’ concerns while exponentially
expanding VistA extensibility and ‘open source’ product
development opportunities
VistA SOA Services
9
Current Status
• VSA ‘proof of concept’ delivered December 2014
• VSA ‘design time’/’run time’ components are operational,
development underway to complete “essential”
functionality features and prototype deployment
• Major dependencies include ESB/eMI implementation,
‘user identity’ design pattern (incl. ‘user provisioning’),
multiple “user” types, ‘consuming application’
authentication, service consumption governance, etc.
• VSA Phase II (Feb. – January 2015)—
•
•
Increment 1 – Development focused, initial implementation
Increment 2 – Implementation focused, remaining development
• Collaboration with ConnectedHealth effort
•
•
Implementation of actual business use cases related to VPS Kiosk, etc.
Non-production/”production ready” implementation of VSA ‘run time’
capabilities targeted NLT summer 2014
VistA Service Assembler
10
Navigate to a directory
location and select or create a
Service Descriptor file.
Service Descriptor File
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<serviceDescriptor xmlns="http://vsa.med.va.gov/schema/service-descriptor-0.0.1">
<serviceName>ZzMkoMyService</serviceName>
<serviceType>soap</serviceType>
<version>1.0.1</version>
<serviceNamespace>http://gov.va.med.zzmko</serviceNamespace>
<javaPackage>zzmko.med.va.gov</javaPackage>
<operation>
<name>tiuLongListClinprocTitles</name>
<rpcName>TIU LONG LIST CLINPROC TITLES</rpcName>
<responseType>json</responseType>
<parameter>
<name>from</name>
<type>string</type>
</parameter>
<parameter>
<name>dir</name>
<type>string</type>
</parameter>
</operation>
</serviceDescriptor>
Testing the Deployed Service
Test Results
Example of a RESTful service invoking
the same RPC
Questions / Comments
VistA SOA Services
18
Backup Slides
VistA SOA Services
19
Paradigm Shift:
VistA as an SOA Service Provider
Encased
Leveraged
VistA is encased as a system to isolate
and then replace in the future
VistA packages are leveraged and extended as
building blocks for legitimate SOA services
Adapter Integration
Service Integration
‘Consumer applications’ are integrated
with adapters that encase VistA
‘Consumer applications’ are integrated with SOA
services exposed by ‘provider applications’
Rip and Replace
Plug and Play
Legacy VistA is encased with adaptors as
a monolithic system, then replaced
VistA applications expose SOA services, allowing
application-by-application replacement
Fine Grained
Coarse Grained
Chattiness due to business logic in
adaptors, fine grained VistA methods
All business logic positioned in VistA applications
to produce coarse grained service logic modules
Built from ‘scratch’
Built from existing components
SOA services, environment and
governance built “from the ground up”
Existing VistA methods and data used to build
SOA services, reducing development, testing, etc.
VistA SOA Services
20
VistA SOA Services Runtime View
Enterprise Service Bus (ESB)
VistA
Site 1
M Code and Data
M Routines for
Progress Notes
Registry and Repository
(Websphere Registry and
Repository)
Progress Notes Service
Registry Entry
Outpatient Meds Service
Registry Entry
Allergies Service
Registry Entry
VistA SOA Federating
Services Platform Regional
(Java)
Progress Notes
Service
Outpatient Meds
Service
Consuming
Consumers
Applications
Core ESB
(Websphere Message Broker)
Allergies Service
M Routines for
Outpatient Meds
M Routines for
Allergies
VMRCA
VMRCS
Site N
M Code and Data
M Routines for
Progress Notes
M Routines for
Outpatient Meds
Progress Notes Service
Proxy
M Routines for
Allergies
Outpatient Meds Service
Proxy
VMRCA
Allergies Service
Proxy
VMRCS
VistA Service Assembler
21
VSA National Production Deployment Configuration
Region 1 RDC
2
Region 2 RDC
2
Region 3 RDC
Region 4 RDC
WSRR
WSRR
WSRR
WSRR
VistA SOA Service
Registry Entries
VistA SOA Service
Registry Entries
VistA SOA Service
Registry Entries
VistA SOA Service
Registry Entries
WMB
WMB
WMB
WMB
VistA SOA Service
Proxies
VistA SOA Service
Proxies
VistA SOA Service
Proxies
VistA SOA Service
Proxies
VistA
VistA
VistA
VistA
VistA SOA Federating
Services Platform
VistA SOA Federating
Services Platform
VistA SOA Federating
Services Platform
VistA SOA Federating
Services Platform
1
VistA SOA Services
VistA SOA Services
1
2
VistA SOA Services
VistA SOA Services
1
1
VistA SOA Services
VistA SOA Services
VistA SOA Services
VistA SOA Services
Site 1 to M
Site M+1 to N
Site N+1 to O
Site O+1 to P
M Code and Data
M Routines
M Code and Data
M Routines
M Code and Data
M Routines
M Code and Data
M Routines
VMRCA
VMRCA
VMRCA
VMRCA
VMRCS
VMRCS
VMRCS
VMRCS
Federated VistA SOA Services
communicate with each other to
produce a national view of information.
WSRR = WebSphere Registry and Repository
WMB = WebSphere Message Broker
ESB = Enterprise Service Bus
SOA = Service Oriented Architecture
VMRCA = Site Specific Generic Mumps Routine Calling Adapter
VMRCS = Site Specific Generic Mumps Routine Calling Service
VistA Service Assembler
2
2
Chatty communication within an
RDC is optimized on high speed
network.
22
VSA Security Integration
VistA
Site 1-N
Enterprise Service Bus
(ESB)
M Code and Data
M Routines Supporting
VistA SOA Services
Registry and
Repository
(Websphere Registry
and Repository)
https
Ensures user
authentication
and audit logging.
VistA SOA Service
Registry Entries
VistA SOA Federating
Services Platform
Consuming
Applications
Core ESB
https
(Websphere Message
Broker)
https
VistA SOA Services
VistA SOA Service
Proxies
https
Authorization is
handled by
application M
routines.
VMRCA
In process
communication
VMRCS
VistA Service Assembler
23
VistA Service Assembler (VSA) High Level Component
Descriptions
VSA Component
Description
VistA Service Assembler Wizard
Java web application - auto generates VistA SOA Services
VistA SOA Federating Services Platform
Java application server such as Tomcat or WebLogic, to which VistA SOA
Services are deployed
M Hosting Platform
A runtime system supporting ANSI standard M such as Intersytems Caché
or GT.M
VistA SOA Service
An SOA compliant service generated by the VistA Service Assembler Wizard
with federating capabilities. Implemented in the Java Spring Framework.
VistA Service Assembler SOA Service
Descriptors
Meta data XML document created by the VistA Service Assembler Wizard
used to auto generate VistA SOA Services
Site Specific VistA M Routine Calling
Service (VMRCS)
A REST/SOAP web service deployed to each site that delegates requests to
run M routines to VMRCA. Implemented in vendor specific technologies..
Site Specific VistA M Routine Calling
Adapter (VMRCA)
VSA M routines that handle M routine calling
VistA SOA Service Registry Entry
Entry in the Registry and Repository used to govern a specific VistA SOA
Service
VistA SOA Service Proxy
Proxy on the ESB used to abstract the service endpoint.
VistA Service Assembler
24
VSA Deployment and Rollout
System Component
VA Deployment and Rollout Mechanism
Site Specific VistA M
Routine Calling
Adapter (VMRCA)
Standard VA M patch release process via KIDS

VSA Site Specific
Generic Mumps
Routine Calling
Service (VMRCS)
VMRCS is deployed in its own Caché database file at
each site deployed to a region.

M routines from
other packages
Standard VA M patch release process via KIDS
VistA Service
Assembler Wizard
and Service
Descriptors
Deployed to development and not production. Service
descriptors are versioned in source control.


VistA SOA Services
Each service is packaged as a WAR file. The service
provider promotes a service through development,
test and production environments.

Service Registry
Entries and Proxies
ESB registry entry and proxy creation processes
defined by operations are followed.

VistA Service Assembler
No Issues Foreseen
25
VSA Technology Stack (VA vs. Open Source)
System Component
VA Technology Stack
Open Source Technology Stack
VSA Site Specific
Generic Mumps
Routine Calling Adapter
(VMRCA)
ANSI Standard MUMPS hosted
on Caché
ANSI Standard MUMPS hosted on
Caché or GT.M

M routines from other
packages
ANSI Standard MUMPS hosted
on Caché
ANSI Standard MUMPS hosted on
Caché or GT.M

VistA SOA Services,
VistA Service
Assembler Wizard and
Service Descriptors
Java/Spring Framework/Open
Source Web Technologies
deployed to WebLogic
Java/Spring Framework/Open
Source Web Technologies deployed
to Tomcat or JBoss

VSA Site Specific
Generic Mumps
Routine Calling Service
(VMRCS)
Caché Server Pages (CSP) and
Caché Objects hosted on
Caché, CSP Gateway hosted on
IIS
Enterprise Web Developer (EWD)
hosted on Apache/IIS/CSP and
Caché stack or on Node.js and GT.M
stack

VistA Service Assembler
VA/Open Source
Integration Issues?
26

similar documents