Решение по проектированию объекта для сложного объекта C# — сообщение HL7

Я пытаюсь создать объект сообщения HL7, анализируя необработанную текстовую строку.

Объектная модель выглядит следующим образом. введите здесь описание изображения

Объект, который я хочу создать, будет представлять это, позволяя вызывающим методам получать доступ к информации на основе индексов. Если информация из 2-го подполя в 3-м подполе 5-го поля сегмента с именем «PID» для сообщения, вы должны сделать это следующим образом:

HL7Message h = HL7Message(messageRawText);

Console.Writeline(h.GetInfo("PID",5,3,2)+" is sub-subfield I'm looking for")

Я также хотел бы получить доступ к более высоким уровням, например.

Console.Writeline(h.GetInfo("PID",5)+" is field I'm looking for")

Подходы, которые я рассматривал,

  1. создание объекта с полями, представляющими собой списки строк
  2. создание объекта, который имеет поля, которые другие определенные пользователем объекты сегментов, полей, подполей...

Что было бы лучшим подходом? Я предполагаю, что сценарий должен где-то существовать, но не могу найти идеальное решение для моего решения.


person Nimbocrux    schedule 19.08.2019    source источник
comment
Разве это не лучше всего обслуживать со строго типизированными свойствами, такими как h.Segments["PID"].Fields[5].Subfields[3].SubSubFields[2]?   -  person Lasse V. Karlsen    schedule 19.08.2019
comment
Идите со вторым вариантом.   -  person Zohar Peled    schedule 19.08.2019
comment
@Lasse Vågsæther Karlsen - какой синтаксис я использую для этого? Есть ли учебник для него?   -  person Nimbocrux    schedule 20.08.2019