SAIF

May 12, 2011

Several people have asked me both in the comments and in private comunications to comments on SAIF (link to wikipedia - and source), and how it relates to what I’m writing. And I suppose that since my name is on it, I better make some comment. First of all, SAIF has a wider scope than the requirements for interoperability in the previous posts. I have focused on what you need in order to talk to each other; SAIF is also concerned with how to manage interoperability over multiple projects and in communities. So in addition to the IF (information framework) and BF (behavioral framework), it also has the governance framework and the enterprise conformance and compliance framework, which address these management issues.

Basic Requirements vs SAIF

Comparing my basic requirements from the previous posts, here’s what I see in SAIF:

Transmission of Data SAIF pretty much assumes that this is taken for granted. Good. 

But it does confine the considerations around this to the technology view in the matrix, which doesn’t account for the fact that all the technologies have their own semantic stack that reaches back and influences the other layers. I don’t know how to do this better though |Common Terminology|SAIF assumes that this is done elsewhere (as indeed it partly is), so doesn’t devote a section to it. But the IF also defines a representational structure for terminology. How can you define a structure when you don’t define the content? I’m not really sure that’s right. 

And given the long term intent of SAIF (see below), I think it’s wrong for SAIF not to include a section about doing terminology well. On the other hand, HL7 could not write this section - our terminology efforts are particularly badly done. |Identification Policies|SAIF completely doesn’t mention this, continuing HL7’s blind spot on this as a general issue. I hope that this can be rectified in the fullness of time |Information Structures|SAIF has the Information Framework which is a 1:1 match aimed at fulfilling these requirements. |Behavioral Models|SAIF has the Behavioral Framework which is a 1:1 match aimed at fulfilling these requirements. |Common Understanding|SAIF doesn’t mention this - but I think that SAIF itself is really all about this.

Problems with SAIF

It’s poor form, really, a member of a committee criticizing the product of the committee. But I’m going to do it anyway. It’s at least partially my fault for not being sufficiently engaged.

The first issue I have is that we needed to write a document to provide guidance and context to our own work. So we went ahead and wrote a document that needs another document to explain what it actually means for us (HL7). That kind of summarizes for me where we are in HL7, and connects strongly with the overwhelming feedback I’ve had about the fresh look taskforce and needless complexity.

It’s not that I don’t appreciate the benefits of splitting the document into two. It’s like an abstract and concrete grammar for a computer language - it has benefits. But it also has costs too. I don’t think they’ve been counted up.

And many of the ballot comments in the SAIF ballot (which closed yesterday) represent a deep lack of consensus in the community about the shape and parts of SAIF. The ArB’s sense at this time is that it’s too far down the road to go back to scratch. I respect that, but we have a monumental task ahead of us to evangelize that there is a net benefit to the shape and structure we have chosen.

Even so, how can we ballot the canonical SAIF prior to having a proven implementation guide? I know how I would ballot a language that only had an abstract gammar - negatively outright. No concrete form = unknown value at this time.

Neither Fish nor Fowl

Another problem with SAIF is that it is neither fish nor fowl. It’s not doing what it set out to do.

For instance, take the Information Framework: it purports to be a discussion of what you need to have interoperability. But it specifically defines the HL7 process, including design by constraint and other things about the RIM. If that’s what it wanted to do, it needs to be more specific and actually describe them. If that’s not what it wants, then it needs to be clear about what an acceptable information framework is. For instance, the intention was to describe the openEHR framework as well (I believe), but it excludes that in the details. So I can’t use it in either case.

Another example is the Behavioral Framework. According to the BF, it “provides” two grammars (or languages?). But how? It defines some concepts, and some vague capabilities description. But how would I know whether a specific implementation conforms to it? Is the HL7 v2 event model, for instance, something that we could write a SAIF implementation guide and claim that it was now SAIF conmpliant/conformant? The BF doesn’t say - because it’s trying not to do implementation.

SAIF needs to decide what it is and specify it’s own conformance criteria. There’s a degree of irony in a document that provides a conformance framework not defining what confomance means for significant parts of itself.

Fresh Look Taskforce

Some people asked me about the relationship between the fresh look taskforce and SAIF. Well, since all I know about the fresh look taskforce is here, I don’t know the answer. But I suspect that SAIF is just another input into the fresh look taskforce.