FHIR.net Недвижимость добавлена ​​к Практику

В настоящее время мы используем библиотеку FHIR.net (STU3). Сервер FHIR, с которого мы получаем информацию, добавил свойство PractitionerRole к Практику. Таким образом, читая Практика, мы получаем следующее исключение:

Обнаружен неизвестный член 'PractitionerRole' при десериализации (по пути 'строка 1, позиция 2') в Hl7.Fhir.Rest.HttpToEntryExtensions.parseResource(String bodyText, String contentType, параметры ParserSettings, логическое значение throwOnFormatException)

Единственное решение, о котором я могу подумать, - это добавить свойство PractitionerRole в класс Model\Generated\Practitioner.cs, которое будет выглядеть следующим образом:

    [FhirElement("practitionerRole", InSummary = true, Order = 115)]
    [Cardinality(Min = 0, Max = -1)]
    [DataMember]
    public List<Hl7.Fhir.Model.PractitionerRole> PractitionerRole
    {
        get { if (_PractitionerRole == null) _PractitionerRole = new List<Hl7.Fhir.Model.PractitionerRole>(); return _PractitionerRole; }
        set { _PractitionerRole = value; OnPropertyChanged("PractitionerRole"); }
    }

    private List<Hl7.Fhir.Model.PractitionerRole> _PractitionerRole;

Есть ли другое решение, кроме этого? Если да, то какой?

заранее спасибо

1 ответ

Похоже, вы разговариваете с сервером DSTU2. Вам понадобится какой-то слой преобразования между вашей системой и их.

As stated by FHIR employees in https://sea-region.github.com/standardhealth/shr_spec/issues/187, DSTU2 and STU3 are two different versions of FHIR standard. If you check their last commits ( https://www.nuget.org/packages?q=Fhir) as in August 2019, you will see they are maintaining both standards. That is probably due to the hospitals using STU3 version and do not want to adapt to the new version of FHIR, which is DSTU2.

The problem arises when you want to reach a class, let's say Patient, that coexists in two versions. Compiler can not decide which "Patient" class you refer to.

Normally, you could specialize using imports or predescription such as:

Hl7.Fhir.Model.Patient p = new Hl7.Fhir.Model.Patient();

BUT, Patient classes in both versions are described as Hl7.Fhir.Model.Patient. Their namespace is "Hl7.Fhir.Model" and their class name is "Patient".

Normally, you could workaround using keyword:

extern alias

BUT, since model classes in FHIR are read only, you can not use both versions in same project.

You need to uninstall unwanted FHIR version and install wanted version. To do these in Visual Studio,

go to Solution Manager> right click on "Manage Nuget Packages" > Search "Fhir" > uninstall unwanted FHIR version > install wanted version

You can also follow the unanswered question below: C# T4 Template equivalent for "extern alias"

Другие вопросы по тегам