added tests
This commit is contained in:
45
translator.py
Normal file
45
translator.py
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user