This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Difference between revisions of "SMIRF"

From HL7Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
[[Category:RIMBAA Issue]]
 
[[Category:RIMBAA Issue]]
Definition: A '''SMall Isolated Rim Fragment (SMIRF)''' is a logical data model that has the following characteristics:
+
 
 +
==Rationale==
 +
The concept documented on this page was created based on current experiences with OLAP style databases (where versioning is based on individual objects, and where conceptually the persistence layer is an object graph). This turns out to have various disadvantages: it is too fine grained to be useful as a unit for processing and versioning. The well known alternative (OLTP, persisting a stack of messages) has drawbacks as well: message is too coarse in terms of granularity.
 +
 
 +
==Definition==
 +
A '''SMall Isolated Rim Fragment (SMIRF)''' is a logical data model that has the following characteristics:
 
#It is a [[SIM]], with 1 entry point. In terms of the HDF it is an 'expressed model'.
 
#It is a [[SIM]], with 1 entry point. In terms of the HDF it is an 'expressed model'.
 
#*Note: a SMIRF-graph is not an object-graph, given that a single SMIRF is mainly transactional in nature.
 
#*Note: a SMIRF-graph is not an object-graph, given that a single SMIRF is mainly transactional in nature.

Revision as of 09:12, 10 November 2010


Rationale

The concept documented on this page was created based on current experiences with OLAP style databases (where versioning is based on individual objects, and where conceptually the persistence layer is an object graph). This turns out to have various disadvantages: it is too fine grained to be useful as a unit for processing and versioning. The well known alternative (OLTP, persisting a stack of messages) has drawbacks as well: message is too coarse in terms of granularity.

Definition

A SMall Isolated Rim Fragment (SMIRF) is a logical data model that has the following characteristics:

  1. It is a SIM, with 1 entry point. In terms of the HDF it is an 'expressed model'.
    • Note: a SMIRF-graph is not an object-graph, given that a single SMIRF is mainly transactional in nature.
  2. A SMIRF only has Acts with fixed moodCodes. If one needs an Act in a different moodCode, it's a different SMIRF. A SMIRF only has Entities with a fixed determinerCode. If one needs an Entity with a different determinerCode, it's a different SMIRF.
  3. An SMIRF instance is 'externally identifiable' by means of the identifier of its entry object, none of the other identifiers for other objects serve to identify an SMIRF instance. An SMIRF may contain identifiers (as references) to other SMIRFs.
  4. Context has been resolved
    1. Conducted context is present in the data model
    2. Conducted context is pointed to from the data model (as a separate SMIRF, by reference (patient Id, authorId, etc.). Because there will be many Observations (in a clinical statement model) and most of them will have the same context, we do not advocate copying the context by value into each SMIRF for persistence. Instead it would be more efficient to have each SMIRF point to it's context object (which itself may be a context SMIRF) by reference.
  5. An SMIRF instance will contain a fully resolved updated version of the SMIRF if update mode was used.
  6. An SMIRF instance will contain a fully resolved version of objects that were included 'by reference'
    • The context determines how objects are to be identified; see issues discussed on the Object identity page. Notably for Roles some kind of agreement between creator/sender and processor/receiver has to be in place.
  7. SMIRF is used as the atomic persistence model; SMIRF-instances are versioned; they are locked/read/replaced as a whole
    • In a services environment Entity-level services exist based on SMIRFs. Business services are composed of those Entity-level services.

DISCUSSION: Peter thinks of SMIRFs as being 'self contained, "safe for querying" clinical statements". Ewout doesn't have this as a requirement, he's seeking for modeling patterns. Currently a Safe SMIRF is a subset of all possible SMIRFs; or a Safe SMIRF is a composition of more granular SMIRFs.

Criteria for splitting a larger data model (DIM/SIM) in SMIRFs, i.e. criteria for the scope of SMIRFs include:

  • Any association where propagation is turned off forms a boundary
  • Any participation with a CMET forms a boundary
  • A change of context (e.g. different subject/patient, different author)

Relation with DCM

Note that the boundaries in a DCM are drawn for different reasons, there might probably be an assessment scale SMIRF, while this would be used for many DCMs, so then there is clearly no 1-1 relationship. A DCM could be a template for an instance of a SIM which could be 1 or more SMIRFs.