textRuleScore applyCategory

Grenzfall-Test: Verarbeitung von gemischten und unvollständigen medizinischen Notizen

Scénario de test & Cas d'usage

Geschäftskontext

Ein Gesundheitsdienstleister verarbeitet unstrukturierte klinische Notizen, um Krankheitsbilder wie 'Diabetes' und 'Hypertonie' zu identifizieren. Die Datenqualität ist inkonsistent und enthält fehlende Texte, leere Einträge sowie eine Mischung aus reinem Text und XML-formatierten Notizen. Dieser Test soll die Stabilität und Flexibilität der Aktion unter schwierigen Bedingungen validieren.
Über das Set : textRuleScore

Regelbasiertes Scoring von Textdokumenten.

Entdecken Sie alle Aktionen von textRuleScore
Datenaufbereitung

Erstellt eine Tabelle `patienten_notizen` mit gemischter Datenqualität, einschließlich leerer und NULL-Werte (dargestellt durch einen Punkt) sowie eines XML-Dokuments.

Kopiert!
1DATA mycas.patienten_notizen;
2 LENGTH notiz_id $10 notiz_text $2000;
3 INFILE DATALINES truncover dsd dlm='|';
4 INPUT notiz_id $ notiz_text $;
5 DATALINES;
6PN_01|Patient klagt über starken Durst und häufiges Wasserlassen. Verdacht auf Diabetes. Blutzucker erhöht.
7PN_02|
8PN_03|Blutdruck bei 160/100 mmHg. Diagnose: Essentielle Hypertonie.
9PN_04|.
10PN_05|"p5">Blutdruck ist hoch, deutet auf Hypertonie hin.
11PN_06|Patient hat sowohl Anzeichen von Diabetes als auch von Hypertonie.
12;
13RUN;

Étapes de réalisation

1
Erstellung eines einfachen Kategoriemodells für 'Diabetes' und 'Hypertonie'.
Kopiert!
1DATA mycas.medizin_regeln;
2 LENGTH category $32 type $32 rule $1024;
3 INFILE DATALINES dsd dlm='|';
4 INPUT category $ type $ rule $;
5 DATALINES;
6Diabetes|CONCEPT|OR("Diabetes", "Blutzucker", "Durst")
7Hypertonie|CONCEPT|OR("Hypertonie", "Blutdruck")
8;
9RUN;
10PROC CAS; textRuleDevelop.compileCategory / rules={name='medizin_regeln'} casOut={name='medizin_modell', replace=true}; RUN; QUIT;
2
Erster Durchlauf: Anwendung des Modells auf die gesamte Tabelle. Es wird erwartet, dass die Aktion die ungültigen/leeren Texte ignoriert und den XML-Text als reinen Text behandelt.
Kopiert!
1PROC CAS;
2 textRuleScore.applyCategory /
3 TABLE={name='patienten_notizen', caslib='mycas'}
4 model={name='medizin_modell', caslib='mycas'}
5 docId='notiz_id'
6 text='notiz_text'
7 casOut={name='notizen_kategorisiert_alle', caslib='mycas', replace=true};
8RUN;
9QUIT;
3
Zweiter Durchlauf: Gezielte Verarbeitung des XML-Dokuments durch Filtern der Tabelle und Setzen von `docType='XML'`. Dies testet die Fähigkeit der Aktion, Text aus XML-Strukturen zu extrahieren.
Kopiert!
1PROC CAS;
2 textRuleScore.applyCategory /
3 TABLE={name='patienten_notizen', caslib='mycas', where='notiz_id="PN_05"'}
4 model={name='medizin_modell', caslib='mycas'}
5 docId='notiz_id'
6 text='notiz_text'
7 docType='XML'
8 casOut={name='notizen_kategorisiert_xml', caslib='mycas', replace=true};
9RUN;
10QUIT;

Erwartetes Ergebnis


Die Aktion wird ohne Fehler ausgeführt. In der Tabelle `notizen_kategorisiert_alle` werden die Notizen PN_02 und PN_04 (leer/null) keine Kategorien erhalten. Die XML-Notiz PN_05 wird möglicherweise nicht korrekt kategorisiert, da sie als reiner Text behandelt wird. In der Tabelle `notizen_kategorisiert_xml` wird die Notiz PN_05 jedoch korrekt als 'Hypertonie' kategorisiert, da der `docType='XML'` Parameter den Textinhalt aus den Tags extrahiert. Dies bestätigt die korrekte Handhabung von Grenzfällen und verschiedenen Dokumenttypen.