@erik.sundvall just posted another great opportunity to join their team to build a new openEHR CDR (Join or comment CDR Catalyst initiative from Karolinska - #5 by erik.sundvall).
His Catalyst posts and document piqued my interest, so about two months ago I selected one of the databases mentioned in the Catalyst document and started building an openEHR CDR from scratch.
After 2 months my “Catalyst CDR” is working. I implemented the latest EHR REST API 1.1.0 and have started running benchmarks against EHRbase.
The first test involves creating 100 EHRs, each with 1000 compositions. I’m using an 885-line Vital signs composition to make the test realistic (total time in mm:ss | time per composition):
Total mm:ss | per composition
-------------- | ---------------
EHRbase: 16:02 | 9,62 ms
ArcEHR : 9:32 | 5,73 ms
The second test is querying the compositions using all 7 different ways to use the GET COMPOSITION endpoints (700k queries):
Total mm:ss | per query
-------------- | ---------
EHRbase: 30:55 | 26,50 ms (edit: fixed the calculation)
ArcEHR : 10:12 | 6,12 ms
I’m running this on my 5 year old Apple M1 Pro with 16 GB RAM, while simultaneously running 3 IDEs and Docker.
These results are a good sign that the Karolinska team can be confident a performant CDR can be built using a graph database. I can’t wait to see which database they pick.
The side effect of picking ArcadeDB for my CDR is support for different querying languages (SQL, Cypher, Gremlin, GraphQL, MongoDB QL, GQL). Since AQL is missing, I started implementing it in ArcEHR so that I can benchmark querying performance using AQL.
I’m a bit disappointed that after asking for open source CDRs in their procurements, they decided to make Catalyst a closed-source project. I still hope to publish ArcEHR as an Apache 2.0 licensed openEHR CDR (let me know if you are interested in contributing to this effort).