Как проверить ресурс Fhir R4 на основе профилей и определения пользовательской структуры? - PullRequest
0 голосов
/ 23 сентября 2019

Я использую Hl7.Fhir.Serialization и Hl7.Fhir.Validation для проверки ресурса, как показано ниже.Но это базовая проверка, я хочу выполнить проверку профиля и расширение на основе расширений в Fhir R4, может кто-нибудь предложить мне лучшее решение?

private Hl7.Fhir.Validation.Validator GetValidator()
{
   return new Hl7.Fhir.Validation.Validator(PrepareValidationSettings());
}

private ValidationSettings PrepareValidationSettings()
{
     var settings = ValidationSettings.CreateDefault();
     settings.EnableXsdValidation = false;
     settings.Trace = false;
     settings.ResourceResolver = this.ProfileSource;
     settings.SkipConstraintValidation = false;
     settings.ResolveExteralReferences = true;
     settings.GenerateSnapshot = false;
     settings.TerminologyService = this.TerminologySource;

     return settings;
}


public FhirResponse ValidateResource(Resource resource)
{
      var serializedResourceXml = FhirSerializer.SerializeResourceToXml(resource);
      var reader = SerializationUtil.XmlReaderFromXmlText(serializedResourceXml);

      var valdationResult = GetValidator().Validate(reader);  // Validate the resource 

      if (valdationResult.Errors == 0)
      {
          return new FhirResponse(HttpStatusCode.OK);
      }

     return new FhirResponse(valdationResult, HttpStatusCode.InternalServerError);
}

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Ранее вы задавали еще один вопрос о проверке, и Ewout указал вам на доступный демонстрационный проект: https://github.com/FirelyTeam/Furore.Fhir.ValidationDemo

Если вы проверите код, вы обнаружите, что вы можете добавить другие преобразователи в настройки.ResourceResolver, который в вашем случае предположительно указывает только на базовую спецификацию.

Например, ищите эту строку:

var directorySource = new CachedResolver(new DirectorySource(profilePath, new DirectorySourceSettings { IncludeSubDirectories = true }));

Устанавливает преобразователь в папку, содержащую ваши пользовательские профили ирасширения и в следующей строке объединяет это с базовой спецификацией, которая будет использоваться в настройках валидатора.

0 голосов
/ 23 сентября 2019

Посмотрели ли вы FHIR Validator из FHIR Wiki - https://wiki.hl7.org/Using_the_FHIR_Validator, Я считаю, что он обладает необходимой вам функциональностью?

...