Question: is a file-based, AI-assisted translation workflow compatible with the CKM translation process?

We (NPO openEHR Japan) have started translating a set of archetypes into Japanese, first the ones that make up a referral letter (COMPOSITION.request, INSTRUCTION.service_request, EVALUATION.reason_for_encounter, SECTION.referral_details), with about 35 more planned (problem/diagnosis, adverse reaction, medication order, lab results, vital signs). Before we go further I would like to check with the CKM editors and other translation communities that the way we are working does not disturb the established translation process, and to ask what the appropriate way to contribute translations is when they are produced this way.

What we are doing

Instead of translating item by item in the CKM translation editor, we:

  1. download the current published ADL of the archetype from CKM;
  2. extract all translatable strings (purpose/use/misuse/keywords and text/description/comment per at-code) into a table;
  3. produce a draft with an LLM that is constrained by a project glossary and style guide, and must flag every term it is unsure about;
  4. have a clinician review the flagged terms and the glossary changes;
  5. inject the reviewed strings back into the ADL as a ["ja"] block — the definition section, the other languages and the metadata (uid, build_uid, revision) are left byte-identical, and a script checks that the ja code set equals the en code set with no placeholders left;
  6. upload the resulting ADL to CKM through the translation upload, and then proceed with the normal review.

The work is kept in a public Git repository ( GitHub - skoba/openehr-japanese-translation: openEHR Japanese Translation · GitHub ) with one issue and one pull request per archetype, so every translation decision is traceable.

What I would like to ask

  1. Is uploading a translated ADL an intended and acceptable way to submit a translation, or is it considered a side path that bypasses something the translation editor does (translator roles, review assignment, change tracking, attribution)? We found that the upload works and that the file must keep the original file name, but we could not find this documented and do not want to rely on behaviour that is not meant to be used this way.
  2. Attribution. We put the reviewing clinician (and NPO openEHR Japan) as the translator in the translations section, not the tool. Is there a convention or expectation for AI-assisted translations — for example, a note in other_details or in the translation’s accreditation field — so that reviewers know how the draft was produced?
  3. Archetypes under reassessment. For an archetype whose published revision is, say, 1.1.2 while the trunk is 1.1.3-alpha, should the translation be submitted against the published revision and then updated for the changed nodes after publication, or against the development revision? We chose the published one, but I would like to follow whatever the editors prefer.
  4. Reviewing. Does a translation submitted this way go through the same review as one made in the editor, and is there anything we can do to make the reviewer’s job easier — for example, attaching the list of flagged terms with our reasoning?
  5. If this workflow is acceptable, would it be useful to write it up (and make the tooling language-agnostic) for other translation communities, or would the editors rather keep translation inside the CKM editor for consistency?

We are happy to change any part of this to fit the CKM process. The goal is only to get consistent, reviewed Japanese translations into CKM faster than we could by hand, not to work around the process.

Shinji Kobayashi NPO openEHR Japan / Gifu University

Hi @shnj.kobayashi

A couple of points from a CKM tooling perspective only.
@heidi.koikkalainen and the translations WG as well as the IEB are probably the best to answer the rest.

  • Whether you use the online CKM translation to create the translation on a branch or you upload your translated archetype directly to the branch, is not different in the end. CKM adds the user as a translator by default, but it looks like you are handling this already.
  • build uid and revision are handled by CKM for each upload anyway
  • Any missing codes in the ontology will create validation warning at least in CKM - but good that you are checking this beforehand.
  • I would typically translate latest trunk version, so that this can be integrated easily. The unstable reassess revisions like the mentioned 1.1.3-alpha are rare (I count two at the moment only - in most cases the archetype can be republished immediately) and it may be worth waiting and/or communicating with the editors about the status of these to make a decision. The Family History archetype is one of them and that has moved on quite a bit from 2.0.4 to 2.0-5-alpha.

Thank you, Sebastian — that is very helpful.

We will switch to translating the latest trunk revision rather than the last published one, and treat the few “reassess” revisions as a case for asking the editors first. For INSTRUCTION.service_request (currently 1.1.3-alpha) we will hold the upload until the editors indicate whether 1.1.3 is close to republishing; for EVALUATION.family_history we will start from 2.0.5-alpha since it has moved on so much from 2.0.4.

Good to know that build_uid and revision are handled by CKM on upload; we keep them untouched only so that our local diff against the source stays clean. And we will keep running the ontology completeness check before uploading so that nothing reaches CKM with validation warnings.

I will wait for Heidi and the translations WG / IEB on the attribution and review questions.

Best regards,

Shinji Kobayashi

If this workflow is acceptable, would it be useful to write it up (and make the tooling language-agnostic) for other translation communities, or would the editors rather keep translation inside the CKM editor for consistency?

I have put together a very similar AI-assisted translation workflow, for us to translate archetypes into German and/or French. It also makes use of glossaries for consistent translation of specific words and phrases that occur often.

I think it makes sense to discuss creating a language-agnostic open source translation tooling.

Yes, this workflow seems best for now, but I still have to twist my head to translate English into Japanese over Fable and Astra support.

I have found the /archetype-translate skill in GitHub - Cadasto/openehr-assistant-plugin: openEHR assistant AI plugin suite with Skills, commands, and MCP server configuration for clinical workflow integration · GitHub very powerful, even translating to several languages simultaneousl in one go without messing up archeytpe file.

Not sure where it lives in @sebastian.iancu’s code, maybe close to openehr-assistant-plugin/skills/archetype-authoring/SKILL.md at main · Cadasto/openehr-assistant-plugin · GitHub

I am not sure what is exactly the question for me that I can answer, but in any case I would very warmly suggest you (if you use Claude or similar) to use my openehr-assistant plugin and the associated mcp - see https://cadasto.github.io/openehr-assistant.

I “trained” these skills, agents, mcp a lot to get good results, but if you have more to report as feedback - then let me know.

@sebastian.iancu I was mostly wondering where the translation skills lived, i think i have used something like that from you, but could not find a direct reference.

In the past it was a separate dedicated skill, but I have it now merged into the main archetype-authoring skill.
It is best as a combination of :