如何解决Hapi FHIR 捆绑包 - 资源不包含 id 元素
我正在尝试生成一个包含诊断报告和多个相关媒体的包。但是,我无法让生成的包包含媒体资源 (entry[i]/resource/id) 的 id 元素。
我生成了这样的诊断报告和媒体:
protected Media createMedia(String patientID,DatasetFile datasetFile,Thumbnail thumbnail) {
Media media = new Media();
media.setId(IdType.newRandomUuid());
media.setStatus(Media.MediaStatus.COMPLETED);
media.setHeight(thumbnail.height);
media.setWidth(thumbnail.width);
media.getCreatedDateTimeType().setValue(DateTime.Now().toDate());
media.getSubject().setReference("Patient/" + patientID);
media.getSubject().setType("Patient");
Identifier identifier = media.addIdentifier();
identifier.setSystem(testSystem);
identifier.setValue(datasetFile.getGlobalId().toString());
media.getType().addCoding()
.setSystem("http://hl7.org/fhir/ValueSet/media-type")
.setCode("image");
media.getContent()
.setTitle(thumbnail.fileName)
.setContentType(thumbnail.contentType)
.setData(thumbnail.imageContent);
return media;
}
protected DiagnosticReport createDiagnosticReport(String patientID,Long globalMessageId,Dataset dataset,Map<DatasetFile,Media> medias) {
DiagnosticReport diagnosticReport = new DiagnosticReport();
diagnosticReport.setId(IdType.newRandomUuid());
diagnosticReport.setStatus(DiagnosticReport.DiagnosticReportStatus.FINAL);
diagnosticReport.getText().getDiv().setValueAsstring("TBD");
diagnosticReport.getText().setStatus(Narrative.NarrativeStatus.ADDITIONAL);
diagnosticReport.getCode()
.addCoding()
.setSystem("http://loinc.org")
.setCode("10197-2")
.setdisplay("Physical findings of Eye Narrative");
diagnosticReport.getSubject().setReference("Patient/" + patientID);
diagnosticReport.getEffectiveDateTimeType().setValue(DateTime.Now().toDate());
Identifier identifier = diagnosticReport.addIdentifier();
identifier.setSystem(testSystem);
identifier.setValue(dataset.getGlobalId().toString());
medias.values().stream().forEach(m -> {
DiagnosticReport.DiagnosticReportMediaComponent mediaRep = diagnosticReport.addMedia();
mediaRep.getLink().setReference(m.getIdElement().getValue());
mediaRep.getLink().setType("Media");
});
return diagnosticReport;
}
这是我用来将诊断报告和媒体放入包中的代码:
protected void addDiagnosticReportAndMediasToBundle(Bundle bundle,DiagnosticReport diagnosticReport,Media> medias) {
bundle.setType(Bundle.BundleType.TRANSACTION);
bundle.addEntry()
.setResource(diagnosticReport)
.getRequest()
.setUrl("DiagnosticReport")
.setMethod(Bundle.HTTPVerb.POST);
medias.values().forEach(m -> {
Bundle.BundleEntryComponent bundleEntryComponent = bundle.addEntry();
bundleEntryComponent.setResource(m);
// bundleEntryComponent.setId(m.getId());
bundleEntryComponent.getRequest()
.setUrl("Media")
.setMethod(Bundle.HTTPVerb.POST);
});
}
这会导致以下 snipper(摘录):
{
"resourceType": "Bundle","type": "transaction","entry": [ {
"resource": {
"resourceType": "DiagnosticReport","text": {
"status": "additional","div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">TBD</div>"
},"identifier": [ {
"system": "http://test.com/my","value": "10"
} ],"status": "final","code": {
"coding": [ {
"system": "http://loinc.org","code": "10197-2","display": "Physical findings of Eye Narrative"
} ]
},"subject": {
"reference": "Patient/559d0494ddd50c0e847e14b5"
},"effectiveDateTime": "2021-03-17T19:41:11+01:00","media": [ {
"link": {
"reference": "urn:uuid:67f3d12d-85f2-412c-bcd7-ab1f55acb63a","type": "Media"
}
} ]
},"request": {
"method": "POST","url": "DiagnosticReport"
}
},{
"resource": {
"resourceType": "Media","value": "1616"
} ],"status": "completed","type": {
"coding": [ {
"system": "http://hl7.org/fhir/ValueSet/media-type","code": "image"
} ]
},"subject": {
"reference": "Patient/559d0494ddd50c0e847e14b5","type": "Patient"
},"createdDateTime": "2021-03-17T19:41:11+01:00","height": 200,"width": 200,"content": {
"contentType": "image/jpeg","data": "/9j/4AAQSkZJRgABAgEAYABgAAD(...)","title": "dummy image.jpg"
}
},"url": "Media"
}
} ]
}
diagnosticReport entry[i]/resource/media[j]/link/reference中出现媒体的随机uuid
调用 m.setId 或 m.setIdElement 不会按预期更改任何内容。
这是 FHIR 的预期行为吗?在我的示例中,我只有一个媒体,但如果有 2 个,我将无法识别哪个媒体是哪个?
谢谢!
解决方法
- 您的媒体资源没有 ID。
“资源”:{ "resourceType": "媒体","id": "1234",...
- 媒体中的引用不适合您的应用程序。它不应该使用骨灰盒,而是对媒体资源的引用
“媒体”:[ { “关联”: { "reference": "Media\1234",“类型”:“媒体” } }]
,使用 media.setId(IdType.newRandomUuid());
不起作用。如果我将任何静态字符串作为参数传递,它会按预期工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。