我们目前正在使用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;
还有其他解决方案吗?如果是这样,哪一个?
提前谢谢
答案 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"