HAPI FHIR - 使用 StructureMap 从 CDA 到 FHIR

问题描述 投票:0回答:1

我正在使用 hapi-fhir 版本 7.2.1,并且我正在尝试使用 FHIR 映射语言和 StructureMap 资源来转换 FHIR 资源中的 CDA 文档

我写了这个单元测试

@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
    classes = {FhirCda2FhirServerApplication.class})
@ExtendWith(SpringExtension.class)
@Slf4j
public class CdaToFhirTests {
  @Autowired
  @Qualifier("fhirJsonParser")
  private IParser jsonParser;

  @Autowired private FhirContext fhirContext;
  @Autowired private DefaultProfileValidationSupport defaultProfileValidationSupport;
  private static IWorkerContext workerContext;


  @Test
  public void testCdaToFhirConverter() throws Exception {
    log.info("Test CDA to FHIR converter");

    // prePopulatedValidationSupport.addStructureDefinition(sd);
    HapiWorkerContext hapiWorkerContext =
        new HapiWorkerContext(fhirContext, defaultProfileValidationSupport);
    hapiWorkerContext.allStructures().stream()
        .forEach(
            structureDefinition -> {
              log.info(
                  "StructureDefinition type {} url {}",
                  structureDefinition.getType(),
                  structureDefinition.getUrl());
            });

    log.info("ALL STRUCT {}", hapiWorkerContext.allStructures());
    FileSystemResource cdaXmlResource = new FileSystemResource("ccda.xml");
    StructureMap structureMap =
        jsonParser.parseResource(
            StructureMap.class, new FileSystemResource("StructureMap.json").getInputStream());
    log.info("Loaded StructureMap {}", structureMap);
    StructureMapUtilities utils = new StructureMapUtilities(hapiWorkerContext);
    Element parsedCda =
        Manager.parse(hapiWorkerContext, cdaXmlResource.getInputStream(), FhirFormat.XML);
    Bundle target = new Bundle();
    utils.transform(null, parsedCda, structureMap, target);
    log.info("Bundle {}", jsonParser.encodeResourceToString(target));
  }
}

但是当我执行它时,我收到此错误:

org.hl7.fhir.exceptions.FHIRFormatError:这似乎不是 FHIR 资源(未知命名空间/名称 'urn:hl7-org:v3::ClinicalDocument') 在第 0 行第 0 行

在 org.hl7.fhir.r4.elementmodel.ParserBase.logError(ParserBase.java:104) 在 org.hl7.fhir.r4.elementmodel.ParserBase.getDefinition(ParserBase.java:130) 在 org.hl7.fhir.r4.elementmodel.XmlParser.parse(XmlParser.java:181) 在 org.hl7.fhir.r4.elementmodel.XmlParser.parse(XmlParser.java:172) 在 org.hl7.fhir.r4.elementmodel.XmlParser.parse(XmlParser.java:143) 在 org.hl7.fhir.r4.elementmodel.Manager.parse(Manager.java:67) 处 it.eng.pnt.fhir.cda2fhir.test.CdaToFhirTests.testCdaToFhirConverter(CdaToFhirTests.java:98) 在 java.base/java.lang.reflect.Method.invoke(Method.java:580) 处 java.base/java.util.ArrayList.forEach(ArrayList.java:1597) 在 java.base/java.util.ArrayList.forEach(ArrayList.java:1597)

我不知道我错过了什么。有人可以给我提示吗?

hl7-fhir hapi hapi-fhir
1个回答
0
投票

如果您不具体了解技术,可以使用 Microsoft FHIR Converter 将 C-CDA 转换为 FHIR。

© www.soinside.com 2019 - 2024. All rights reserved.