On 16-07-18 16:54, Ian McNicoll wrote:
Hi Bert,

Have a look at what Ripple is doing in terms of 'meaningful APIs'.

See http://lists.openehr.org/pipermail/openehr-technical_lists.openehr.org/2018-February/014799.html
This is interesting, although, what I understand from it in a "quicky"
This is what I think to have read in that quick information absorption.

In the link is (I think) explained that one should not build a GUI around a datamodel, but have their own criteria to build a GUI. I agree with that, because a GUI serves another purpose then a datamodel (in which the data are stored) The same is also for creating a message, it must not mimic the datamodel where it comes from, but have its own criteria, based on understandability and structures for others also easy to follow in receiving and transmitting.

Unless you are the center of the universe, of course, then you can expect others to follow you, that they have the functionality to understand and parse what you bring over.

This is interesting because this means that an API does not need to export OpenEhr/archetype-structures, they are often not going to be used anyway. So that is not what we want, as a study from Helma van der Linden apparently also shows. A GUI, a message, (an API) should be effective in the context of the receiver, not in the context of the sending party.

Thomas called the medication API from the Human API "low level", but this was a confusing term. Better would have been to call it primitive, or something like that. But what he meant to say was understandable and right in that example. But I like to rephrase it because it better fits in my thinking. (funny, this communication misunderstanding is a lot like API misunderstandings, so context is important.)

Low level in OpenEhr context would mean, exporting the structures as they are found inside OpenEhr-storage, Low level would mean in my understanding, as close as possible to the source. Mostly, low level is more complicated then high level. Compare it with ways of communicating computer-instructions: assembly (Low Level, complex, processor-type bounded and not fit or interoperability) with Java (High level, not complex, runs on every machine).

That is what an API does. It does not want to preserve structures which are in use on the sending side, but it wants to exchange data with other purposes/platforms in a way that it is easy to understand. We cannot expect from the other side that they know how to parse archetypes.

So we could ask ourselves, is "more primitive" worse then "low level"? There must be a level between these which is good. I agree that meta-data, like "created at", "id" should not be mixed up with clinical data. So that part is not right in the Human API medication call. Maybe there are more points wrong. But that should not be the discussion. The discussion should be about how the API will look like, (and maybe learn from others, because others will use the API)

And there is another thing, an API should be stable. Because CKM is regarded as a base-structure set for OpenEhr which is sensible to use, this does not mean that every OpenEhr installation follows CKM completely, partly, or not at all. This is propagated as flexibility. CKM is not the center of the universe. An API should therefor not impose a structure from CKM on users. It should have its own means of communication. This must consist from primitive structures, because many software designers which think in other ways must find it usable.

Apart from this interoperability (with other paradigms) thinking, there can of course also be a low level API which dumps archetype structures over the wall because the other side knows how to parse ADL and knows how to store and retrieve archetyped data, so the other side is an OpenEhr machine. Between two OpenEhr systems, OpenEhr is the center of the universe.

Best regard
Bert Verhees




Ian

Dr Ian McNicoll
mobile +44 (0)775 209 7859
office +44 (0)1536 414994
skype: ianmcnicoll
email: [email protected] <mailto:[email protected]>
twitter: @ianmcnicoll


Co-Chair, openEHR Foundation [email protected] <mailto:[email protected]>
Director, freshEHR Clinical Informatics Ltd.
Director, HANDIHealth CIC
Hon. Senior Research Associate, CHIME, UCL


On Mon, 16 Jul 2018 at 15:06, Bert Verhees <[email protected] <mailto:[email protected]>> wrote:

    On 16-07-18 15:56, Bert Verhees wrote:
    > But again, the starting point must be the API's defined, maybe in a
    > transformerable language like swagger, which seems to connect
    well to
    > the OpenAPI initiative.(I never liked swagger much, but my last
    > experience with it was from years ago, maybe it is better now)
    >
    > And then you mentioned BMM, I don't know about that. I should
    look at
    > it, I saw your other email. Do you have somewhere a document why
    BMM
    > is so good?

    The latest version of Open API (swagger became the Open API)

    https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md


    _______________________________________________
    openEHR-technical mailing list
    [email protected]
    <mailto:[email protected]>
    
http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org



_______________________________________________
openEHR-technical mailing list
[email protected]
http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org


_______________________________________________
openEHR-technical mailing list
[email protected]
http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

Reply via email to