Skapa befolkningstabell SV.DODSORSAK

Regler

Regler för att skapa befolkningstabell SV.DODSORSAK

Regel 1:

Endast noteringar med information om dödsorsak tas med - DB.DODORSTXT skiljt från NULL eller tom sträng.

Regel 2:

Noteringen får inte vara överbliven - OVERBLIVENIND = 0.

Regel 3:

Om en individ har flera DB-noteringar används den notering som har den längsta DODORSTXT som inte är kodad med ICD10H='R99.xxx'. Om alla är kodade med 'R99.xxx' väljs den längsta.

Regel 4:

Om samma individ har mer än en DB-notering med lika längd på DODORSTXT hämtas information endast från noteringen med lägst POSTNR.

Regel 5:

Alla dödsorsaker från en notering tas med i ursprunglig ordning.

Regel 6:

Kolumnerna DODORSSTD och QUALIFIER konkateneras, dvs läggs ihop till en kolumn, DODORSSTANDARD. QUALIFIER läggs inom parentes samt ev. pipetecken ersätts med kommatecken.

Regel 7:

Om en beskrivning saknas för en ICD10H kod så får den beskrivningen för motsvarande moderna kod (ICD10).

Regel 8:

Alla dödsorsaker med ICD10H='R99.099' exkluderas.

Regel 9:

En individs dödsorsaker med samma ICD10H kod konkateneras och avgränsas med kommatecken.

SQL

SQL för att skapa befolkningstabell SV.DODSORSAK

declare global temporary table AllaDBnoteringarForLankadeForsamlingarSorteradPaLangdOchPostnr as ( select distinct a.ddbid, coalesce(b.dodorstxt, '') as dodorstxt, c.overblivenind, a.postnr, char_length(trim(coalesce(b.dodorstxt, ''))) as lgd, dense_rank() over(partition by ddbid order by char_length(trim(coalesce(b.dodorstxt, ''))) desc, b.postnr asc) as nr from SV.individ a join SV.db b on a.postnr = b.postnr join SV.notering c on a.postnr = c.postnr and c.overblivenind = 0 join REG.kbsid ks on c.kbsidid = ks.kbsidid join REG.kbkalla kk on ks.kbkallaid = kk.kbkallaid join REG.kyrkbok ky on kk.kyrkbokid = ky.kyrkbokid join REG.projektfas pf on ky.projektid = pf.projektid where a.individtyp = 0 and pf.fas >= 7 ) with data not logged on commit preserve rows declare global temporary table DBnoteringarMedStandardiseringOchKodning as ( select a.ddbid, b.dodorsnr, b.dodors, c.dodorsstd, c.qualifier, d.icd10h, coalesce(f.description, '') as icd10hbeskrivning, h.icd10desc_en as icd10beskrivning, d.cancertype as cancertyp, a.nr, a.postnr from SESSION.AllaDBnoteringarForLankadeForsamlingarSorteradPaLangdOchPostnr a join CEDAR.dodorsupp b on a.dodorstxt = b.dodorstxt join REG.dodors c on b.dodors = c.dodors join REG.dodorsstd d on c.dodorsstd = d.dodorsstd and c.qualifier = d.qualifier join KOD.kodicd10h e on d.icd10h = e.icd10h left join KOD.kodicd10hdescriptions f on e.icd10h = f.icd10h join KOD.kodicd10 h on h.icd10 = e.icd10 ) with data not logged on commit preserve rows declare global temporary table PersonerMedDBnoteringarMedEndastR99 as ( select a.ddbid, a.postnr, a.nr from SESSION.DBnoteringarMedStandardiseringOchKodning a where icd10h like 'R99%' and icd10h!='R99.099' and a.postnr not in (select b.postnr from SESSION.DBnoteringarMedStandardiseringOchKodning b where icd10h not like 'R99%') ) with data not logged on commit preserve rows declare global temporary table PersonerMedDBnoteringarMedEndastR99LagstaNr as ( select ddbid, min(nr) as lagsta_nr from SESSION.PersonerMedDBnoteringarMedEndastR99 group by ddbid ) with data not logged on commit preserve rows declare global temporary table PersonerMedDBnoteringarMedEndastR99Postnr as ( select a.ddbid, a.postnr from SESSION.PersonerMedDBnoteringarMedEndastR99 a join SESSION.PersonerMedDBnoteringarMedEndastR99LagstaNr b on a.ddbid = b.ddbid and a.nr = b.lagsta_nr ) with data not logged on commit preserve rows declare global temporary table PrioriteradeDBnoteringarMedStandardiseringOchKodning as ( select * from SESSION.DBnoteringarMedStandardiseringOchKodning a where (a.postnr not in (select b.postnr from SESSION.PersonerMedDBnoteringarMedEndastR99 b) or a.postnr in (select c.postnr from SESSION.PersonerMedDBnoteringarMedEndastR99Postnr c where a.ddbid = c.ddbid)) and a.icd10h != 'R99.099' ) with data not logged on commit preserve rows declare global temporary table PrioriteradeDBnoteringarMedStandardiseringOchKodningLagstaNr as ( select ddbid, min(nr) as lagsta_nr from SESSION.PrioriteradeDBnoteringarMedStandardiseringOchKodning group by ddbid ) with data not logged on commit preserve rows declare global temporary table StandardiseradeDodsorsakerOchKodning as ( select a.ddbid, dense_rank() over(partition by a.ddbid order by a.dodorsnr) as dodorsnr, replace(replace(replace(replace(trim( case when char_length(qualifier) > 0 then dodorsstd||' (' || qualifier || ')' else dodorsstd end ),' | ', '|'),'| ', '|'),' |', '|'),'|', ', ') as dodorsstandard, icd10h, case when char_length(icd10hbeskrivning) > 0 then icd10hbeskrivning else icd10beskrivning end as icd10hbeskrivning, cancertyp from SESSION.PrioriteradeDBnoteringarMedStandardiseringOchKodning a join SESSION.PrioriteradeDBnoteringarMedStandardiseringOchKodningLagstaNr b on a.ddbid = b.ddbid and a.nr = b.lagsta_nr ) with data not logged on commit preserve rows declare global temporary table StandardiseradeDodsorsakerOchKodningKonkatineradeICD10H as ( select ddbid,rank()over(partition by ddbid order by ddbid,dodorsnrny) as dodorsnr, dodorsstandard, icd10h, icd10hbeskrivning, cancertyp from (select ddbid, min(dodorsnr) as dodorsnrny, listagg(dodorsstandard,', ') within group (order by ddbid,dodorsnr) as dodorsstandard, icd10h, icd10hbeskrivning, cancertyp from SESSION.StandardiseradeDodsorsakerOchKodning group by ddbid, icd10h, icd10hbeskrivning, cancertyp) ) with data not logged on commit preserve rows insert into SV.DODSORSAK select * from SESSION.StandardiseradeDodsorsakerOchKodningKonkatineradeICD10H order by ddbid,dodorsnr

Verifiera DODSORSAK

Verifiera fullständig DODSORSAK