Hướng dẫn tìm kiếm theo biểu thức ECL

Về màn hình tra cứu

1. ECL là gì, và khi nào cần đến nó

Ô tìm thuật ngữ trả lời câu hỏi “thuật ngữ này viết thế nào”. ECL (Expression Constraint Language) trả lời một câu hỏi khác hẳn: “cho tôi TẤT CẢ những khái niệm thoả điều kiện này”.

Ví dụ những việc chỉ ECL làm được:

ECL là ngôn ngữ do chính SNOMED International quy định, không phải quy ước riêng của phần mềm này. Biểu thức anh viết ở đây dùng lại được trên mọi máy chủ SNOMED CT khác.

2. Bốn ký hiệu phải thuộc

Mọi biểu thức đều dựng từ mã concept cộng với ký hiệu chỉ phạm vi:

Ký hiệuNghĩaVí dụKết quả
<<Chính nó mọi khái niệm con cháu<< 22298006Nhồi máu cơ tim và mọi loại nhồi máu cơ tim
<Chỉ con cháu, không lấy chính nó< 22298006Các loại nhồi máu cơ tim, bỏ khái niệm gốc
<!Chỉ con trực tiếp, không lấy cháu<! 64572001Các nhóm bệnh ở tầng ngay dưới “Bệnh”
>>Chính nó và mọi khái niệm cha ông>> 22298006Nhồi máu cơ tim, bệnh tim thiếu máu cục bộ, bệnh tim…

Viết trần một mã (22298006) là chỉ lấy đúng một khái niệm đó.

3. Ghép nhiều điều kiện

Toán tửNghĩaVí dụ
ANDGiao — nằm trong cả hai tập<< 19829001 AND << 301867009
ORHợp — nằm trong một trong hai<< 22298006 OR << 230690007
MINUSTrừ — thuộc tập đầu nhưng không thuộc tập sau<< 64572001 MINUS << 22298006

Dùng ngoặc đơn khi trộn nhiều toán tử, đúng như trong toán học:

(<< 22298006 OR << 230690007) MINUS << 40733004

4. Lọc theo thuộc tính — chỗ ECL mạnh hơn hẳn tìm chữ

Mỗi khái niệm SNOMED CT không chỉ có tên, nó còn có thuộc tính: bệnh này ở bộ phận nào, tổn thương hình thái gì, thủ thuật này làm trên bộ phận nào. Cú pháp:

tập_khái_niệm : mã_thuộc_tính = giá_trị

Ví dụ, mọi bệnh có vị trí tổn thương nằm trong cấu trúc tim:

< 404684003 : 363698007 = << 80891009

Cách đọc: trong Phát hiện lâm sàng (404684003), lấy những khái niệm có vị trí tổn thương (363698007) là cấu trúc tim (80891009) hoặc bất kỳ bộ phận nào của tim.

Vì sao điều này quan trọng: tìm theo chữ “tim” sẽ bỏ sót “Bệnh Fallot bốn chứng”, “Hội chứng Eisenmenger” — những bệnh tim không có chữ “tim” trong tên. Lọc theo thuộc tính thì không bỏ sót, vì nó đi theo nghĩa chứ không theo mặt chữ.

Vài thuộc tính hay dùng

Thuộc tínhDùng cho
363698007Vị trí tổn thươngBệnh nằm ở bộ phận nào
116676008Hình thái tổn thươngViêm, u, hoại tử…
246075003Tác nhân gây bệnhVi khuẩn, vi rút nào
405813007Vị trí thủ thuật trực tiếpThủ thuật làm trên bộ phận nào
260686004Phương phápCắt, nội soi, khâu…

5. Lấy theo bộ tham chiếu (refset)

Dấu ^ lấy mọi thành viên của một bộ tham chiếu — dùng khi cần đúng danh sách mà SNOMED International (hoặc một quốc gia) đã công bố sẵn:

^ 447562003

Đây là bộ ánh xạ SNOMED CT sang ICD-10. Ghép với điều kiện khác cũng được:

^ 447562003 AND << 64572001

6. Mã gốc hay dùng khi bắt đầu

Khái niệmGhi chú
138875005SNOMED CT ConceptGốc của toàn bộ cây
404684003Phát hiện lâm sàngBao gồm cả triệu chứng lẫn bệnh
64572001BệnhHẹp hơn “phát hiện lâm sàng”
71388002Thủ thuậtPhẫu thuật, thăm dò, chăm sóc
123037004Cấu trúc cơ thểGiải phẫu
105590001ChấtHoạt chất, hoá chất
373873005Chế phẩm dượcThuốc
363787002Quan sát đượcChỉ số đo được: mạch, huyết áp…

7. Đọc kết quả trên màn hình

8. Nhãn ngữ nghĩa trong ngoặc đơn

Mỗi dòng kết quả có một nhãn nhỏ trong ngoặc sau thuật ngữ: (bệnh), (thủ thuật), (cấu trúc cơ thể)… Đây là semantic tag của SNOMED CT, lấy từ tên đầy đủ (FSN), hiện bằng cả tiếng Việt lẫn tiếng Anh.

Không có nhãn là rất dễ chọn nhầm. SNOMED CT có những khái niệm tên giống hệt nhau, chỉ khác nhãn:

Chọn nhầm nhãn là hồ sơ bệnh án mang mã sai loại, và không ai phát hiện được vì tên hiển thị trông đúng.

Nhãn nào chưa có bản dịch chuẩn thì giữ nguyên tiếng Anh — thà để nguyên văn còn hơn dịch sai một nhãn quyết định nghĩa của cả thuật ngữ.

9. Lưu tạm và xuất Excel

Lưu tạm giữ lại biểu thức kèm tên và ghi chú, riêng cho tài khoản của anh. Biểu thức thật thường dài và khó gõ lại; lưu rồi thì lần sau bấm Dùng lại là chạy ngay, và người khác đọc được danh mục này dựng từ điều kiện nào.

Bản lưu tạm không phải ValueSet đã phê duyệt. Nó là bản nháp cá nhân, không qua quy trình duyệt và không được EMR gọi tới lúc chạy thật.

Xuất Excel kết xuất toàn bộ concept khớp biểu thức, không chỉ trang đang xem (tối đa 10.000 dòng mỗi lần). Tệp có hai trang:

Cột mã SCT được ghi dạng text. Đừng đổi sang định dạng số: mã SNOMED CT dài tới 18 chữ số, Excel hiểu là số sẽ làm tròn thành ký hiệu khoa học và mã sai vĩnh viễn khi mở lại tệp.

10. Gọi từ phần mềm EMR

Cùng một khả năng này, EMR gọi qua API chuẩn FHIR — không phải giao diện riêng của phần mềm này. Chi tiết hợp đồng ở API contract.

GET /fhir/ValueSet/$expand
    ?url=http://snomed.info/sct/900000000000207008/version/20260801?fhir_vs=ecl/<< 22298006
    &displayLanguage=vi&count=50&offset=0

Muốn lọc thêm theo chữ (kể cả chữ tiếng Việt) ngay trong phạm vi biểu thức, thêm &filter=màng tim. Kiểm một mã có nằm trong phạm vi hay không:

GET /fhir/ValueSet/$validate-code?url=…?fhir_vs=ecl/<< 22298006&code=57054005

11. Lỗi thường gặp

Hiện tượngNguyên nhân
Không ra kết quả nàoMã gốc viết sai, hoặc điều kiện AND quá chặt nên giao rỗng. Thử bỏ bớt một vế.
Ra quá nhiều, máy chậmBiểu thức bắt đầu từ gốc cây (<< 138875005). Thu hẹp về nhánh chuyên khoa.
Kết quả toàn tiếng AnhNhánh đó chưa được dịch. Đây là thông tin thật, không phải lỗi hiển thị.
Báo lỗi cú phápThiếu dấu cách quanh AND/OR/MINUS, hoặc ngoặc không khớp.
Kết quả khác đồng nghiệpHai người chạy trên hai phiên bản SNOMED CT khác nhau. Đối chiếu ô Phiên bản.

Quy định đầy đủ về ECL do SNOMED International ban hành; tài liệu này chỉ hướng dẫn phần dùng thường ngày trên phần mềm.