Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, se muestra cómo recuperar evidencia de apoyo de las inferencias de Radiology Insights La evidencia de apoyo muestra qué parte del texto del informe ha desencadenado una inferencia específica de Radiology Insights.
En este tutorial ha:
- enviar un documento al servicio Radiology Insights y recuperar la inferencia de Recomendación de seguimiento
- mostrar la evidencia de apoyo para esta inferencia
- recuperar la recomendación del procedimiento de obtención de imágenes y el procedimiento de obtención de imágenes per se contenidos en esta recomendación de seguimiento
- mostrar los códigos (SNOMED) y la evidencia de la Modalidad y la Anatomía contenida en el procedimiento de obtención de imágenes
Si no tiene una suscripción de servicio, cree una cuenta de evaluación gratuita.
Puede encontrar un ejemplo de trabajo completo del código incluido en este tutorial (con algunas adiciones adicionales) aquí: SampleFollowupRecommendationInferenceAsync.
Requisitos previos
Para usar el modelo de Radiology Insights (versión preliminar), debe tener un servicio Análisis prospectivo de estado de Azure AI creado. Si no tiene ningún servicio Análisis prospectivo de estado de Azure AI, consulte Implementación de Análisis prospectivo de estado de Azure AI mediante Azure Portal
Consulte la biblioteca cliente de Radiology Insights de Azure Cognitive Services y Análisis prospectivo de estado para Java para obtener una explicación sobre cómo crear una instancia de RadiologyInsightsClient, enviar un documento a esta y recuperar una clase RadiologyInsightsInferenceResult.
Recuperación de la inferencia de Recomendación de seguimiento
Una vez que tenga un RadiologyInsightsInferenceResult, use el código siguiente para recuperar la inferencia de Recomendación de seguimiento:
List<RadiologyInsightsPatientResult> patientResults = radiologyInsightsResult.getPatientResults();
for (RadiologyInsightsPatientResult patientResult : patientResults) {
List<RadiologyInsightsInference> inferences = patientResult.getInferences();
for (RadiologyInsightsInference inference : inferences) {
if (inference instanceof FollowupRecommendationInference) {
FollowupRecommendationInference followupRecommendationInference = (FollowupRecommendationInference) inference;
...
}
}
}
Mostrar la evidencia de apoyo para esta inferencia
Los objetos expuestos por el SDK de Java están estrechamente alineados con el estándar FHIR. Por lo tanto, la evidencia de apoyo de las inferencias de Recomendación de seguimiento se codifica dentro de los objetos FhirExtension. Recupere esos objetos y muestre la evidencia, como en el código siguiente:
List<FhirR4Extension> extensions = followupRecommendationInference.getExtension();
System.out.println(" Evidence: " + extractEvidence(extensions));
A medida que la evidencia se codifica en extensiones ajustadas en una extensión de nivel superior, el método extractEvidence() recorre en bucle esas subExtensiones:
private static String extractEvidence(List<FhirR4Extension> extensions) {
String evidence = "";
if (extensions != null) {
for (FhirR4Extension extension : extensions) {
List<FhirR4Extension> subExtensions = extension.getExtension();
if (subExtensions != null) {
evidence += extractEvidenceToken(subExtensions) + " ";
}
}
}
return evidence;
}
El método extractEvidenceToken() recorre en bucle las subExtensiones y extrae los desplazamientos y longitudes de cada token o palabra de la evidencia de apoyo. Tanto el desplazamiento como la longitud se codifican como extensiones independientes con un valor "url" correspondiente ("offset" o "length"). Por último, los desplazamientos y los valores de longitud se usan para extraer los tokens o palabras del texto del documento (como se almacena en la constante DOC_CONTENT):
private static String extractEvidenceToken(List<FhirR4Extension> subExtensions) {
String evidence = "";
int offset = -1;
int length = -1;
for (FhirR4Extension iExtension : subExtensions) {
if (iExtension.getUrl().equals("offset")) {
offset = iExtension.getValueInteger();
}
if (iExtension.getUrl().equals("length")) {
length = iExtension.getValueInteger();
}
}
if (offset > 0 && length > 0) {
evidence = DOC_CONTENT.substring(offset, Math.min(offset + length, DOC_CONTENT.length()));
}
return evidence;
}
Recuperar los procedimientos de creación de imágenes contenidos en la recomendación de seguimiento
Los procedimientos de creación de imágenes se encapsulan en una imagingProcedureRecommendation (que es una subclase de ProcedureRecommendation) y se pueden recuperar de la siguiente manera:
ProcedureRecommendation recommendedProcedure = followupRecommendationInference.getRecommendedProcedure();
if (recommendedProcedure instanceof ImagingProcedureRecommendation) {
System.out.println(" Imaging procedure recommendation: ");
ImagingProcedureRecommendation imagingProcedureRecommendation = (ImagingProcedureRecommendation) recommendedProcedure;
System.out.println(" Imaging procedure: ");
List<ImagingProcedure> imagingProcedures = imagingProcedureRecommendation.getImagingProcedures();
...
}
Mostrar la evidencia de la Modalidad y la Anatomía contenida en el procedimiento de obtención de imágenes
Un procedimiento de obtención de imágenes puede contener una modalidad y una anatomía. La evidencia de apoyo para ambas se puede recuperar exactamente de la misma forma que la evidencia de inferencia, mediante las mismas llamadas de método:
for (ImagingProcedure imagingProcedure : imagingProcedures) {
System.out.println(" Modality");
FhirR4CodeableConcept modality = imagingProcedure.getModality();
displayCodes(modality, 4);
System.out.println(" Evidence: " + extractEvidence(modality.getExtension()));
System.out.println(" Anatomy");
FhirR4CodeableConcept anatomy = imagingProcedure.getAnatomy();
displayCodes(anatomy, 4);
System.out.println(" Evidence: " + extractEvidence(anatomy.getExtension()));
}
Los códigos (en este ejemplo SNOMED) se pueden mostrar mediante el método displayCodes(). Los códigos se encapsulan en objetos FHir4Coding y se pueden mostrar de forma sencilla como en el código siguiente. El parámetro de sangría solo se agrega con fines de formato:
private static void displayCodes(FhirR4CodeableConcept codeableConcept, int indentation) {
String initialBlank = "";
for (int i = 0; i < indentation; i++) {
initialBlank += " ";
}
if (codeableConcept != null) {
List<FhirR4Coding> codingList = codeableConcept.getCoding();
if (codingList != null) {
for (FhirR4Coding fhirR4Coding : codingList) {
System.out.println(initialBlank + "Coding: " + fhirR4Coding.getCode() + ", " + fhirR4Coding.getDisplay() + " (" + fhirR4Coding.getSystem() + ")");
}
}
}
}