Я использую пакет FHIR и пытаюсь разрешить ссылки на ресурсы в пакете, используя пакет nuget .net FHIR R4. Я использую эту информацию в качестве ссылки.
Как разрешить ссылку в пакете:
- Если ссылка не является абсолютной ссылкой, преобразуйте ее в абсолютный URL:
- , еслиссылка имеет формат [тип] / [идентификатор] и
- , если fullUrl для записи пакета, содержащей ресурс, является RESTful (см. регулярное выражение RESTful URL)
- извлечь [root] из fullUrl и добавьте к нему ссылку (type / id)
- , а затем попытайтесь выполнить разрешение в комплекте, как для ссылки URL RESTful.
- Если разрешение невозможно, тогдассылка не имеет определенного значения в данной спецификации
- , иначе разрешение невозможно, и ссылка не имеет определенного значения в этой спецификации
- else
- Найдите запись с fullUrl, которая соответствует URI в ссылке
- , если совпадение не найдено, и URI - это URL, который можно разрешить (например, если http: URL),попробуйте получить к нему доступ напрямую)
Кроме того, обратите внимание, что ссылка может быть по идентификатору, и, если она есть, а URL-адрес отсутствует, ее можно решить путем сканирования идентификаторов в комплекте. Также обратите внимание, что транзакции могут содержать условные ссылки, которые должны быть разрешены сервером перед обработкой совпадений.
Если ссылка относится к конкретной версии (относительной или абсолютной), то удалите версию из URL-адреса перед сопоставлением fullUrl,а затем сопоставьте версию на основе Resource.meta.versionId. Обратите внимание, что правила разрешения ссылок в содержащихся ресурсах такие же, как и правила разрешения ресурсов в ресурсе, который содержит содержащийся ресурс.
Если найдено несколько совпадений, это неоднозначно, что правильно. Приложения МОГУТ возвращать ошибку или предпринимать другие действия, если сочтут это необходимым.
Метод расширения Bundle.FindEntry работает только с абсолютными ссылками, такими как эта ...
<entry>
<fullUrl value="http://example.org/fhir/Observation/124"/>
<resource>
<Observation>
<id value="124"/>
<subject>
<!-- this is reference to the first patient above -->
<reference value="http://example.org/fhir/Patient/23"/>
</subject>
</Observation>
</resource>
</entry>
... но выдает исключение, если ссылка не является абсолютной, например:
<entry>
<fullUrl value="http://example.org/fhir/Observation/123"/>
<resource>
<Observation>
<id value="123"/>
<subject>
<!-- this is reference to the first patient above -->
<reference value="Patient/23"/>
</subject>
</Observation>
</resource>
</entry>
Существует ли какая-либо функция, которая может разрешать относительные ссылки? Если что-то уже предоставлено, как бы я написал свой собственный?
- Как преобразовать относительный URL в абсолютный, как указано в спецификации?
- Какова логика для извлечения корня из FullUrl EntryComponent для разрешения? Как мне узнать что такое рут?
- Как узнать, что ссылка по идентификатору? это выглядит как относительная ссылка.