Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

30
Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Transcript of Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Page 1: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Ewout Kramer, Furore

Fine-grained repository modelsor SPM’s, or...

Page 2: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Architectural context

CDR

Service

v3 v2

?

MEPD

KN

ICIP

v3-R

v3-R

v2

AORTA v3

Page 3: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

The nasty CS->RP route...

Page 4: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

What we needed

• A generic way to store a v2+v3+transaction+CDA in a pre-existing RIM graph

• NB: not OLAP (“stacks”) but immediate integration!

Page 5: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Example EHR - stored instances

Page 6: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Example “update” message

Page 7: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Merge away!

• Maybe not probable but a generic algorithm should handle it

• We “feel” this interaction goes beyond its scope

• Messages are not designed for CRUD. E.g. manage children & attributes

Page 8: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

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 9: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

As time went on...

Domain-Driven Design by Eric Evans

• I am not smart enough

• Something is wrong, another approach is needed

Page 10: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

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 11: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Aggregates

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

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

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

Page 12: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Storage model

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

• Only the “root” is public• Explicit boundaries/references to other data• Scope of context conduction• Unit of documentation

Page 13: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Interpret interactions & disassemble!

Encounter

CareProv

Consent

Observation

Ass. Entity

Patient

Location

RelatedPsn

Organization

Person Place

Resolve Context

Map to EHR-structure: info + term

Disassemble

Links between blocks

Page 14: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

We might end up with

Page 15: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

They reflect your EHR

• These blocks store data in your EHR-DMIM• You map national/external interactions to it• Might live longer than ballot spec

• Why? It is no use to include the whole model if you, your developers and your users don’t know about it and can’t interpret it.

Page 16: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

E_ProductKind

This is a CMET!

Page 17: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...
Page 18: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Finding 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.

• Reverse-engineer this mega-DMIM, add your domain knowledge & requirements & split into more generic blocks

Page 19: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

E_Person universal

Page 20: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

R_RelatedParty

Page 21: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

R_Patient

Page 22: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

Patient Admin DMIM

Lots of overlap with Administrative Registries!

Page 23: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

How to define aggregates

• Strive for high cohesion

• Decide which data is contained and which referenced

• Decide navigability (who references who)

• Storage/granularity considerations

Page 24: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

E_Person – Storage model

Page 25: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

R_Patient – Storage model

Page 26: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...
Page 27: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

E_Person – “Group membership”

• What would you make the root class?• What is referenced, what is contained?• What would you do for workinglists?

Page 28: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

E_Group storage

Page 29: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...

A_StatementCollector

Page 30: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or...