FHIR.net Property已添加到Practitioner

时间:2017-06-09 13:33:52

标签: hl7-fhir

我们目前正在使用FHIR.net库(STU3)。我们从中接收信息的FHIR服务器已向Practitioner添加了 practitionerRole 属性。因此,当阅读从业者时,我们会得到以下例外:

在Hl7.Fhir.Rest.HttpToEntryExtensions.parseResource(String bodyText,String contentType,ParserSettings设置,Boolean throwOnFormatException)中反序列化(在路径'第1行,第2位')时遇到未知成员'practitionerRole'

我能想到的唯一解决方案是在Model \ Generated \ Practitioner.cs类中添加一个如下所示的PractorRole属性:

    [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;

还有其他解决方案吗?如果是这样,哪一个?

提前谢谢

2 个答案:

答案 0 :(得分:1)

听起来你正在和DSTU2服务器交谈。您需要在系统和他们的系统之间建立某种转换层。

答案 1 :(得分:0)

如FHIR员工在https://sea-region.github.com/standardhealth/shr_spec/issues/187中所述,DSTU2和STU3是FHIR标准的两个不同版本。如果您查看他们在2019年8月的最后一次提交(https://www.nuget.org/packages?q=Fhir),您将看到他们同时遵循这两个标准。这可能是由于医院使用的是STU3版本,并且不想适应FHIR的新版本DSTU2。

当您想上一堂课,比如说耐心,同时存在两种版本时,就会出现问题。编译器无法确定您引用哪个“患者”类。

通常,您可以专门使用进口商品或预定说明,例如:

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

BUT ,两个版本中的Patient类均描述为Hl7.Fhir.Model.Patient。它们的名称空间是“ Hl7.Fhir.Model”,其类名称是“患者”。

通常,您可以使用关键字来解决:

extern alias

,由于FHIR中的模型类是只读的,因此您不能在同一项目中使用这两个版本。

您需要卸载不需要的FHIR版本并安装需要的版本。要在Visual Studio中进行这些操作,

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

您还可以按照以下未回答的问题进行操作: C# T4 Template equivalent for "extern alias"