conditionalRandomFields crfScore

Extracción de Entidades Clínicas en Historiales Médicos

Scénario de test & Cas d'usage

Contexto empresarial

Un hospital desea automatizar la extracción de entidades clave como 'Síntoma', 'Medicamento' y 'Dosis' de las notas clínicas no estructuradas de los médicos para mejorar el análisis de tratamientos.
Preparación de datos

Creación de notas clínicas simuladas con menciones de síntomas y medicamentos.

¡Copiado!
1DATA casuser.medical_notes; LENGTH _doc_id_ $20 _text_ $300; INFILE DATALINES delimiter='|'; INPUT _doc_id_ $ _text_ $; DATALINES;
2PAT_001|El paciente presenta fiebre alta y tos severa. Se receta Ibuprofeno 400mg.
3PAT_002|Sin síntomas de alergia. Continuar con Amoxicilina.
4; RUN;

Étapes de réalisation

1
Carga de las tablas del modelo CRF preentrenado (simulación de carga desde CSV).
¡Copiado!
1 
2PROC CAS;
3TABLE.loadTable / path='med_label.csv' casOut={name='med_label', replace=true};
4TABLE.loadTable / path='med_attr.csv' casOut={name='med_attr', replace=true};
5TABLE.loadTable / path='med_feature.csv' casOut={name='med_feature', replace=true};
6TABLE.loadTable / path='med_attrfeature.csv' casOut={name='med_attrfeature', replace=true};
7TABLE.loadTable / path='med_template.csv' casOut={name='med_template', replace=true};
8 
9RUN;
10 
2
Ejecución de crfScore para etiquetar las notas médicas.
¡Copiado!
1 
2PROC CAS;
3conditionalRandomFields.crfScore TABLE={name='medical_notes'} model={label={name='med_label'}, attr={name='med_attr'}, feature={name='med_feature'}, attrfeature={name='med_attrfeature'}, template={name='med_template'}} casOut={name='medical_tagged', replace=true} target='entity_tag';
4 
5RUN;
6 

Resultado esperado


La tabla 'medical_tagged' contiene las notas originales desglosadas por tokens, con una columna 'entity_tag' que identifica 'fiebre' como 'SINTOMA' e 'Ibuprofeno' como 'MEDICAMENTO'.