Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP...

25
Ewout Kramer, Furore CIM-based CRUD storage

Transcript of Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP...

Page 1: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Ewout Kramer, Furore

CIM-based CRUD storage

Page 2: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Architectural context

CDR

Service

v3 v2

?

MEPD

KN

ICIP

v3-R

v3-R

v2

AORTA v3

Page 3: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

The nasty CS->RP route...

Page 4: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

What we needed

• A generic way to store a Hl7v3 message in a pre-existing database based on RIM....

• It seemed simple, but in januari while discussing it we realized it merited to be a RIMBAA issue...

Page 5: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Object Trees & Nets

• Message: hierarchical

versus

• Storage: cyclic net

Page 6: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Example EHR - stored instances

Page 7: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Example “update” message

Page 8: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Merge away!

• Maybe not probable but a generic algorithm should handle it

• Still...we “feel” this interaction goes beyond its scope

• RMIMs are not designed to Update/Replace/Delete specific children & attributes

Page 9: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

A generic merger needs...

• To understand intention of the interaction (activate/revise/record)

• Additional hints hidden in prose of implementation manuals/Ballot

• Know mapping to your EHR-model• Update context

Page 10: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Query Encounter, select

• Act with code “ENC”. With mood EVN.• Which clone in which interaction do you mean?• A_Encounter CMET• A certain template (collection of CIM’s?)

Page 11: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Domain-Driven Design by Eric Evans

“How do we know where an object made up of other objects begins and ends?”

“In any system with persistent storageof data, there must be a scope for a transaction that changes data and a way of maintaining the consistency of the data”

Scope of queries en updates

Page 12: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Aggregates

• Define small CIMs with tight/safe scope, context and semantics

• Define enough CIM’s to cover required domains and no more

• Map interactions to “service level” CRUD operations with these CIMs

Page 13: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Storage model

• Unit of storage– Lock, create, read, update, delete as a whole– CRUD-services

• Only the “root” is public• Explicit references to other data

– Feels like “identifiable” CMET stereotype• Scope of context conduction• Unit of documentation

Page 14: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Interpret interactions & disassemble!

Encounter

CareProv

Consent

Observation

Ass. Entity

Patient

Location

RelatedPsn

Organization

Person Place

Page 15: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

We might end up with

Page 16: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Building blocks

• Explicit (CMET) and implicit re-use of structures– Every domain uses implicit picture of a full-fledged

“EHR” DMIM.

• At best, each domain consistently uses this “EHR” DMIM.– Only differ in domain constraints, clonenames

• Reverse-engineer this mega-DMIM, split into more generic “aggregates” which are the building blocks of a CDR.

Page 17: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

E_Person universal

Page 18: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

R_Patient

Page 19: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

Patient Admin DMIM

Lots of overlap with Administrative Registries!

Page 20: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

R_RelatedParty

Page 21: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

E_ProductKind

Page 22: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.
Page 23: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

E_Person – Storage model

Page 24: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.

R_Patient – Storage model

Page 25: Ewout Kramer, Furore CIM-based CRUD storage. Architectural context CDR Service v3v2 ? MEPD KN ICIP v3-R v2 AORTA v3.