Tipps & Tricks: Umkodieren von ICD-9-Daten zu · Tipps & Tricks: Umkodieren von ICD-9-Daten zu...

Post on 12-Oct-2019

5 views 0 download

Transcript of Tipps & Tricks: Umkodieren von ICD-9-Daten zu · Tipps & Tricks: Umkodieren von ICD-9-Daten zu...

Tipps & Tricks: Umkodieren von ICD-9-Daten zu

ICD-10 in SAS mittels PROC SQL

Tipps & Tricks:Tipps & Tricks: Umkodieren von ICDUmkodieren von ICD--99--Daten zu Daten zu

ICDICD--10 in SAS mittels PROC SQL10 in SAS mittels PROC SQL

Andreas Deckert

Institute of Public Health, Universität Heidelberg

Andreas Deckert

Institute of Public Health, Universität Heidelberg

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Problemstellung

Mortalitäts-Follow-Up einer Kohorte von 1990 bis 2010

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Problemstellung

Mortalitäts-Follow-Up einer Kohorte von 1990 bis 2010

Kategorisierung der Todesursachen entsprechend ICD-10 (International Statistical Classification of Diseases and Related Health Problems)

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Problemstellung

Mortalitäts-Follow-Up einer Kohorte von 1990 bis 2010

Kategorisierung der Todesursachen entsprechend ICD-10 (International Statistical Classification of Diseases and Related Health Problems)

1998 Wechsel von ICD-9 zu ICD-10; dabei z.B. Einführung einer alpha-numerischen Notation mit stärkerer Differenzierung

keine direkte Übertragung möglich

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Problemstellung

Mortalitäts-Follow-Up einer Kohorte von 1990 bis 2010

Kategorisierung der Todesursachen entsprechend ICD-10 (International Statistical Classification of Diseases and Related Health Problems)

1998 Wechsel von ICD-9 zu ICD-10; dabei z.B. Einführung einer alpha-numerischen Notation mit stärkerer Differenzierung

keine direkte Übertragung möglich

“Umsteigertabelle” von ICD-9 zu ICD-10 vorhanden

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

ICD-Daten ICD-9 Tabelle (Textfile vom DIMDI):

ICD-10 Tabelle:

Umsteiger-Tabelle:

410-414; Ischämische Herzkrankheiten410; Akuter Myokardinfarkt...414; Sonstige Formen von chronischen ischämischen Herzkrankheiten414.0; Koronararteriosklerose414.1; Herzwandaneurysma

I21; Akuter MyokardinfarktI21.0; Akuter transmuraler Myokardinfarkt der Vorderwand...I22; Rezidivierender MyokardinfarktI22.0; Rezidivierender Myokardinfarkt der Vorderwand

ICD-10 ICD-9 ICD-9(dreistellig) 1:1I21.0; 410; 410; AI23.3; 429.8; 429; AI24.0; 410; 410;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Aufbau einer relationalen DatenbankPROC

SQL;

CREATE TABLE

ICD10 (Code10 CHAR(7), Titel10 CHAR(255), CONSTRAINT

Code10X PRIMARY

KEY(Code10));

INSERT INTO

ICD10SELECT

* FROM

import_ICD10 WHERE

Code10 > "";

CREATE TABLE

ICD9 (Code9 CHAR(7), Titel9 CHAR(255), CONSTRAINT

Code9X PRIMARY

KEY(Code9));

INSERT INTO

ICD9SELECT

* FROM

import_ICD9 WHERE

Code9 > "";

CREATE TABLE

Umsteiger (Code10 CHAR(7), Code9 CHAR(7), Automatik CHAR1),CONSTRAINT

UICD10 FOREIGN

KEY(Code10) REFERENCES

ICD10,

CONSTRAINT

UICD9 FOREIGN

KEY(Code9) REFERENCES

ICD9);INSERT INTO

Umsteiger

SELECT

* FROM

import_Umsteiger

WHERE

Code10 > "";quit;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Verknüpfungsschema

Code9 Code10 AutomatikA01.4 002.9 AA02.0 003.0 AA02.0 008.1A04.1 008.0 AA04.2 008.0 AA04.8 008.2

Code9 Titel9002.9 Text1003.0 Text2008.1 Text3008.0 Text4008.2 text5

Code10 Titel10A01.4 Text11A02.0 Text12A04.1 Text13A04.2 Text14A04.8 text15

1 0..n 0..n 1

ICD9 Umsteiger ICD10

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Wichtige Verknüpfungen

A B INNER-Join

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Wichtige Verknüpfungen

A B INNER-Join

A B LEFT-Join

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Wichtige Verknüpfungen

A B INNER-Join

A B LEFT-Join

A B FULL-Join

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Kombination mit Daten

/*Umkodieren von Daten in ICD9 in ICD10 mithilfe der DB*/PROC

SQL;

CREATE

UNIQUE

INDEX

_id

ON

mortality_ICD9 (_id);CREATE

TABLE

results

AS

SELECT

B.*, U.code10, I10.titel10FROM

mortality_ICD9 AS

B LEFT JOIN

(Umsteiger AS

U INNER

JOIN

ICD10 AS

I ON

U.code10=I.code10) ON B.cause=U.code9

quit;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Kombination mit Daten/*Umkodieren von Daten in ICD9 in ICD10 mithilfe der DB*/PROC

SQL;

CREATE

UNIQUE

INDEX

_id

ON

mortality_ICD9 (_id);CREATE

TABLE

results

AS

SELECT

B.*, U.code10, I.titel10FROM

mortality_ICD9 AS

B LEFT JOIN

(Umsteiger AS

U INNER

JOIN

ICD10 AS

I ON

U.code10=I.code10) ON B.cause=U.code9

quit;

Pat_ID Code9 Code10 Titel10 …1 573.3 K75.2 Unspez. reaktive Hepatitis …1 573.3 K75.3 Granulomatöse Hepatitis …4 571.5 K76.1 Chronische Stauungsleber …8 5999 …

15 573.8 K76.1 Chronische Stauungsleber …

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Bereinigen der ErgebnisseZu manchen ICD9-Codes gibt es mehrere ICD10-Einträge, da der ICD10 differenzierter ist!

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Bereinigen der Ergebnisse

/*Filtern der multiplen ICD10-Einträge*/PROC

SQL;

CREATE

TABLE

multiple_results

ASSELECT

* FROM

results

WHERE

_id

IN

(SELECT

_id

FROM

results

GROUP

BY

_idHAVING

count(_id

> 1))

quit;

Über den vorher generierten Index können nun die mehrdeutigen Zuordnungen selektiert werden

Zu manchen ICD9-Codes gibt es mehrere ICD10-Einträge, da der ICD10 differenzierter ist!

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Bereinigen der Ergebnisse

Je nach Tiefe der ICD10-Auswertung nur die ICD10-Obergruppe bzw. aus multiplen ICD10 den passenden Code auswählen.

/*Filtern der multiplen ICD10-Einträge*/PROC

SQL;

CREATE

TABLE

multiple_results

ASSELECT

* FROM

results

WHERE

_id

IN

(SELECT

_id

FROM

results

GROUP

BY

_idHAVING

count(_id

> 1))

quit;

Über den vorher generierten Index können nun in gleichen Daten- sätzen relativ einfach dieselben ICD-Codes selektiert werden.

Zu manchen ICD9-Codes gibt es mehrere ICD10-Einträge, da der ICD10 differenzierter ist!

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Löschen der Datenbank/*Anzeigen der Integritätsbedingungen in einer Tabelle:*/PROC SQL;

DESCRIBE TABLE

CONSTRAINTS

Umsteiger;quit;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Löschen der Datenbank

/*Löschen von mit Integritätsbedingungen verknüpften Tabellen; Fremdschlüssel müssen zuerst gelöscht werden!*/PROC SQL;

ALTER TABLE

UmsteigerDROP

CONSTRAINT

UICD10, UICD9;

ALTER

TABLE

ICD9DROP

CONSTRAINT

Code9X;

ALTER

TABLE

ICD10DROP

CONSTRAINT

Code10X;

DROP

TABLE

ICD9, ICD10, Umsteiger;quit;

/*Anzeigen der Integritätsbedingungen in einer Tabelle:*/PROC SQL;

DESCRIBE TABLE

CONSTRAINTS

Umsteiger;quit;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

3. Find x.

Links zu ICD9-ICD10

Homepage des Deutschen Instituts für Medizinsiche Dokumentation und Information (DIMDI): www.dimdi.de

ICD9-ICD10-Überleitungstabelle von 2001: www.dimdi.de/dynamic/de/ klassi/downloadcenter/icd-10-who/vorgaenger/version10/ueberleitung/(neuere Versionen sind kostenpflichtig!)

Tipps & Tricks: Anwendung von (Perl) Regular

Expressions für die Mustersuche in Strings

Tipps & Tricks:Tipps & Tricks: Anwendung von (Perl) Anwendung von (Perl) RegularRegular

ExpressionsExpressions ffüür die Mustersuche in Stringsr die Mustersuche in Strings

Andreas Deckert

Institute of Public Health, Universität Heidelberg

Andreas Deckert

Institute of Public Health, Universität Heidelberg

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Einfache Problemstellung Beispiel: $ soll aus “Dies ist ein Bei$spiel” entfernt werden

Lösungsmöglichkeit in SAS:DATA

Beispiel;

text = "Dies ist ein Bei$spiel";pos

= index(text,"$");l_total

= length(text);l_part

= l_total

-

pos;_text = substr(text,1,pos-1)||substr(text,pos+1,l_part);

RUN;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Einfache Problemstellung Beispiel: $ soll aus “Dies ist ein Bei$spiel” entfernt werden

Lösungsmöglichkeit in SAS:DATA

Beispiel;

text = "Dies ist ein Bei$spiel";pos

= index(text,"$");l_total

= length(text);l_part

= l_total

-

pos;_text = substr(text,1,pos-1)||substr(text,pos+1,l_part);

RUN;

DATA

Beispiel;LENGTH

_text $ 25;text = "Dies ist ein Bei$spiel";rx

= rxparse("'$' to ''");CALL

rxchange(rx,1,text,_text);RUN;

Lösung mit “Regular Expressions”:

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

(Perl) Regular Expressions?

Begriff aus der (theoretischen) Informatik

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

(Perl) Regular Expressions?

Begriff aus der (theoretischen) Informatik

“[…] Zeichenkette die der Beschreibung einer Menge bzw. Unter- mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.” (wikipedia)

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

(Perl) Regular Expressions?

Begriff aus der (theoretischen) Informatik

“[…] Zeichenkette die der Beschreibung einer Menge bzw. Unter- mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.” (wikipedia)

Filter für den Abgleich von Texten mit bestimmten Mustern

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

(Perl) Regular Expressions?

Begriff aus der (theoretischen) Informatik

“[…] Zeichenkette die der Beschreibung einer Menge bzw. Unter- mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.” (wikipedia)

Filter für den Abgleich von Texten mit bestimmten Mustern

Vorgegebenes Alphabet; Operationen

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

(Perl) Regular Expressions?

Begriff aus der (theoretischen) Informatik

“[…] Zeichenkette die der Beschreibung einer Menge bzw. Unter- mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.” (wikipedia)

Filter für den Abgleich von Texten mit bestimmten Mustern

Vorgegebenes Alphabet; Operationen

Perl Regular Expressions: Syntax der Programmiersprache Perl

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Perl Regular Expressions … Lösung mit Perl regular expressions:

DATA

Beispiel;LENGTH

_text $ 25;text = "Dies ist ein Bei$spiel";pattern

= prxparse('s/\$//');CALL

prxchange(pattern,-1,text,_text);RUN;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Perl Regular Expressions … Lösung mit Perl regular expressions:

DATA

Beispiel;LENGTH

_text $ 25;text = "Dies ist ein Bei$spiel";pattern

= prxparse('s/\$//');CALL

prxchange(pattern,-1,text,_text);RUN;

DATA

Beispiel;text = "Dies ist ein Bei$spiel";text = prxchange('s/\$//',-1,text);

RUN;

Kurzversion:

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Perl Regular Expressions … Lösung mit Perl regular expressions:

DATA

Beispiel;LENGTH

_text $ 25;text = "Dies ist ein Bei$spiel";pattern

= prxparse('s/\$//');CALL

prxchange(pattern,-1,text,_text);RUN;

DATA

Beispiel;text = "Dies ist ein Bei$spiel";text = prxchange('s/\$//',-1,text);

RUN;

Kurzversion:

Damit “Di$es is$$t ein Bei$spiel” ebenfalls problemlos handhabbar!

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Steuerzeichen (Auszug)

Muster Bedeutung/ Beginn und Ende der Regular Expression\w Abgleichen von Buchstaben\d Abgleichen von Ziffern? Falls nicht oder 1x vorhanden+ Falls 1x oder beliebig oft vorhanden* Falls nicht oder beliebig oft vorhanden(Muster) Gruppierung und Speicherung$1 Abruf des ersten Speichereintragess/Muster/Ausgabe/ Einsetzen bzw. Ersetzen von Textteilen

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

NameBauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt $2: Hans-Peter

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Komplexe Problemstellung

?Name

Bauer, Peter

Sailer, Karl-Heinz

Müller, Eva Maria

Schmidt, Hans-Peter Matthias

_NamePeter Bauer

Karl-Heinz Sailer

Eva Müller

Hans-Peter Schmidt

Geforderte Transformation: ErsterVorname Nachname

Frau Dr. Weber, Karin

Prof. Dr. Stern, Anton Richard

Karin Weber

Anton Stern

DATA

Namen; SET

Namen;pattern

= prxparse("s/(\w+), +(\w+-?\w+)/$2 $1/");call

prxsubstr(pattern, Name, Position, Laenge);match

= substr(Name,Position,Laenge);_Name = prxchange(pattern,-1,match);

RUN;

$1: Schmidt $2: Hans-Peter

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Anwendungen

Datenvalidierung

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Anwendungen

Datenvalidierung

Textmuster suchen

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Anwendungen

Datenvalidierung

Textteile ersetzen

Textmuster suchen

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Anwendungen

Datenvalidierung

Textteile ersetzen

Textmuster suchen

Datenextraktion in Freitexten

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Anwendungen

Datenvalidierung

Textteile ersetzen

Textmuster suchen

Datenextraktion in Freitexten

Bearbeitung von Textvariablen mit langem ungeordneten Inhalten

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Vielen Dank für Ihre Aufmerksamkeit!

Vielen Dank für Ihre Aufmerksamkeit!

http://www2.sas.com/proceedings/sugi29/265-29.pdf

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Weiteres komplexes Beispieltext

Landratsamt Altötting

Telefon 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Telefon: 0841-3051-460

85049 Ingolstadt

Adress-Datensatz

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Weiteres komplexes Beispieltext

Landratsamt Altötting

Telefon 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Telefon: 0841-3051-460

85049 Ingolstadt

Keine Ordnung erkennbar

Adress-Datensatz

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Weiteres komplexes Beispieltext

Landratsamt Altötting

Telefon 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Telefon: 0841-3051-460

85049 Ingolstadt

Keine Ordnung erkennbar

Adress-Datensatz

Gesucht: Telefonnummern

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Weiteres komplexes Beispieltext

Landratsamt Altötting

Telefon 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Telefon: 0841-3051-460

85049 Ingolstadt

Keine Ordnung erkennbar

Adress-Datensatz

Gesucht: Telefonnummern

Beschränkung: Vorwahl 08-09

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Weiteres komplexes Beispieltext

Landratsamt Altötting

Telefon 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Telefon: 0841-3051-460

85049 Ingolstadt

Keine Ordnung erkennbar

Adress-Datensatz

Gesucht: Telefonnummern

Beschränkung: Vorwahl 08-09

Machbar mit Standard-Code?

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Weiteres komplexes Beispieltext

Landratsamt Altötting

Telefon 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Telefon: 0841-3051-460

85049 Ingolstadt

Keine Ordnung erkennbar

Adress-Datensatz

Gesucht: Telefonnummern

Beschränkung: Vorwahl 08-09

Machbar mit Standard-Code?

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Weiteres komplexes Beispieltext

Landratsamt Altötting

Telefon 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Telefon: 0841-3051-460

85049 Ingolstadt

Keine Ordnung erkennbar

Adress-Datensatz

Gesucht: Telefonnummern

Beschränkung: Vorwahl 08-09

Machbar mit Standard-Code?

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Lösung mit Perl reg. expressions

DATA

Ergebnis; SET

Liste;_Telefon = "s/[Tel]\w+\.*:* +([0][6-9]\d\d\d-\d+)/Tel.: $1/";pattern

= prxparse(_Telefon);IF

prxmatch(pattern,text) THEN

DO;Ergebnis = prxchange(pattern,-1,text);

END;RUN;

01.03.2011 Andreas Deckert, Institute of Public Health Heidelberg

Ergebnistext Ergebnis

Landratsamt Altötting

Telefon 08671-502-665 Tel.: 08671-502-665

Gesundheitsamt Amberg

Hockermühlstr. 53

Tel 08621-39-399 Tel.: 08621-39-399

Landratsamt Hof

Fax.: 09281-16873

Tel.: 09281-16-0 Tel.: 09281-16-0

Gesundheitsamt Hamburg

21029 Hamburg

Tel.: 042891-2216

Fax.: 042891-2200

Stadt Ingolstadt

Tel.: 0841-3051-460 Tel.: 0841-3051-460

85049 Ingolstadt