textRuleScore applyConcept

Optimización del Rendimiento en el Análisis de Informes Clínicos Voluminosos

Scénario de test & Cas d'usage

Contexto empresarial

Una farmacéutica debe procesar un gran volumen de informes clínicos para farmacovigilancia. El rendimiento es crítico. Se busca optimizar el proceso guardando los resultados del pre-análisis (parsing) para reutilizarlos en análisis posteriores, evitando así repetir el costoso paso de procesamiento de lenguaje natural.
Sobre el conjunto : textRuleScore

Puntuación de documentos de texto basada en reglas.

Descubrir todas las acciones de textRuleScore
Preparación de datos

Crea una tabla con informes clínicos simulados. Los textos son más largos para simular un caso de uso con mayor volumen de datos.

¡Copiado!
1DATA mycas.clinical_reports;
2 INFILE DATALINES delimiter='|';
3 LENGTH report_id $10 report_text $1000;
4 INPUT report_id $ report_text $;
5 DATALINES;
6CR-101|Paciente masculino, 45 años, experimentó náuseas y mareos leves tras la administración de 'MedicamentoX'. Los síntomas remitieron en 24 horas. No se observaron otros efectos adversos.
7CR-102|Sujeto de prueba femenino, 62 años, reportó dolor de cabeza persistente. Se recomienda monitorización. El fármaco 'MedicamentoY' fue bien tolerado en general.
8CR-103|El estudio concluye que 'MedicamentoX' es eficaz, aunque se han documentado casos aislados de erupciones cutáneas. Se necesita más investigación.
9CR-104|Sin efectos secundarios notables para el paciente en el grupo de placebo. El estado general es bueno.
10;
11RUN;

Étapes de réalisation

1
Compilar un modelo LITI para fármacos y efectos adversos.
¡Copiado!
1PROC CAS;
2 textRuleDevelop.compileConcept
3 config='
4 CONCEPT: FARMACO (RULE:(OR, "MedicamentoX", "MedicamentoY"))
5 CONCEPT: EFECTO_ADVERSO (RULE:(OR, "náuseas", "mareos", "dolor de cabeza", "erupciones cutáneas"))
6 '
7 casOut={caslib="casuser", name="pharma_liti_model", replace=true};
8RUN;
2
Primera ejecución: Analizar los informes y guardar los documentos pre-procesados en 'parsed_reports' para uso futuro.
¡Copiado!
1PROC CAS;
2 textRuleScore.applyConcept
3 docId="report_id"
4 text="report_text"
5 TABLE={caslib="casuser", name="clinical_reports"}
6 model={caslib="casuser", name="pharma_liti_model"}
7 casOut={caslib="casuser", name="pharma_concepts_run1", replace=true}
8 parseTableOut={caslib="casuser", name="parsed_reports", replace=true};
9RUN;
3
Segunda ejecución: Re-analizar utilizando la tabla pre-procesada 'parsed_reports' para mejorar el rendimiento. Se espera que esta ejecución sea significativamente más rápida.
¡Copiado!
1PROC CAS;
2 textRuleScore.applyConcept
3 docId="report_id"
4 text="report_text"
5 parseTableIn={caslib="casuser", name="parsed_reports"}
6 model={caslib="casuser", name="pharma_liti_model"}
7 casOut={caslib="casuser", name="pharma_concepts_run2", replace=true};
8RUN;

Resultado esperado


Se generan dos tablas de resultados, 'pharma_concepts_run1' y 'pharma_concepts_run2', que deben ser idénticas en contenido. La tabla 'parsed_reports' se crea en el paso 2 y se utiliza como entrada en el paso 3. El principal KPI de este escenario sería medir una reducción en el tiempo de ejecución del paso 3 en comparación con el paso 2, validando la eficacia de la caché de pre-análisis.