Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import sys | |
| import unittest | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[1])) | |
| from carepath.services.retrieval import MedicalTermRetriever, normalize_for_match | |
| class RetrievalTests(unittest.TestCase): | |
| def test_normalize_for_match_removes_vietnamese_diacritics(self) -> None: | |
| self.assertEqual(normalize_for_match("tăng huyết áp"), "tang huyet ap") | |
| def test_retrieve_exact_and_alias_terms(self) -> None: | |
| retriever = MedicalTermRetriever(Path("data/medical_lexicon.json"), top_k=5) | |
| terms = retriever.retrieve("bệnh nhân SpO2 98% và cao huyết áp") | |
| names = [item.term for item in terms] | |
| self.assertIn("SpO2", names) | |
| self.assertIn("hypertension", names) | |
| def test_short_aliases_do_not_match_inside_words(self) -> None: | |
| retriever = MedicalTermRetriever(Path("data/medical_lexicon.json"), top_k=10) | |
| terms = retriever.retrieve( | |
| "benh nhan dau nguc spo2 98 % huyet ap 120 tren 80 mmhg " | |
| "Phong kham noi tong quat" | |
| ) | |
| names = [item.term for item in terms] | |
| self.assertIn("SpO2", names) | |
| self.assertNotIn("potassium", names) | |
| self.assertNotIn("hemoglobin", names) | |
| self.assertNotIn("glucose", names) | |
| def test_hernia_transcript_does_not_retrieve_unrelated_terms(self) -> None: | |
| retriever = MedicalTermRetriever(Path("data/medical_lexicon.json"), top_k=10) | |
| text = ( | |
| "Bệnh nhân 32 tuổi có khối phồng vùng bẹn, xuất hiện khi đứng " | |
| "ho hoặc rặn, biến mất khi nằm, nghi thoát vị bẹn phải." | |
| ) | |
| names = [item.term for item in retriever.retrieve(text)] | |
| self.assertNotIn("platelet", names) | |
| self.assertNotIn("glucose", names) | |
| self.assertNotIn("X-ray", names) | |
| self.assertNotIn("diabetes mellitus", names) | |
| self.assertNotIn("diastolic", names) | |
| if __name__ == "__main__": | |
| unittest.main() | |