FHIR:添加自定义扩展程序

时间:2017-01-24 13:32:06

标签: dstu2-fhir hl7-fhir hapi-fhir

我想添加一个自定义扩展程序到我的Schedule资源。 在我的应用程序中,附表有访问动机(原因)。我知道有一份分类约会/遇到理由的清单,但我想用我的。

我有这样的事情:

{
  "resourceType":"Schedule",
  "identifier":"logical_id",
  "type":"schedule_speciality",
  "actor":{
    "practioner_id":"identifier",
    "practioner_name":"practioner name"
  },
  "external_id":{
    "extension":[
      {
        "url":"http://api.test.com/fhir/schedule/external_id",
        "valueIdentifier":"external_id"
      }
    ]
  },
  "visit_motives":{
    "extension":[
      {
        "url":"https://api.test.com/fhir/ValueSet/schedule#visit_motives",
        "valueString":"vist_motive1"
      },
      {
        "url":"https://api.test.com/fhir/ValueSet/schedule#visit_motives",
        "valueString":"vist_motive2"
      },
      {
        "url":"https://api.test.com/fhir/ValueSet/schedule#visit_motives",
        "valueString":"vist_motive3"
      }
    ]
  },
  "practice_id":{
    "extension":[
      {
        "url":"https://api.test.com/fhir/schedule/practice_id",
        "valueIdentifier":"practice_id"
      }
    ]
  }
}

我不确定这一部分:

"visit_motives":{
    "extension":[
      {
        "url":"https://api.test.com/fhir/ValueSet/schedule#visit_motives",
        "valueString":"vist_motive1"
      },
      {
        "url":"https://api.test.com/fhir/ValueSet/schedule#visit_motives",
        "valueString":"vist_motive2"
      },
      {
        "url":"https://api.test.com/fhir/ValueSet/schedule#visit_motives",
        "valueString":"vist_motive3"
      }
    ]
  }

以这种方式添加扩展名是否正确?对于特定的时间表总是有多个访问动机,所以我必须列出它们。

我也见过这种事:

"visit_motives": {
          "coding": [
            {
              "system": "https://api.test.com/fhir/ValueSet/schedule#visit_motives",
              "code": "visit_motive1"
            }
          ]
        }

哪一个是正确的还是我错了?

1 个答案:

答案 0 :(得分:4)

这里有几个问题:

  1. 捕捉"原因"似乎很奇怪在一个时间表上。时间表说明特定临床医生或诊所或其他资源何时可用。例如。 "博士。史密斯从下午1点到4点约会时间周一/周三/周五约会。因此,如果您要捕获资源上的原因,它将反映出#34;为什么史密斯博士有一个时间表?"通常会针对个人约会捕获原因。这是为计划访问预留特定位置的资源。并且预约已经有了一个元素,您可以自由使用自己的代码或只是发送文本。

  2. 您有扩展来传达标识符,但Schedule已经有一个标识符元素。为什么要使用扩展而不是标准元素?请注意,您可以使用"系统"和/或"键入"用于区分不同类型标识符的组件。

  3. 您正在发送"标识符","输入"," name"等作为简单的字符串 - 但他们'重新复杂的数据类型,因此您需要传达子元素

  4. actor属于Reference类型 - 这意味着您需要指向Practitioner资源。您无法在线发送属性。 (如果从业者仅存在于附表的上下文中,您可以使用"包含"方法,该方法将使用内部引用,但在这个用例中,包含似乎没有意义。

  5. 您的扩展程序的网址包含ValueSet,它不是正确的 - 扩展程序都是结构定义。此外,URL中不应该是#符号。

  6. 您的扩展语法不正确。您无法在FHIR中引入新属性。所有扩展程序的属性名称仅为"扩展名"。您可以通过URL进行区分。所以你的语法应该是:

  7. {
      "resourceType":"Schedule",
      "id":"logical_id",
      "extension": [
        {
          "url":"https://api.test.com/fhir/StructureDefinition/schedule-visit_motive",
          "valueString":"vist_motive1"
        },
        {
          "url":"https://api.test.com/fhir/StructureDefinition/schedule-visit_motive",
          "valueString":"vist_motive2"
        },
        {
          "url":"https://api.test.com/fhir/StructureDefinition/schedule-visit_motives,
          "valueString":"vist_motive3"
        }
      ],
      "identifier": [
        {
          "system": http://api.test.com/fhir/NamingSystem/external_id",
          "value": "external_id"
        }
        {
          "system": http://api.test.com/fhir/NamingSystem/practice_id",
          "value": "practice_id"
        }
      ]
      "type": {
        "coding": {
          "system": "http://somewhere.org/fhir/CodeSystem/specialties",
          "code": "schedule_speciality"
        },
        "text": "Some text description of specialty"
      },
      "actor":{
        "reference": "http://myserver.org/fhir/Practitioner/12345"
        "display": "Dr. smith"
      }
    }
    
相关问题