由于我们正在尝试建立FHIR通信的合作伙伴正在使用FHIR架构的中间版本,因此他们正在发送并期望具有organization
元素而不是{{1}元素的Practitioner / PractitionerRoleComponent }}是FHIR.NET API所期望的。
我已经将Practitioner和PractitionerRoleComponent分为子类,并且可以很好地创建对象,因此在我们的案例中,Practitioner现在有一个自定义的“ THXPractitionerRole”。没有遇到错误,我在子类中拥有所有属性(请参见下文)。
但是,当我序列化为XML时,结果根本没有PractitionerRole -似乎序列化器似乎完全忽略了它。我猜想FHIR.Net序列化器会进行某种检查,以确保它们仅序列化有效的FHIR类型?还是子类中缺少任何可能阻止其工作的东西?
我正在谈论的API在这里:https://github.com/ewoutkramer/fhir-net-api/tree/develop
目标是能够在生成的XML / Json中具有Practitioner / practitionerRole / organization元素。
managingOrganization
在这里被称为:
[FhirType("Practitioner", IsResource = true)]
[DataContract]
public partial class THXPractitioner : Hl7.Fhir.Model.Practitioner, System.ComponentModel.INotifyPropertyChanged
{
[FhirElement("practitionerRole", Order = 170)]
[Cardinality(Min = 0, Max = -1)]
[DataMember]
public List<THXPractitionerRoleComponent> THXPractitionerRole
{
get { if (_PractitionerRole == null) _PractitionerRole = new List<THXPractitionerRoleComponent>(); return _PractitionerRole; }
set { _PractitionerRole = value; OnPropertyChanged("PractitionerRole"); }
}
private List<THXPractitionerRoleComponent> _PractitionerRole;
[FhirType("PractitionerRoleComponent")]
[DataContract]
public partial class THXPractitionerRoleComponent : Hl7.Fhir.Model.Practitioner.PractitionerRoleComponent, System.ComponentModel.INotifyPropertyChanged, IBackboneElement
{
[NotMapped]
public override string TypeName { get { return "PractitionerRoleComponent"; } }
/// <summary>
/// Organization where the roles are performed
/// </summary>
[FhirElement("organization", Order = 40)]
[References("Organization")]
[DataMember]
public ResourceReference organization
{
get { return _organization; }
set { _organization = value; OnPropertyChanged("organization");}
}
private ResourceReference _organization;
}
谢谢。
答案 0 :(得分:1)
由于没有满足您需求的正式FHIR版本,因此没有可以使用的库版本,我们认为最好的选择是派生该库的源代码(请参见https://github.com/ewoutkramer/fhir-net-api) 。然后,您可以查找其他资源以查看其组件的代码,并更改Practitioner以包括PractitionerRoleComponent。构建解决方案,您就可以将其用作库而不是正式库。
答案 1 :(得分:0)
我的一位同事最终在GitHub上找到了该项目的“问题”:
https://github.com/ewoutkramer/fhir-net-api/issues/337
因此,我最终制作了一个库的副本,并按照问题线程中提出的想法进行了重新编译。现在,我们有了一个自定义库。
从问题开始:
当前处理自定义资源的唯一方法是为其创建一个StructureDefinition,将其添加到 Model / Source 目录中的profiles-resources.xml文件中,然后重新运行T4模板-您将获得您自己的.NET库版本,并为您自己的资源提供POCO。...
我这样做了,必须通过Visual Studio中的Template-Model.tt
上下文菜单选项运行Run Custom Tool
之前,必须删除Generated / Practitioner.cs文件。完成后,将使用我们的新/自定义资源生成Practitioner.cs文件,并且库能够将其序列化为我们所需的XML。