ewout kramer, furore fine-grained repository models or spm’s, or
TRANSCRIPT
![Page 1: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/1.jpg)
Ewout Kramer, Furore
Fine-grained repository modelsor SPM’s, or...
![Page 2: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/3.jpg)
The nasty CS->RP route...
![Page 4: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/5.jpg)
Example EHR - stored instances
![Page 6: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/6.jpg)
Example “update” message
![Page 7: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/14.jpg)
We might end up with
![Page 15: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/16.jpg)
E_ProductKind
This is a CMET!
![Page 17: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/17.jpg)
![Page 18: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/19.jpg)
E_Person universal
![Page 20: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/20.jpg)
R_RelatedParty
![Page 21: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/21.jpg)
R_Patient
![Page 22: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/22.jpg)
Patient Admin DMIM
Lots of overlap with Administrative Registries!
![Page 23: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/24.jpg)
E_Person – Storage model
![Page 25: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/25.jpg)
R_Patient – Storage model
![Page 26: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/26.jpg)
![Page 27: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/28.jpg)
E_Group storage
![Page 29: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/29.jpg)
A_StatementCollector
![Page 30: Ewout Kramer, Furore Fine-grained repository models or SPM’s, or](https://reader036.vdocuments.us/reader036/viewer/2022062400/5697bfc41a28abf838ca5f34/html5/thumbnails/30.jpg)