Hallo liebe Mitglieder, im Rahmen einer Forschungsarbeit programmiere ich mit SAS 9.4 um an bestimmte Daten zu kommen, die ich dann im Anschluss weiter auswerten kann. Ich zähle dabei die Kombinationen von verschiedenen Diagnosen (ICD-Code, z.B. M84.11) und Prozeduren/Operationen (OPS-Code, z.B. 5782), sodass ich jeweils die Verknüpfung aus jeweils einem ICD- und einem OPS-Code angezeigt bekomme.Die Syntax läuft auch problemlos. Nun kann es jedoch auch sein, dass ein Patient mit einer bestimmten Diagnose (ICD-Code) mit mehreren verschiedenen Operationen (OPS-Code) behandelt werden kann. Mögliche Kombinationen wären in meinem Fall beispielseise: - die Diagnose M84.11 + die Operationen 5-782 + 5-784 - die Diagnose M84.12 + die Operationen 5-782 + 5-784 + 5-785. Ich habe unter anderem schon gelesen, dass so etwas mit der panel-ID möglich ist. Leider komme ich aber nicht weiter und bin mir sehr unsicher, wie ich diese Kombinationsabfrage programmieren kann. Meine bisherige Syntax sieht so aus und funktioniert problemlos: /*** Makros f?r Pfade ***/
%let datenpfad = C:\Users\Margaretha\Desktop\SBA\DRG\Data;
%let outputpfad = C:\Users\Margaretha\Desktop\SBA\DRG\Data;
/*** Makros f?r Datei- und Outputnamen ***/
%let outputname = output20200717;
/*** Libname vergeben ***/
libname daten "&datenpfad";
ods html file = "&outputpfad./&outputname..html";
%macro auswertung (ops, icd, icdsteller);
%do year = 2007 %to 2016;
*Zusammenfassung der OPS-Codes in einer Variable;
*find(x,y,z) schaut in Variable x nach dem String y an z-ter Position;
*d.h. es werden alle OPS mit '5782' ab der 1.Stelle gefunden, also bspw. auch 57820t;
*OPS_Gesamt nimmt den Wert 1 an, wenn in den Spalten ops_ko der gesuchte Code vorkommt;
data tab_&ops._&icd.;
set daten.drg&year._3846_sf (keep= icd_hd ops_ko:);
OPS_Gesamt = 0;
%do i = 1 %to 101;
If substr(ops_ko&i,1,4) ="&ops." then OPS_Gesamt = 1;
%end;
*Filterung der Daten nach der gew?nschten ich_hd;
*ICD_Gesamt nimmt den Wert 1 an, wenn in der Spalte icd_hd der gesuchte Code vorkommt;
ICD_Gesamt = 0;
if substr(icd_hd,1,&icdsteller.) = "&icd." then ICD_Gesamt = 1;
*Erstellen einer Tablle, die die Kombination aus gew?nschtem OPS-Code und ICD-Code enth?lt;
proc freq data=tab_&ops._&icd. ;
title "H?ufigkeit nach &icd. und &ops. f?r das Berichtsjahr &year.";
tables icd_hd;
where OPS_Gesamt = 1 AND ICD_Gesamt = 1;
run;
%end;
%mend auswertung;
%auswertung (5782, M8411, 5);
%auswertung (5782, M8412, 5);
%auswertung (5782, M8413, 5);
%auswertung (5782, M8414, 5);
%auswertung (5782, M8415, 5);
%auswertung (5782, M8416, 5);
%auswertung (5782, M8417, 5);
%auswertung (5784, M8411, 5);
%auswertung (5784, M8412, 5);
%auswertung (5784, M8413, 5);
%auswertung (5784, M8414, 5);
%auswertung (5784, M8415, 5);
%auswertung (5784, M8416, 5);
%auswertung (5784, M8417, 5);
%auswertung (5785, M8411, 5);
%auswertung (5785, M8412, 5);
%auswertung (5785, M8413, 5);
%auswertung (5785, M8414, 5);
%auswertung (5785, M8415, 5);
%auswertung (5785, M8416, 5);
%auswertung (5785, M8417, 5);
ods html close; Ich hoffe, ich konnte meine Fragestellung verständlich formulieren. Über Anregungen oder Hilfestellungen wäre ich sehr dankbar! Allen ein schönes Wochenende und liebe Grüße 🙂
... View more