Now we have a full xml file that groups every internal terminology openEHR cares about. This can difficult things like versioning (detecting which subset was changed) and/or translation (now we are translating the full file, with, and the way that is being done makes evolution almost impossible).
IMHO we should try to go to a ValueSet approach, where each one of the current codesets (and their corresponding translations) would be all in one single place. This would also allow to create uris for each one of the valuesets, which would contain the definition of the valueset.
Let’s do it with an specific example:
<codeset issuer="openehr" openehr_id="compression algorithms" external_id="openehr_compression_algorithms">
<code value="compress"/>
<code value="deflate"/>
<code value="gzip"/>
<code value="zlib"/>
<code value="other"/>
</codeset>
The japanese codeset looks like this
<codeset issuer="openehr" openehr_id="compression algorithms" external_id="openehr_compression_algorithms">
<code value="圧縮"/>
<code value="展開"/>
<code value="gzip"/>
<code value="zlib"/>
<code value="その他"/>
</codeset>
Now the new ValueSet would combine both as a single entity (which could be pointed as an uri)
<?xml version="1.0" encoding="UTF-8"?>
<ValueSet xmlns="http://hl7.org/fhir">
<id value="ValueSet-openEHR-compression_algorithms-R4"/>
<meta>
<profile value="http://hl7.org/fhir/StructureDefinition/shareablevalueset"/>
</meta>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<p> Value set compression algorithm. We can add the explanation or rationale for this particular valueset if we want.</p>
<ul>
<li>compress: compress</li>
<li>deflate: deflate</li>
<li>gzip: gzip</li>
<li>zlib: zlib</li>
<li>other: Other compression algorithm</li>
</ul>
</div>
</text>
<url value="http://openehr.org.uk/fhir/ValueSet-report-v1-cprdecision_at0003-R4"/>
<version value="20210628"/><!-- provides versioning per valueset-->
<name value="Compression algorithms"/>
<status value="active"/><!-- one of draft | active | retired | unknown-->
<experimental value="false"/>
<publisher value="openEHR"/>
<description value="The detailed description of this valueset"/>
<compose>
<include>
<system value="http://openehr.org/valueset/ValueSet-openEHR-compression_algorithms-R4"/>
<concept>
<code value="compress"/>
<display value="compress"/>
<designation>
<language value="ja"/>
<value value="圧縮"/>
</designation>
</concept>
<concept>
<code value="deflate"/>
<display value="deflate"/>
<designation>
<language value="ja"/>
<value value="展開"/>
</designation>
</concept>
<concept>
<code value="gzip"/>
<display value="gzip"/>
<designation>
<language value="ja"/>
<value value="gzip"/>
</designation>
</concept>
<concept>
<code value="zlib"/>
<display value="zlib"/>
<designation>
<language value="ja"/>
<value value="zlib"/>
</designation>
</concept>
<concept>
<code value="other"/>
<display value="Other compression algorithm"/>
<designation>
<language value="ja"/>
<value value="その他"/>
</designation>
</concept>
</include>
</compose>
</ValueSet>
Having all these snippets won’t stop us for generating an “all valueset” file containing a copy of all the valuesets for offline processing.
What do you think about it?