Introduction RIMResistance is Futile, you Will be Assimilated!

Slides:



Advertisements
Similar presentations
Ernst Oberortner Vienna University of Technology.
Advertisements

Enhancing Productivity with MySQL 5.6 New Features
Forward Data Cache Integration Pattern
C9: SOA Management with Actional® for Sonic™
Chapter 7 System Models.
Software Re-engineering
Improving Human-Semantic Web Interaction: The Rhizomer Experience Roberto García and Rosa Gil GRIHO - Human Computer Interaction Research Group Universitat.
Relational Database and Data Modeling
EMRLD A RIM-based Data Integration Approach Pradeep Chowdhury Manager, Data Integration.
Domain Driven Design and RIM. Introduction 1 RIMResistance is Futile, you Will be Assimilated!
Moving from V2 to V3 – Consequences of the RIM RIMBAA Presentation November 14,
Business Transaction Management Software for Application Coordination 1 Business Processes and Coordination.
BRIDG Overview Clinical Observation Interoperability March 18, 2008.
3 Copyright © 2005, Oracle. All rights reserved. Designing J2EE Applications.
0 - 0.
DIVIDING INTEGERS 1. IF THE SIGNS ARE THE SAME THE ANSWER IS POSITIVE 2. IF THE SIGNS ARE DIFFERENT THE ANSWER IS NEGATIVE.
SUBTRACTING INTEGERS 1. CHANGE THE SUBTRACTION SIGN TO ADDITION
MULT. INTEGERS 1. IF THE SIGNS ARE THE SAME THE ANSWER IS POSITIVE 2. IF THE SIGNS ARE DIFFERENT THE ANSWER IS NEGATIVE.
Addition Facts
Relational data integrity
1 9 Moving to Design Lecture Analysis Objectives to Design Objectives Figure 9-2.
CS2008 Data Management CS5035 Introduction to Database Systems Nigel Beacham based on materials by Dr Yaji.
Overview Environment for Internet database connectivity
Introduction Lesson 1 Microsoft Office 2010 and the Internet
22 мая 2013, Киев Построение Windows 8 приложений для доступа к SharePoint 2013 Бельский Сергей.
Week 2 The Object-Oriented Approach to Requirements
QA practitioners viewpoint
2 A bank application needs to access information from the customer database and integrate it with loan credit history information stored in a legacy database.
© 2011 TIBCO Software Inc. All Rights Reserved. Confidential and Proprietary. Towards a Model-Based Characterization of Data and Services Integration Paul.
GETTING STARTED WITH WINDOWS COMMUNICATION FOUNDATION 4.5 Ed Jones & Grey Guindon.
1 Web-Enabled Decision Support Systems Access Introduction: Touring Access Prof. Name Position (123) University Name.
Describing Complex Products as Configurations using APL Arrays.
“The Honeywell Web-based Corrective Action Solution”
Joe Homnick, MCITP: Business Intelligence Developer
Microsoft Office Project and Project Server Reporting May 12 th, 2009 Chris Oxtoby, MCP – Principal Consultant, Pcubed.
ICS 434 Advanced Database Systems
HL7 Message Profile Constraint Analyzing Tool David Kong, August 2002 Queen's University.
Suggested Course Outline Cloud Computing Bahga & Madisetti, © 2014Book website:
Presented by: SIF 3.0 Concepts DSWG August 2013 Joerg Huber.
Introduction to Databases
Executional Architecture
Addition 1’s to 20.
Test B, 100 Subtraction Facts
Week 1.
Distributed DBMS©M. T. Özsu & P. Valduriez Ch.15/1 Outline Introduction Background Distributed Database Design Database Integration Semantic Data Control.
Chapter 13 The Data Warehouse
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 13 Slide 1 Application architectures.
Michael Pizzo Software Architect Data Programmability Microsoft Corporation.
Healthcare Informatics Standards
1 XML Web Services Practical Implementations Bob Steemson Product Architect iSOFT plc.
Alpha Anywhere Product Roadmap and Overview
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
Who am I? ● Catalin Comanici ● QA for 10 years, doing test automation for about 6 years ● fun guy and rock star wannabe.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Database Design for DNN Developers Sebastian Leupold.
Scalable Architecture for the Cloud. What????  Command Query Responsibility Segregation  What is it?  What kinds of apps is it for?  What are the.
CHAPTER 14 USING RELATIONAL DATABASES TO PROVIDE OBJECT PERSISTENCE (ONLINE) © 2013 Pearson Education, Inc. Publishing as Prentice Hall 1 Modern Database.
Part II - Microsoft ® Project 2000 Enterprise Deployment Templates.
Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.
Domain and Persistence Patterns. Fundamental Pattern Types Design Patterns Business Logic Patterns.
Enterprise Integration Patterns CS3300 Fall 2015.
Consultant Effective Patterns and Practices in J2EE George de la Torre.
Clinical Research Platform Center for Biomedical Informatics (CBMI)
Domain Driven Design Using.NET Dave Rael. What’s wrong with this code? Public void CallMethodThatMightThrowScaryException(int carelessInputWithoutValidation)
Domain-Driven Design for the Database-Driven Mind
7.5 Using Stored-Procedure and Triggers NAME MATRIC NUM GROUP Muhammad Azwan Bin Khairul Anwar CS2305A Muhammad Faiz Bin Badrol Shah CS2305B.
Abstract MarkLogic Database – Only Enterprise NoSQL DB Aashi Rastogi, Sanket V. Patel Department of Computer Science University of Bridgeport, Bridgeport,
Chris Menegay Sr. Consultant TECHSYS Business Solutions
Serverless CQRS in Azure!
Query Optimization.
Presentation transcript:

Domain Driven Design and Event Sourcing with RIM

Introduction RIMResistance is Futile, you Will be Assimilated!

Introduction DDD and Event Sourcing George de la Torre Developer of custom clinical apps For a long time Discovered RIM a long time ago… Oleg Sitalo (silent partner) Developer of custom clinical apps For a long time together Believes in RIM, at occasions…

Agenda DDD and Event Sourcing Google will find heaps of stuff on this Will focus on the RIM stuff Great resources for DDD/ES http://msdn.microsoft.com/en-us/library/jj554200.aspx Implementing Doman-Driven Design Vaughn Vernon Domain Driven Design (the Blue Book) Eric Evans

Domain Driven Design DDD and Event Sourcing Object Oriented Model Business needs & language captured HL7 v3 RIM benefits Design done! – the hardest part Standard – open & shared to all Deep insights into domain knowledge Integration of domains built in (No barriers!) Reuse logic across clinical domains

Domain Model Blueprint for all Aggregates HL7 V3 RIM

Supporting Domains External Services Vocabulary Bounded Contexts

Supporting Domains External Services Anti Corruption Layer Other systems or Big Ball of Mud… Business Process and Rules Engines Point: This layer keeps RIM pure!

Event Sourcing DDD and Event Sourcing Only the Aggregate (D-MIM) is persisted The command is saved (Behavior) Aggregates publishes the events Command Query Responsibility Segregation (CQRS) Command (Transaction) Model Query Model

Patient Dashboard Example Use Case Schedule a patient visit Find Patient (Query Model) View Calendar (Query Model) Patient assigned time slot (Command) CreateAppointmentCommand(data) executes Scheduling aggregate is created from data The created aggregate is appended Publishes event to update Query Model

Scheduling Aggregate Example

Scheduling Aggregate CMET (PAT) is the Root

Considerations Scheduling Aggregate Entity is usually the Root No cloning, only class codes Aggregates varies with the RIM set Act may be the Root (Strategy) Reference others Aggregates (Observations) Act Mood partitioning PHI segregation requirement (Query model too) Performance

Considerations continued… Scheduling Aggregate Considerations continued… Serialized, XML, JSON, etc… Relational Database (SQL) Cache based systems File systems NoSQL Natural for event stores Easier to query Aggregates if needed Aggregates loaded for logic on command

Scheduling Aggregate Appended CreateAppointmentCommand(data) Event Store ID Name Version Data 1 Schedule 1.2 2 3

Scheduling Aggregate Publishes Events AppointmentCreatedEvent(data) { UpdateDatabaseView() } Query model MRN First Last DOB Phone Start End Note

Scheduling Aggregate Publishes Events AppointmentCreatedEvent() { CreateAdmissionMessage() } HL7 2.x MSH|^~\&|ADT1|MCM|LABADT|MCM|198808181126|SECURITY|ADT^A01|MSG00001-|P|2.3 EVN|A01|198808181123 PID|||PATID1234^5^M11||JONES^WILLIAM^A^III||19610615|M-||C|1200 N ELM STREET^^GREENSBORO^NC^27401-1020|GL|(91-9)379-1212|(919)271- 3434||S||PATID12345001^2^M10|123456789|9-87654^NC

Scheduling Aggregate Publishes Events AppointmentCreatedEvent() { UpdateDataMart() }

Patient Dashboard Example Two Separate Models (CQRS) Domain (Transaction) Model Complex structure (RIM) Aggregates are only created from RIM Aggregates are appended (Write Only) Query Model Simplified model structure (SQL) Multiple models created as needed Model optimized for querying (Read Only)

Simple Component Design CQRS Web Dashboard View Model Aggregate Services App Services Publishes to Commands Query Events SQL