Nhờ hướng dẫn cách tách chuỗi HL7 từ máy xét nghiệm

Em chào mọi người ạ, em đang làm về giao tiếp với máy xét nghiệm, các máy xét nghiệm giao tiếp với nhau bằng hl7, em đã đọc qua mà vẫn chưa hiểu được và vận dụng để tách chuỗi được, nhờ các anh biết về nó chỉ giúp em với ạ, em cảm ơn.


Chuỗi được lấy từ máy architech_i2000sr


1H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
37
2P|1|||||||U
F8
3O|1|031|031^Z741^3|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
38
4R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.10|S/CO||EXP||F||ADMIN^ADMIN||20220801114300|iSR63164
77
5R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801114300|iSR63164
3A
6R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|192|RLU||||F||ADMIN^ADMIN||20220801114300|iSR63164
54
7L|1
40
0H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
36
1P|1|||||||U
F7
2O|1|032|032^Z741^4|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
3A
3R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.24|S/CO||EXP||F||ADMIN^ADMIN||20220801114318|iSR63164
84
4R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801114318|iSR63164
42
5R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|486|RLU||||F||ADMIN^ADMIN||20220801114318|iSR63164
62
6L|1
3F
7H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
3D
0P|1|||||||U
F6
1O|1|071|071^Z741^2|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
3D
2R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.11|S/CO||EXP||F||ADMIN^ADMIN||20220801133359|iSR63164
85
3R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801133359|iSR63164
47
4R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|228|RLU||||F||ADMIN^ADMIN||20220801133359|iSR63164
61
5L|1
3E
6H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
3C
7P|1|||||||U
FD
0O|1|071|071^Z741^2|^^^99^FT3_6^UNDILUTED^P|R||||||||||||||||||||F
8E
1R|1|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^F|2.54|pg/mL||EXP||F||ADMIN^ADMIN||20220801133417|iSR63164
8B
2R|2|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^P|310074|RLU||||F||ADMIN^ADMIN||20220801133417|iSR63164
44
3L|1
3C
4H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
3A
5P|1|||||||U
FB
6O|1|072|072^Z741^3|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
45
7R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.12|S/CO||EXP||F||ADMIN^ADMIN||20220801133435|iSR63164
86
0R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801133435|iSR63164
3F
1R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|240|RLU||||F||ADMIN^ADMIN||20220801133435|iSR63164
53
2L|1
3B
3H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
39
4P|1|||||||U
FA
5O|1|073|073^Z741^1|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
44
6R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.09|S/CO||EXP||R||ADMIN^ADMIN||20220801133341|iSR63164
93
7R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||R||ADMIN^ADMIN||20220801133341|iSR63164
4E
0R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|176|RLU||||R||ADMIN^ADMIN||20220801133341|iSR63164
62
1L|1
3A
2H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
38
3P|1|||||||U
F9
4O|1|318|318^Z741^5|^^^99^FT3_6^UNDILUTED^P|R||||||||||||||||||||F
9D
5R|1|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^F|2.09|pg/mL||EXP||R||ADMIN^ADMIN||20220801114336|iSR63164
9A
6R|2|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^P|345666|RLU||||R||ADMIN^ADMIN||20220801114336|iSR63164
62
7L|1
40

Ý nghĩa của hành động xét nghiệm đó là gì vậy bạn? Input và output mong muốn của bạn là gì?

Mình đang nhìn thấy chuỗi 20220801153217, có thể là ngày tháng (2022-08-01 15:32:17).

3 Likes

Dữ liệu ở trên gồm nhiều kết quả của nhiều mẫu, mỗi mẫu có một vài chỉ số, mỗi chỉ số có các thông tin như ngày trả, giá trị của chỉ số, tên chỉ số…, có nhiều thông tin khác em không biết nó là gì và tùy vào máy sẽ trả kết quả khác nhau. Chủ yếu do chưa hiểu đc quy luật nên chưa thể tách các giá trị.

Nhìn bằng mắt thường thì mình tạm chia dữ liệu thành các block nhỏ:

Đầu file là kí tự có mã hex là 0x05.

1H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
37
2P|1|||||||U
F8
3O|1|031|031^Z741^3|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
38
4R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.10|S/CO||EXP||F||ADMIN^ADMIN||20220801114300|iSR63164
77
5R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801114300|iSR63164
3A
6R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|192|RLU||||F||ADMIN^ADMIN||20220801114300|iSR63164
54
7L|1
40
0H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
36
1P|1|||||||U
F7
2O|1|032|032^Z741^4|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
3A
3R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.24|S/CO||EXP||F||ADMIN^ADMIN||20220801114318|iSR63164
84
4R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801114318|iSR63164
42
5R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|486|RLU||||F||ADMIN^ADMIN||20220801114318|iSR63164
62
6L|1
3F
7H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
3D
0P|1|||||||U
F6
1O|1|071|071^Z741^2|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
3D
2R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.11|S/CO||EXP||F||ADMIN^ADMIN||20220801133359|iSR63164
85
3R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801133359|iSR63164
47
4R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|228|RLU||||F||ADMIN^ADMIN||20220801133359|iSR63164
61
5L|1
3E
6H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
3C
7P|1|||||||U
FD
0O|1|071|071^Z741^2|^^^99^FT3_6^UNDILUTED^P|R||||||||||||||||||||F
8E
1R|1|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^F|2.54|pg/mL||EXP||F||ADMIN^ADMIN||20220801133417|iSR63164
8B
2R|2|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^P|310074|RLU||||F||ADMIN^ADMIN||20220801133417|iSR63164
44
3L|1
3C
4H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
3A
5P|1|||||||U
FB
6O|1|072|072^Z741^3|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
45
7R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.12|S/CO||EXP||F||ADMIN^ADMIN||20220801133435|iSR63164
86
0R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||F||ADMIN^ADMIN||20220801133435|iSR63164
3F
1R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|240|RLU||||F||ADMIN^ADMIN||20220801133435|iSR63164
53
2L|1
3B
3H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
39
4P|1|||||||U
FA
5O|1|073|073^Z741^1|^^^639^_HIV Ag/Ab^UNDILUTED^P|R||||||||||||||||||||F
44
6R|1|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^F|0.09|S/CO||EXP||R||ADMIN^ADMIN||20220801133341|iSR63164
93
7R|2|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^I|Nonreactive|||||R||ADMIN^ADMIN||20220801133341|iSR63164
4E
0R|3|^^^639^_HIV Ag/Ab^UNDILUTED^P^34184BE00^26618^^P|176|RLU||||R||ADMIN^ADMIN||20220801133341|iSR63164
62
1L|1
3A
2H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|20220801153217
38
3P|1|||||||U
F9
4O|1|318|318^Z741^5|^^^99^FT3_6^UNDILUTED^P|R||||||||||||||||||||F
9D
5R|1|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^F|2.09|pg/mL||EXP||R||ADMIN^ADMIN||20220801114336|iSR63164
9A
6R|2|^^^99^FT3_6^UNDILUTED^P^34507UD00^11235^^P|345666|RLU||||R||ADMIN^ADMIN||20220801114336|iSR63164
62
7L|1
40

Cuối file là 1 kí tự gì đó mà mình chưa thấy, mong bạn đăng hình kết quả đoạn cuối lên đây.

Dòng đầu tiên của mỗi block:

*H|\^&|||ARCHITECT^9.45^F3458300179^H1P1O1R1C1Q1L1|||||||P|1|**************
^                                                            ^
|                                                            |
1 chữ số                            8 chữ số, theo định dạng YYYYMMDDHHMMSS

Dòng thứ 2, 4, 6,… là 1 số hex.

Dòng thứ 1, 3, 5, 7,…:

  • có 1 chữ số hệ octal đứng đầu, các chữ số này tăng dần và quay vòng (7 -> 0 -> 1 -> 2 -> 3 -> 4 -> 5)

  • kí tự thứ 2 lần lượt là H (dòng 3), P (dòng 5), O (dòng 7), R (dòng 9, 11,…), L (dòng thứ 2 từ dưới lên)

Dòng thứ 5

*O|1|***|***^Z741^2|^^^(.+)|R||||||||||||||||||||F
      ^   ^              ^
      |   |              |
      3 c/s   1 nhóm các kí tự, sẽ lặp lại ở các dòng sau
(2 số giống nhau)

Dòng 7, 9,…

*R|*|^^^(.+)^34184BE00^26618^^*|(.*)|(.*)|(.*)|(.*)|(.*)|F||(.+)||**************|iSR63164
   ^     ^                    ^                               ^          ^
   |     |                    |                               |          |
   |     |                 1 kí tự                  người thực hiện, ngày thực hiện
   |   chuỗi bị lặp lại ở trên
1 c/s,
tăng dần từ 1

Dòng thứ 2 từ dưới lên

*L|1
2 Likes

Đây ạ, em đoán là ký tự thông báo kết thúc chuỗi.

EOT là kí tự có mã hex là 0x04 (End of Transmit).

https://www.eso.org/~ndelmott/ascii.html

Mình mới thử search HL7 message structure, bạn thử tham khảo:

3 Likes


Em vừa nhận được sự trợ giúp, ổng giải thích sơ ý nghĩa, đại khái là 1 nhóm các chuỗi vậy chỉ cần quan tâm dòng đầu: mã thông số trong máy (639), tên thông số: (_HIV Ag/Ab), Id mẫu xét nghiệm nhân viên nhập vào máy (26618), giá trị của thông số (0.1), ngày tháng (…) và số seri của máy (iSR63…). Các thông tin khác như Nonreactive là âm tính, p^3484BE00 mã của chất xét nghiệm gì đó,… thì không cần quan tâm. Nên dựa vào đó em có thể lấy được bằng cách tách chuỗi bth :smiley: Cái này hơi đặc thù và hơi rối tí do cú pháp hl7 khó hiểu quá, dù sao cảm ơn anh ạ.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?