Expanding BMM

Hello everyone,
I’ve been experimenting with an openehr implementation based solely on BMM, this strategy comes to provide an implementation that supports as many versions of openehr using single code and make more stable across many updates. This can be achieved using metaprogramming, like using metadata of class attributes to validate data based on it, and using runtime function dynamic dispatcher that checks typing of arguments at runtime(the internal implemented using the programming language).Moreover, this can make implementation of expression language an easier task (with simple JIT or interpreters on top).

The problem is that BMM files(and P_BMM formalism itself) doesn’t have function metadata which doesn’t support fully building computable BMM graph
so my questions are;

  1. is there an experimental version of BMM files that support
  2. if there’s none at the time, I want to ask how are are bmm files generated, is it manually or is there script to convert it from UML or eiffel, to create experimental files until official one drop.

Thank you.

1 Like

yes, openEHR is replacing UML with BMM as the source of truth for the specifications’ models.

@sebastian.iancu has created BMM files that export most/all information from the current UMLs. This includes functions. I believe it’s currently in a private repo by Sebastian, of course it will be public in the future, ask Sebastian if you want it sooner. These files have properties, like functions, that are not currently formally supported by BMM. So there’s a need by the spec to update BMM to support this. There’s some discussion in the SEC on how exactly to do this. Some details here: (and in older call minutes) https://openehr.atlassian.net/wiki/spaces/spec/pages/3148251137/2025-10-14+SEC+Face2face+Meeting+Barcelona

Btw @borut.jures has done something similar, generate code from BMM. Check this forum for more info or reach out to him to share experiences in case you’re interested.

2 Likes

That’s great work,

To your knowledge, will .bmm files in future cover BMM classes like BMM_CLASS, BMM_TYPE and etc? I noticed that it only covered old lang.beom ?

Thank you for your great work.

Being worked on :wink:

1 Like