我正在使用 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)
我不知道我错过了什么。有人可以给我提示吗?
如果您不具体了解技术,可以使用 Microsoft FHIR Converter 将 C-CDA 转换为 FHIR。