Parsning och strukturering av biverkningsinformation i

Dokumenttyp: Memo
Författare: Paul Cohen <[email protected]>
Datum: 2010-03-15
Parsning och strukturering av
biverkningsinformation i
produktresuméer (SPC:er)
Introduktion
Detta memo beskriver ett lösningsförslag till parsning och strukturering av biverkningsinformation i produktresuméer (SPC:er). Förslaget tar speciellt hänseende till att den strukturerade informationen ska kunna användas för att tillhandahålla en webbtjänst för biverkningsinformation. Detta memo har tagits fram som svar på en förfrågan från Kristina von Sydow på FASS gällande hur datastrukturering skulle kunna se ut för sex angivna produktresuméer på svenska. Det presenterade lösningsförslaget baseras på den lösning för parsning och strukturering av biverkningsinformation som tidigare gjorts i Drugle­projektet1. De sex produktresuméerna är:
●
Januvia, Filmdragerad tablett 100 mg, MSD. Registrerad på EMA2.
●
Asmanex® Twisthaler®, Inhalationspulver 200 mikrog, Schering­Plough. Registrerad på Läkemedelsverket.
●
ALDARA, Kräm 5 %, Meda. Registrerad på EMA.
●
Acura®, Komprimerad sugtablett 10 mg, Nordic Drugs. Registrerad på Läkemedelsverket.
●
Abilify, Tablett 10 mg, Bristol­Myers Squibb. Registrerad på EMA.
●
Lamisil®, Tablett 250 mg, Novartis. Registrerad på Läkemedelsverket.
Vi har utgått från produktresuméerna i PDF­format som finns tillgängliga på respektive myndighets hemsida.
1 Se: http://demo.drugle.info
2 European Medicines Agency (EMA).
SEIBO SOFTWARE STUDIOS
www.seibostudios.se
Dokumenttyp: Memo
Författare: Paul Cohen <[email protected]>
Datum: 2010-03-15
Resultat
Här presenterar vi resultaten som vi har uppnått vad gäller att generera datastrukturer för de sex angivna produktresuméerna med hjälp av de algoritmer som används i Drugle. Vi har också genererat XHTML­presentationer av datastrukturerna genom att använda programvara från Drugle.
Vid generering av datastrukturer transformeras tabeller till en normalform för frekvensklassificerade biverkningstabeller som vi definierat. Normalformen beskrivs mer i avsnittet Teknik nedan.
Resultaten finns att hämta som datafiler i JSON­format3 på nedan angivna URL:ar. De genererade XHTML­filerna kan också enkelt hämtas på angivna URL:ar.
Produkt­
resumé
Genererad datastruktur
Genererad XHTML­presentation
Januvia
URL + /januvia.json
URL + /januvia.html
http://fass.seibostudios.se/biverkning
http://fass.seibostudios.se/biverkning
Asmanex URL + /asmanex.json
Twisthaler
URL + /asmanex.html
ALDARA URL + /aldara.json
URL + /aldara.html
Acura
URL + /acura.json
URL + /acura.html
Abilify
URL + /abilify.json
URL + /abilify.html
Lamisil
URL + /lamisil.json
URL + /lamisil.html
För att exempelvis se på datafilerna och XHTML­presentationerna så skriv in de angivna URL:arna ovan i en webbläsare. Man kan också komma åt samtliga länkar via:
http://fass.seibostudios.se
Några kommentarer om datastrukturerna:
1. För Januvia transformeras en biverkningstabell som är kolumnindelad per behandlingsregim med frekvenskategorier i datafälten till en biverkningstabell i normalform.
2. För Asmanex Twisthaler transformeras en biverkningstabell som är kolumnindelad per doseringsstrategi med frekvenskategorier i datafälten till en biverkningstabell i normalform.
3. För ALDARA transformeras en biverkningstabell som är kolumnindelad per terapeutisk indikation med frekvenskategorier i datafälten till en biverkningstabell i normalform.
4. För Acura transformeras en biverkningstabell som är radformaterad men strukturerad först per SOCC4 och sedan per frekvenskategori till en biverkningstabell i normalform. I underavsnittet om kliniska prövningar finns ytterligare två tabeller med biverkningsdata som inte innehåller information om frekvenskategori, utan innehåller faktiskt uppmätta 3 Se: http://www.json.org och http://en.wikipedia.org/wiki/Json
4 MEDDra System Organ Class. I detta dokument avses med SOC översatta eller ekvivalenta MEDdra System Organ Classes. Exempel ”Hjärtat”, ”Blodkärl”.
SEIBO SOFTWARE STUDIOS
www.seibostudios.se
Dokumenttyp: Memo
Författare: Paul Cohen <[email protected]>
Datum: 2010-03-15
frekvenser i procent. Vi har inga färdiga algoritmer för att transformera de tabellerna till normalform i dagsläget, men det kan givetvis också göras.
5. För Abilify transformeras två biverkningstabeller. En biverkningstabell som är radformaterad men strukturerad först per SOC och sedan per frekvenskategori till en biverkningstabell i normalform och en biverkningstabell som är radformaterad men strukturerad först per SOC och som saknar frekvensinformation till en biverkningstabell i normalform.
6. För Lamisil transformeras en biverkningstabell som är radformaterad men strukturerad först per frekvenskategori och sedan per SOC till en biverkningstabell i normalform.
En kommentarer om XHTML­presentationerna:
1. I de fall tabeller transformerats till normalform från tabeller som är kolumnindelade per behandlingsregim, doseringstrategi eller terapeutisk indikation så kan en individuell tabelldatacell i den genererade XHTML­koden innehålla biverkningsinformation för flera behandlingsregimer, doseringstrategier etc. Detta kan givetvis presenteras på ett mer kompakt sätt om man förfinar algoritmen för generering av XHTML/CSS.
JSON är ett mycket bra dataformat för webbtjänster. Det kan enkelt integreras i moderna Ajax­
baserade webbapplikationer med mycket god prestanda5 och det används med fördel i moderna REST­baserade webbtjänstegränssnitt.
Givetvis kan man med en god datastruktur även generera datarepresentationer i andra dataformat som t.ex. XML eller YAML6. Klienter till webbtjänster kan ju efterfråga dessa, även om den allmänna trenden i moderna webbtjänster är att använda JSON på grund av dess enkelhet och prestanda.
En slutanmärkning: datafilerna i JSON är kodade i Unicode UTF­8. Om din webbläsare visar konstiga tecken i stället för korrekta svenska tecken kan du ställa om tolkningen av tecken i Firefox och Explorer genom att välja menyalternativ ”Visa­>Kodning­>Unicode (UTF­8)”.
Teknik
I det följande ges en kort beskrivning av hur textanalys (parsning) och strukturering av data har gjorts för att uppnå resultaten ovan.
Textanalys
Vi diskuterar inte parsningstekniken i detalj, men kortfattat kan processen beskrivas med följande steg:
1. Konvertering av PDF till text med hjälp av konverteringsprogram som behåller all text och så mycket layoutinformation som möjligt från PDF­filerna.
2. Splittning av textfilerna i separata textfragment baserade på den standardiserade kapitelstrukturen i SPC:erna.
5 Se: http://www.developer.com/lang/jscript/article.php/3596836/Speeding-Up-AJAX-with-JSON.htm
6 Se: http://www.yaml.org och http://en.wikipedia.org/wiki/Yaml
SEIBO SOFTWARE STUDIOS
www.seibostudios.se
Dokumenttyp: Memo
Författare: Paul Cohen <[email protected]>
Datum: 2010-03-15
3. Separat landmark­based semi­structured text parsing av varje individuellt textfragment.
Vi koncentrerar oss på textfragmentet som innehåller avsnitt 4.8 Biverkningar i SPC:erna. I de textfragment som genereras för avsnitt 4.8 finns tillräckligt med layoutinformation för att kunna extrahera tabelldata med biverkningsinformation.
Strukturering av biverkningsinf ormation
Textfragmentet för avsnitt 4.8 Biverkningar parsas och transformeras till en enhetlig datastruktur.
Detta är enkelt gjort för textparagraferna i textfragmentet, men är en större utmaning för tabellerna, då det finns flera olika varianter på tabeller.
För hela avsnitt 4.8 Biverkningar använder vi oss av följande datastruktur:
Biverkningsdata = [Informationselement, …]
Informationselement = Textparagraf | Biverkningstabell
Biverkningsdata består således av en lista med Informationselement där varje Informationselement antingen är en textparagraf med fritext eller en Biverkningstabell.
Tabellerna bjuder som sagt på en större utmaning då de skiljer sig både layoutmässigt och med avseende på informationstyper. Vi konverterar tabeller till en enhetlig normalform som sedan kan användas för att generera presentationer (i PDF, XHTML/CSS etc) och givetvis som data i en webbtjänst för systemintegration.
Den normalform vi använt oss av i detta lösningsförslag är en datastruktur som ser ut så här:
Biverkningstabell = Header, Table, Footnotes
Header = Tabellrubrikstext
Table = Dict {SOC, Dict {Freq, Biverkningstext}}
Footnotes = Dict {Footnote_symbol, Footnotetext}
Dict avser en tabell7 som består av ett antal nycklar och för varje nyckel ett innehåll. För varje tabell avser första elementet a i {a, b} nyckeln och det andra elementet b innehållet.
SOC står för System Organ Class och Freq för en etablerad biverkningsfrekvenskategori8. Tabellrubrikstext, Biverkningstext och Footnotetext är alla subtextfragment parsade från tabeller i textfragmentet för avsnitt 4.8 Biverkningar.
Slutligen ska sägas att normalformen möjliggör extraktion av biverkningar per behandlingsregim, doseringstrategi etc.
7 Dessa typer av tabeller finns i alla programmeringsspråk och moderna dataformat och kallas vanligtvis ”hash tables”, ”dictionaries” eller ”associative arrays” och representerar en indexerad tabell med data.
8 Exempel på biverkningsfrekvenskategorier är ”Vanlig”, ”Mycket vanlig” etc.
SEIBO SOFTWARE STUDIOS
www.seibostudios.se