如何在 FHIR API 中更新患者?

问题描述

我有 Patient 的 JSON 数据,我尝试用新数据更新它。 当我尝试更新此患者时,条目将重复并且不会像这样更新:

{
   "telecom": [
    {
        "system": "phone","value": "2222215","use": "home"
    },{
        "system": "phone","use": "home"
    }
],"gender": "male","birthDate": "2020-12-24","address": [
    {
        "use": "home","line": [
            "28MCT"
        ],"city": "Hưng Yên","district": "Huyện Kim Động","state": "Thị Trấn Lương Bằng","country": "VNM"
    },{
        "use": "home","country": "VNM"
    }
]}

究竟用哪种方式更新?这是我的代码

private static void UpdatePatient(string patientId)
    {
        var client = new FhirClient("http://hapi.fhir.org/baseR4");
        Patient pat = client.Read<Patient>("Patient/1723313");
        pat.Address.Add(new Address(){ 
            Line = new string[1] {"28 MCT"},district = "Bến Cát",State = "An Thới",City = "Bình Dương",Country = "VNM"
        });
        client.Update<Patient>(pat);
    }

感谢您的帮助。

解决方法

电信和地址字段是列表。因此,如果您有现有数据并且执行 pat.Address.Add,它将向现有列表添加一个新项目 - 保留现有地址。在将更新的数据发送到服务器之前,您实际上必须先更新您的电信/地址字段。

例如 - 在 client.Read 和 client.Update 之间,使用 System.Linq:

var a = x.Address.First(ca => ca.Use == Address.AddressUse.Home);
a.Line = new string[] { "28 MCT" };

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...