Поскольку партнер, которого мы пытаемся настроить для связи FHIR, использует промежуточную версию схемы FHIR, он отправляет и ожидает объект Practitioner / PractitionerRoleComponent с элементом organization
вместо managingOrganization
, который Ожидается API FHIR.NET.
Я вложил в подклассы Practitioner и PractitionerRoleComponent и получил объекты, создающие штрафа, поэтому у Practitioner теперь есть собственный THXPractitionerRole в нашем случае. Ошибок не обнаружено, у меня есть все атрибуты в подклассе (см. Ниже).
Однако, когда я сериализуюсь в XML, результаты вообще не имеют значения PractitionerRole - кажется, что сериализатор просто полностью его игнорирует. Я собираюсь предположить, что сериализаторы FHIR.Net имеют какую-то проверку, чтобы убедиться, что они только сериализуют действительные типы FHIR? Или я что-то упускаю из подкласса, который может мешать его работе?
API, о котором я говорю, находится здесь: https://github.com/ewoutkramer/fhir-net-api/tree/develop
Цель состоит в том, чтобы иметь возможность иметь элемент Practitioner / PractitionerRole / Organization в результирующем XML / Json.
[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;
}
Вот как это называется:
fhirpractitioner.THXPractitionerRole = new List<Model.THXPractitioner.THXPractitionerRoleComponent>()
{
new Model.THXPractitioner.THXPractitionerRoleComponent()
{
Extension = new List<Extension>()
{
new Extension()
{
Url = "[My Url]",
}
},
organization = new ResourceReference()
{
Reference = "asdfasfd"
,Display = "organization"
,DisplayElement= new FhirString("organization")
}
}
};
Спасибо.