Files
fhir2padnext/translator.py
Alexander Domene 8650bd09a3 added tests
2025-10-27 08:19:13 +01:00

46 lines
1.8 KiB
Python

import json
import os
class CodeTranslator:
def __init__(self):
self.maps = {}
def load_concept_maps(self, path):
if os.path.isdir(path):
for filename in os.listdir(path):
if filename.endswith('.json'):
self._load_map_file(os.path.join(path, filename))
else:
self._load_map_file(path)
def _load_map_file(self, filepath):
with open(filepath, 'r') as f:
concept_map = json.load(f)
self._parse_concept_map(concept_map)
def _parse_concept_map(self, concept_map):
if 'group' in concept_map:
for group in concept_map['group']:
source_system = group.get('source')
target_system = group.get('target')
if source_system and target_system:
if source_system not in self.maps:
self.maps[source_system] = {}
if target_system not in self.maps[source_system]:
self.maps[source_system][target_system] = {}
for element in group.get('element', []):
source_code = element.get('code')
if 'target' in element:
for target in element['target']:
target_code = target.get('code')
if source_code and target_code:
self.maps[source_system][target_system][source_code] = target_code
def translate(self, system, code):
if system in self.maps:
for target_system in self.maps[system]:
if code in self.maps[system][target_system]:
return self.maps[system][target_system][code]
return None