Пакет данных, содержащий в себе другие ресурсы.

Ресурс по FHIR

https://www.hl7.org/fhir/bundle.html

Описание полей

Основной пакет

Наименование

Тип значения

Описание

По умолчанию

Комментарий
resourceTypestringТип ресурсаBundle

typeEnum(string)

Тип пакета

transaction
entryArray of Ресурсы

Содержимое пакета:


Если направление в статусе cancelled, то в пакете будет содержаться только Результат исследования - DiagnosticReport с ограниченным набором полей:

  • resourceType
  • status
  • basedOn
  • conclusion


Результат исследования - DiagnosticReport

Наименование

Тип значения

Описание

Обязательность

Значение по умолчанию

КомментарийПоле в бд
resourceTypestringТип ресурсаДаDiagnosticReport
-
statusEnum(string)Статус заявкиДаfinal
Если передается результат исследования, то статус final, если неявка пациента, то cancelled-
basedOnArray of ReferenceСсылка на направление на исследование, по которому описывается результатДа

oms_lpu.GUIDLPU(головная) + lbr_LaboratoryResearch.Guid

По гуиду лпу определяем подключение к бд

categoryArray of CodeableConceptКлассификация процедуры - вид исследования

Нет



Не заполняется и не влияет на передачу

lbr_ResearchTypeKind.Code - Code

lbr_ResearchTypeKind.Name - Display

codeCodeableConceptИсследованиеНет

Не заполняется и не влияет на передачу

lbr_ResearchType.Code - Code

lbr_ResearchType.ResearchName - Display

subjectIdentifierПациентНет

Не заполняется и не влияет на передачу

hlt_Mkab.UGUID - value

issuedstringДата и время готовности отчетаДа


performerArray of Performer

Перечисление исполнителей.

Могут передаваться вложенные поля role.coding.code, role.coding.display, identifier.value, actor.identifier.value, actor.display. extension

Поля role.coding.* и actor.display являются обязательными, actor.identifier.value может не передаваться.

Поле extension используется для передачи информации об оказанных исполнителями(DIAGNOST или EXPERT) услугах.

Да

Для указания того что диагност относится к медорганизации, которой нет в направлении нужно передавать в массиве performer отдельно исполнителя с ролью DIAGNOST_ORG с указанием в поле performer.actor.identifier.value идентификатора этой организации.

Логика сохранения результата и услуг в зависимости от переданных данных:

Если заключение сделала медорганизация, которой нет в направлении, то ТАП создается в этой БД с услугой без направления и результатов исследований, но с указанием реквизитов направления в ТАП (для реестров счетов).

Если заключение сделала медорганизация, в которую направляли, то ТАП создается в этой БД с услугой и связкой с исследованием, по которому пришел результат + указываем реквизиты направления в ТАП (для реестров счетов).

Берется только значение из DIAGNOST или EXPERT

По ним ищем ресурс и проставляем ссылку в lbr_Research.rf_DocPRVDID

performer.role.coding.codestring

Роль исполнителя. Могут быть указаны следующие значения:

  • DIAGNOST - Врач заключения
  • EXPERT - Второе мнение
  • DIAGNOST_ORG - Медицинская организация, которая оформила заключение.
Да


performer.role.coding.displaystringДолжность врача.Нет


performer.actor.identifier.valuestring

Идентификатор врача или мед организации(для performer.role.coding.code = DIAGNOST_ORG).

Для DIAGNOST или EXPERT необходимо указывать значение идентификатора врача, полученное из запроса списка врачей.

Обязательно для DIAGNOST_ORG.

Нет*


performer.actor.displaystring

ФИО врача. Обязательно для DIAGNOST или EXPERT.

Для DIAGNOST_ORG необязательно

Да*


performer.extensionМассив extension

Расширенная информация. Массив объектов с полями url, value*.

В данном блоке используется для передачи услуг.

Может быть указано только для DIAGNOST или EXPERT



Для исполнителей с ролями DIAGNOST или EXPERT в объекте extension с кодом serviceMedical может быть указан код медицинской услуги( https://nsi.rosminzdrav.ru/#!/refbook/1.2.643.5.1.13.13.11.1070) оказанной ими.

Услуга оказанная лаборантом указывается в Описание снимка - ImagingStudy


performer.extension[].url string

Имя расширения. Используется для указания типа расширения.

При передаче услуги всегда указывается serviceMedical





performer.extension[].valueString string

Значение расширения. Для расширения с url = serviceMedical используется для передачи кода услуги оказанной исполнителем





imagingStudyArray of ReferenceСсылка на Описание снимка - ImagingStudyДа

-
conclusionstringТекст заключенияДа

lbr_Research.Conclusion
Пример модели в формате JSON
{
  "resource": {
    "resourceType": "DiagnosticReport",
    "status": "final",
    "category": {
      "coding": [
        {
          "code": "2",
          "display": "Рентгенография"
        }
      ]
    },
    "code": {
      "coding": [
        {
          "code": "A06.01.002",
          "display": "Рентгенография мягких тканей лица"
        }
      ]
    },
    "subject": {
      "identifier": {
        "value": "5be5f319-370e-4478-b0e6-134d13c959fcfabccb55-ebf5-45fd-b856-8af4a39cc3b1"
      }
    },
    "issued": "2018-02-09T19:58:48+03:00",
    "performer": [
      {
        "role": {
          "coding": [
            {
              "code": "DIAGNOST",
              "display": "Рентгенолог"
            }
          ]
        },
        "actor": {
          "identifier": {
            "value": "1dadf64c-f34a-4023-98a6-3e7b7be4f24354097553-5EF0-4E65-AF78-E07724DA5013"
          },
          "display": "Врач Который НаписалЗаключение"
        },
        "extension": [
          {
            "url": "serviceMedical",
            "valueString": "A01.01.001"
          }
        ]
      },
      {
        "role": {
          "coding": [
            {
              "code": "DIAGNOST_ORG"
            }
          ]
        },
        "actor": {
          "identifier": {
            "value": "1dadf64c-f34a-4023-98a6-3e7b7be4f243"
          }
        }
      }
    ],
    "imagingStudy": [
      {
        "identifier": {
          "value": "5555555"
        }
      }
    ],
    "conclusion": "Текст заключения с заэкранированными спецсимволами"
  }
}

Описание снимка - ImagingStudy

Наименование

Тип значения

Описание

Обязательность

Значение по умолчанию

Поле в бд
resourceTypestringТип ресурсаДаImagingStudy-
accessionstringНомер снимка в просмотрщике снимковДа-lbr_LaboratoryResearch.AccessionNumber
identifierArray of IdentifierИдентификатор снимкаДа--
uidstring

Uid снимка

ДаНе используетсяlbr_Research.StudyUID
patientReferenceСсылка на пациентаНет-

Не заполняется и не влияет на передачу

hlt_MKAB.UGUID

startedstringВремя снимкаДа-


interpreterArray of Reference

Ссылка на врача, сделавшего снимок.

Могут передаваться вложенные поля identifier.value и display.

Поле display является обязательным, identifier.value может не передаваться.

Да-По гуиду ищем ресурс и проставляем ссылку в lbr_Research.rf_PerformedDocPRVDID
interpreter.identifier.valuestring

Идентификатор врача.

Необходимо указывать значение идентификатора врача, полученное из запроса списка врачей.

Нет

interpreter.displaystringФИО врачаДа

interpreter.extensionМассив extension

Расширенная информация. Массив объектов с полями url, value*.

В данном блоке используется для передачи услуг.

Да*

interpreter.extension[].url string

Имя расширения. Используется для указания типа расширения.

При передаче услуги всегда указывается serviceMedical

Да*

interpreter.extension[].valueStringstring

Значение расширения. Для расширения с url = serviceMedical используется для передачи кода услуги оказанной исполнителем по справочнику https://nsi.rosminzdrav.ru/#!/refbook/1.2.643.5.1.13.13.11.1070

Да*

Данная услуга и ТАП добавляются, если медорганизация проводившая исследование и сделавшая заключение не совпадают(передана другая организация в DiagnosticReport.performer DIAGNOST_ORG)

descriptionstringОписаниеДа-lbr_Research.Comment
Пример модели в формате JSON
{
  "resource": {
    "resourceType": "ImagingStudy",
    "uid": "urn:oid:2.16.124.113543.6003.1154777499.30246.19789.3503430045",
    "accession": {
      "value": "12342398"
    },
    "identifier": [
      {
        "value": "5555555"
      }
    ],
    "patient": {
      "identifier": {
        "value": "fabccb55-ebf5-45fd-b856-8af4a39cc3b1"
      }
    },
    "started": "2018-02-09T17:58:48+03:00",
    "interpreter": [
      {
        "identifier": {
          "value": "1dadf64c-f34a-4023-98a6-3e7b7be4f24354097553-5EF0-4E65-AF78-E07724DA5013"
        },
        "display": "Врач Который ОписалСнимок",
        "extension": [
          {
            "url": "serviceMedical",
            "valueString": "A01.01.001"
          }
        ]
      }
    ],
    "description": "Текст описания исследования с заэкранированными спецсимволами"
  }
}

Параметр - Observation

Наименование

Тип значения

Описание

Обязательность

Значение по умолчанию

Поле в бд
resourceTypestringТип ресурсаДаObservation-
identifierArray of Identifier

Идентификатор параметра

Да-lbr_ResearchTypeParam.Uguid
basedOn
Array of ReferenceСсылка на Направление, к которому он относитсяДа-Значение из Направления
statusEnum(string)Статус параметраДа

registered при отправке

final при получении результата

-
categoryArray of CodeableConceptТип параметра + Обязательность параметраДа-
  1. Тип параметра
    1. "ResearchParamValueType" - system
    2. lbr_ResearchParamValueType.EnumName - Code
    3. lbr_ResearchParamValueType.Name - Display
  2. Обязательность параметра
    1. "RequiredParam" - system
    2. lbr_ResearchTypeParam.RequiredParam - code
codeCodeableConceptКлассификация параметраДа-

lbr_ResearchTypeParam.Code - Code

lbr_ResearchTypeParam.ParamName - Display

performerReferenceСсылка на исполнителя(Та же, что и в направлении)Да-Та же, что и в направлении
value[x]
Зависит от типа параметраНе используем при передаче направления. При получении результата используется как результат параметра. В зависимости от типа параметра используется разное поле, например если результат Целый, то он будет в поле valueQuantity, а если Enum, то в valueStringДа-

lbr_ResearchResult.rBoolean - valueString

lbr_ResearchResult.rDateTime - valueDateTime

lbr_ResearchResult.rDecimal - valueQuantity

lbr_ResearchResult.rInteger - valueQuantity

lbr_ResearchResult.rString - valueString

lbr_ResearchResult.Value - в зависимости от типа параметра

commentstringКомментарий к параметру. Только при результатеДа-lbr_ResearchResult.TestNote
referenceRangeArray of ReferenceRangeВозможные значения результатаНет, при отправке результата-Подробности в ReferenceRange

Пример модели в формате JSON

Перечисление(Enum):
{
  "resource": {
    "resourceType": "Observation",
    "identifier": [
      {
        "value": "2d133732-765b-4658-9b01-ed777b7510f5"
      }
    ],
    "basedOn": [
      {
        "identifier": {
          "value": "81700ce0-8b4b-4738-be2d-d4774086ed5658cf12f6-37e0-4694-b7cb-37660c66298e"
        }
      }
    ],
    "status": "registered",
    "category": [
      {
        "coding": [
          {
            "system": "ResearchParamValueType",
            "code": "Enum",
            "display": "Тип \"Перечисление\""
          }
        ]
      },
      {
        "coding": [
          {
            "system": "RequiredParam",
            "code": "False"
          }
        ]
      }
    ],
    "code": {
      "coding": [
        {
          "system": "",
          "code": "200",
          "display": "Локализация"
        }
      ]
    },
    "performer": [
      {
        "identifier": {
          "value": "81700ce0-8b4b-4738-be2d-d4774086ed5614e308fe-8b38-4e4a-9b42-e5ed2e96876a"
        }
      }
    ],
    "referenceRange": [
      {
        "text": "1 левая верхняя + нижняя"
      },
      {
        "text": "10 правая нижняя доля"
      },
      {
        "text": "11 правая средня доля"
      },
      {
        "text": "12 правая средняя нижняя"
      },
      {
        "text": "13 правое легкое"
      },
      {
        "text": "14 сколиоз"
      },
      {
        "text": "2 левая верхняя + средняя"
      },
      {
        "text": "3 левая нижняя доля"
      },
      {
        "text": "4 левая средняя доля"
      },
      {
        "text": "5 левое легкое"
      },
      {
        "text": "6 прав + лев верхние доли"
      },
      {
        "text": "7 правая верхняя доля"
      },
      {
        "text": "8 правая верхняя сердечн."
      },
      {
        "text": "9 правая вехняя нижняя"
      }
    ]
  }
}
Целый(Integer):
{
  "resource": {
    "resourceType": "Observation",
    "identifier": [
      {
        "value": "69c479f8-4cf4-4248-9cba-3600b7334d37"
      }
    ],
    "basedOn": [
      {
        "identifier": {
          "value": "81700ce0-8b4b-4738-be2d-d4774086ed5658cf12f6-37e0-4694-b7cb-37660c66298e"
        }
      }
    ],
    "status": "registered",
    "category": [
      {
        "coding": [
          {
            "system": "ResearchParamValueType",
            "code": "Integer",
            "display": "Целый"
          }
        ]
      },
      {
        "coding": [
          {
            "system": "RequiredParam",
            "code": "False"
          }
        ]
      }
    ],
    "code": {
      "coding": [
        {
          "system": "",
          "code": "400",
          "display": "Номер кадра"
        }
      ]
    },
    "performer": [
      {
        "identifier": {
          "value": "81700ce0-8b4b-4738-be2d-d4774086ed5614e308fe-8b38-4e4a-9b42-e5ed2e96876a"
        }
      }
    ],
    "referenceRange": [
      {
        "low": {
          "value": 0
        },
        "high": {
          "value": 0
        },
        "text": ""
      }
    ]
  }
}



Пример пакета с минимально необходимыми полями модели в формате JSON
{
	"resourceType": "Bundle",
	"type": "transaction",
	"entry": [{
		"resource": {
			"resourceType": "DiagnosticReport",
			"identifier": [{
				"value": 123
			}],
			"basedOn": [{
				"identifier": {
					"value": "1dadf64c-f34a-4023-98a6-3e7b7be4f24393580c8d-8cd5-4a46-b316-096412d51a18"
				}
			}],
			"status": "cancelled",
			"category": [{
				"coding": [{
					"system": "TypeKind",
					"code": "48",
					"display": "Флюорография"
				}]
			}],
			"code": {
				"coding": [{
					"system": "Type",
					"code": "A06.09.006",
					"display": "Флюорография легких"
				},
				{
					"system": "CancelReason",
					"code": "2"
				}]
			},
			"subject": {
				"identifier": {
					"value": "913da9bf-1fd4-4b06-a06f-2d1b21c060c5"
				}
			},
			"issued": "2019-12-16T15:15:22+03:00",
			"performer": [{
				"role": {
					"coding": [{
						"code": "DIAGNOST",
						"display": "Врач лучевой диагностики"
					}]
				},
				"actor": {
					"identifier": {
					"value": "6F20BEBE-A0DE-4A80-929D-290599C6B8F9D5683FE4-C5CC-43AF-A027-203CB5AABC42"}
				}
			}, {
				"role": {
					"coding": [{
						"code": "DIAGNOST_ORG",
						"display": "Консультативно-диагностический отдел"
					}]
				},
				"actor": {
					"identifier": {
						"value": "28a08a86-0735-4867-9ddc-bbd4f104865e"
					}
				}
			}],
			"imagingStudy": [{
				"identifier": [{
					"value": 136916
				}]
			}]
		}
	}, {
		"resource": {
			"resourceType": "ImagingStudy",
			"uid": "someuid",
			"accession": {
				"value": ""
			},
			"identifier": [{
				"value": 136916
			}],
			"patient": {
				"identifier": {
					"value": "913da9bf-1fd4-4b06-a06f-2d1b21c060c5"
				}
			},
			"started": "2019-12-16T15:15:22+03:00",
			"interpreter": [{
				"identifier": {
					"value": "6F20BEBE-A0DE-4A80-929D-290599C6B8F9D5683FE4-C5CC-43AF-A027-203CB5AABC42"
				}
			}]
		}
	}, {
		"resource": {
			"resourceType": "Observation",
			"identifier": [{
				"value": "a409512d-f2da-4bdc-82a1-00e6c0120507"
			}],
			"basedOn": [{
				"identifier": {
					"value": "1dadf64c-f34a-4023-98a6-3e7b7be4f24393580c8d-8cd5-4a46-b316-096412d51a18"
				}
			}],
			"status": "final",
			"category": [{
				"coding": [{
					"system": "ResearchParamValueType",
					"code": "Enum",
					"display": "Тип \"Перечисление\""
				}]
			}, {
				"coding": [{
					"system": "RequiredParam",
					"code": "True"
				}]
			}],
			"valueString": "Норма"
		}
	}, {
		"resource": {
			"resourceType": "Observation",
			"identifier": [{
				"value": "2d133732-765b-4658-9b01-ed777b7510f5"
			}],
			"basedOn": [{
				"identifier": {
					"value": "1dadf64c-f34a-4023-98a6-3e7b7be4f24393580c8d-8cd5-4a46-b316-096412d51a18"
				}
			}],
			"status": "final",
			"category": [{
				"coding": [{
					"system": "ResearchParamValueType",
					"code": "Enum",
					"display": "Тип \"Перечисление\""
				}]
			}, {
				"coding": [{
					"system": "RequiredParam",
					"code": "False"
				}]
			}],
			"valueString": "1 левая верхняя + нижняя"
		}
	}, {
		"resource": {
			"resourceType": "Observation",
			"identifier": [{
				"value": "2db662a1-275f-40b6-95e3-d1afc43ac59e"
			}],
			"basedOn": [{
				"identifier": {
					"value": "1dadf64c-f34a-4023-98a6-3e7b7be4f24393580c8d-8cd5-4a46-b316-096412d51a18"
				}
			}],
			"status": "final",
			"category": [{
				"coding": [{
					"system": "ResearchParamValueType",
					"code": "Enum",
					"display": "Тип \"Перечисление\""
				}]
			}, {
				"coding": [{
					"system": "RequiredParam",
					"code": "False"
				}]
			}],
			"valueString": "1 норма"
		}
	}, {
		"resource": {
			"resourceType": "Observation",
			"identifier": [{
				"value": "69c479f8-4cf4-4248-9cba-3600b7334d37"
			}],
			"basedOn": [{
				"identifier": {
					"value": "1dadf64c-f34a-4023-98a6-3e7b7be4f24393580c8d-8cd5-4a46-b316-096412d51a18"
				}
			}],
			"status": "final",
			"category": [{
				"coding": [{
					"system": "ResearchParamValueType",
					"code": "Integer",
					"display": "Целый"
				}]
			}, {
				"coding": [{
					"system": "RequiredParam",
					"code": "False"
				}]
			}],
			"valueQuantity": 1
		}
	}]
}




  • Нет меток