Я пытаюсь использовать схему JSON, определенную на www.hl7.org/fhir/json.html, например www.hl7.org/fhir/Patient.schema.json.
Схема начинается с:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://hl7.org/fhir/json-schema/Patient",
"$ref": "#/definitions/Patient",
"description": "see http://hl7.org/fhir/json.html#schema for information
about the FHIR Json Schemas",
"definitions": {
"Patient": {
"allOf": [
{
"$ref": "DomainResource#/definitions/DomainResource"
},
Когда я вставляю это в [www.jsonschemavalidator.net] [3], я получаю сообщение об ошибке
Ошибка при разрешении ссылки на схему "# / definitions / Patient". Путь '', строка 1, позиция 1.
Если я перенесу строку 4 («$ ref»: «# / definitions / Patient») внутрь определения «Пациент», ошибка синтаксического анализа схемы будет исправлена, и я смогу правильно проверить некоторые образцы данных JSON.
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://hl7.org/fhir/json-schema/Patient",
"description": "see http://hl7.org/fhir/json.html#schema for information
about the FHIR Json Schemas",
"definitions": {
"Patient": {
"$ref": "#/definitions/Patient",
"allOf": [
{
"$ref": "DomainResource#/definitions/DomainResource"
},
Однако я заметил, что каждая схема JSON, определенная в http://hl7.org/fhir/json.html имеет такую структуру. Ошибка в схемах JSON HL7 или в способе, которым www.jsonschemavalidator.net разбирает эти схемы JSON?
Насколько я понимаю, $ ref состоит в том, что "$ ref": "# / definitions / Patient" смотрит на ближайший родительский идентификатор для baseURL, который в данном случае:
"hl7.org/fhir/json-schema/Patient".
Этот URL-адрес должен обслуживать www.hl7.org/fhir/Patient.schema.json, который из корневого элемента должен иметь элемент схемы # / definitions / Patient, который соответствует текущему элементу, в котором определено $ ref. Таким образом, кажется, что правильное размещение $ ref действительно должно быть внутри # / definitions / Patient, а не в верхнем корневом # / месте, где в настоящее время находится ссылка.