Webbtjänster/API
Läkemedelsboken har ett öppet API där man fritt kan göra 100 anrop per timma från en ip-adress.
Vill du ha möjlighet att göra fler anrop går det också bra, skicka ett mejl till lakemedelsboken@mpa.se så ordnar vi det.
Läkemedelsboken.se har öppen källkod, du hittar den bakomliggande koden på GitHub.
Översikt
Följande går att göra med nuvarande API:
- Söka efter innehåll i Läkemedelsboken
- Söka efter läkemedel och ATC-rubriker
- Hämta information från vårt träd med ATC-koder och läkemedel
- Söka efter innehåll i informationsrutor, dvs. terapirekommendationer, faktarutor och tabeller
- Länka direkt till en del av Läkemedelsbokens webbplats
Beskrivningar
Sök efter innehåll i Läkemedelsboken
Protokoll:
HTTP GET
URL:
http://www.lakemedelsboken.se/api/v1/contentsearch?search={söktermer}&apikey={nyckel}
Söktermer:
terapi hjärtsvikt //Mellanslag för att matcha flera ord, max 6 stycken "tablett alvedon" //Inom citationstecken för att söka efter hela meningen
Svar:
Svaret kommer som JSON eller JSONP i form av en array, callback=
som parameter till anropet gör att svaret returneras som JSONP. Svaret är sorterat med bästa resultat först. Varje objekt i svaret följer nedanstående definition.
{ //Titel "title": "Terapirekommendationer – Akut behandling av hjärtsvikt", //Hierarkisk nivå i kapitlet "level": 3, //Unikt id för rubriken "id": "e2_50", //Närmsta förälders id i hierarkin "parentId": "e2_49", //Kapitlets url "chapter": "e2_hja_hjartsvikt_2013fm10.html", //Typ av rubrik, kan vara: // "header" för en klassisk rubrik // "therapyRecommendations" för en terapirekommendation // "infoTable" för en tabell // "facts" för en faktaruta // "figure" för en figur "type": "therapyRecommendations", //Namn på de rubriker från hierarkin som leder fram till denna rubrik, avdelas med " && " "titlePath": "Hjärtsvikt && Akut behandling && Terapirekommendationer – Akut behandling av hjärtsvikt", //Sökinnehållet skickas inte med vid en sökning för att spara bandbredd och tid "content": "", //Produktinnehållet skickas inte med vid en sökning för att spara bandbredd och tid "products": "", //Indikerar om det finns underrubriker till denna rubrik, denna returneras inte om det inte finns underrubriker "hasChildren": true //Sökmotorns poäng för detta resultat, ju lägre desto bättre "score": 0.000001, //Titeln med html spans som omger eventuella perfekta matchningar, HL = highlight "title_HL": "<span class=\"highlight\">Terapi</span>rekommendationer – Akut behandling av <span class=\"highlight\">hjärtsvikt</span>", //Titelhierarki med html spans som omger eventuella perfekta matchningar, HL = highlight "titlePath_HL": "<span class=\"highlight\">Hjärtsvikt</span> && Akut behandling && <span class=\"highlight\">Terapi</span>rekommendationer – Akut behandling av <span class=\"highlight\">hjärtsvikt</span>", //Delar av det faktiska innehållet med html spans som omger eventuella perfekta matchningar, HL = highlight "content_HL": " Vid bakåtsvikt och tecken på förhöjda fyllnadstryck/andnöd Hjärtsängläge: halvsittande kroppsläge med sänkt fotända. Oxygen till saturation > 90%, försiktighet/blodgaskontroll vid KOL. Nitroglycerint..." }
Exempel i javascript med jQuery och JSONP, klicka på "Result" för att se svaret:
var searchTerms = "terapi hjärtsvikt";
var apiKey = "nokey";
$.getJSON( "http://www.lakemedelsboken.se/api/v1/contentsearch?apikey=" + apiKey + "&search=" + encodeURIComponent(searchTerms) + "&callback=?", function( data ) {
for (var i=0; i < data.length; i++) {
var item = data[i];
$("#output").append(htmlEncode(JSON.stringify(item, null, " ")) + "<br>");
}
});
function htmlEncode(value){
return $('<div/>').text(value).html();
}
See the Pen Sök innehåll i Läkemedelsboken by Staffan Living (@staliv) on CodePen.
Sök efter medicinska preparat och ATC-rubriker
Protokoll:
HTTP GET
URL:
http://www.lakemedelsboken.se/api/v1/medicinesearch?search={söktermer}&apikey={nyckel}
Parametrar:
search=dabigatran //Mellanslag för att matcha flera ord, max 6 stycken search="seroquel depot" //Inom citationstecken för att söka efter hela meningen
Svar:
Svaret kommer som JSON eller JSONP i form av en array, callback=
som parameter till anropet gör att svaret returneras som JSONP. Svaret är sorterat med bästa resultat först. Varje objekt i svaret kan vara av två typer, antingen en ATC-kod eller en produkt.
Produkt
{ //Indikerar att detta är en produkt "type": "product", //Id, är också NplId för produkten "id": "20100417000106", //Förälderns id i trädet, alltid en ATC-kod, förutom "root" "parentId": "N05AH04", //Namn på produkten "title": "Seroquel Depot, Depottablett 300 mg , Orifarm", //Namn på föräldrar i trädhierarkin, separerade med " / " "titlePath": "Nervsystemet / Neuroleptika, lugnande medel och sömnmedel / Neuroleptika / Diazepiner, oxazepiner, tiazepiner och oxepiner / Quetiapin", //Id för föräldrar i trädhierarkin, separerade med " / " "idPath": "N / N05 / N05A / N05AH / N05AH04", //Indikationer för en produkt skickas inte med vid en sökning för att spara bandbredd och tid "indications": "", //Länkar till bilder "images": [ "/products/images/64576cd521d6357ae5e351b0223becc62c81f459.jpg" ], //Substansnamn "substance": "Quetiapin", //Indikerar om preparatet är parallellimporterat "parallelimport": "Belgien", //Om "noinfo" är satt till "true" betyder det att det inte finns förskrivarinformation för detta preparat "noinfo": false, //Sökmotorns poäng för detta resultat, ju lägre desto bättre "score": 0.000001, //Titel med html spans som omger eventuella perfekta matchningar, HL = highlight "title_HL": "<span class=\"highlight\">Seroquel Depot</span>, Depottablett 300 mg , Orifarm", //Titelhierarki med html spans som omger eventuella perfekta matchningar, HL = highlight "titlePath_HL": "Nervsystemet / Neuroleptika, lugnande medel och sömnmedel / Neuroleptika / Diazepiner, oxazepiner, tiazepiner och oxepiner / Quetiapin" }
ATC-kod
{ //Indikerar att detta är en ATC-kod "type": "atc", //Finns det underliggande koder eller produkter? "hasChildren": true, //I övrigt samma beskrivningar som för en produkt "parentId": "B01AE", "title": "Dabigatranetexilat", "titlePath": "Blod och blodbildande organ / Antikoagulantia / Antikoagulantia / Direkt trombinhämmande medel / Dabigatranetexilat", "idPath": "B / B01 / B01A / B01AE / B01AE07", "id": "B01AE07", "score": 0.000001, "indications": "", "title_HL": "<span class=\"highlight\">Dabigatran</span>etexilat", "titlePath_HL": "Blod och blodbildande organ / Antikoagulantia / Antikoagulantia / Direkt trombinhämmande medel / <span class=\"highlight\">Dabigatran</span>etexilat" }
var searchTerms = "dabigatran";
var apiKey = "nokey";
$.getJSON("http://www.lakemedelsboken.se/api/v1/medicinesearch?apikey=" + apiKey + "&search=" + encodeURIComponent(searchTerms) + "&callback=?", function(data) {
for (var i=0; i < data.length; i++) {
var item = data[i];
$("#output").append(htmlEncode(JSON.stringify(item, null, " ")) + "<br>");
}
});
function htmlEncode(value){
return $('<div/>').text(value).html();
}
See the Pen Sök läkemedel i Läkemedelsboken by Staffan Living (@staliv) on CodePen.
Hämta information från vårt träd med ATC-koder och läkemedel
Protokoll:
HTTP GET
URL:
http://www.lakemedelsboken.se/api/v1/atctree?parentid={id}&apikey={nyckel}
Parametrar:
parentid=root //Hämtar från grunden
parentid=B01AE07 //Ange en ATC-kod som parentid
för att hämta underrubriker
Svar:
Svaret består av en array med atc-koder och produkter vilka är barn till given parentid
.
Svaret kommer som JSON eller JSONP i form av en array, callback=
som parameter till anropet gör att svaret returneras som JSONP.
Ett objekt i svaret representerar antingen en produkt eller en ATC-kod. En produkt känns igen genom att den har värdet children
satt till en array.
En ATC-kod har inte children
definierad, däremot finns det en variabel vid namn hasChildren
som indikerar om där finns några underliggande objekt.
Produkt
//Nedan syns svar för ATC-koden B01AE07 (Dabigatranetexilat) http://www.lakemedelsboken.se/api/v1/atctree?parentid=B01AE07 //I svaret syns tre produkter som alla klassificeras under namnet Pradaxa [ { "text": "Pradaxa", "id": "Pradaxa", "children": [ { "text": "Pradaxa, Kapsel, hård 75 mg , Boehringer Ingelheim", "id": "20070309000098", "images": [ "/products/images/3673059b29f1ea2a919cd0cd8166f3bd7c9c2e35.jpg" ], "noinfo": false }, { "text": "Pradaxa, Kapsel, hård 110 mg , Boehringer Ingelheim", "id": "20070309000104", "images": [ "/products/images/64576cd521d6357ae5e351b0223becc62c81f459.jpg" ], "noinfo": false }, { "text": "Pradaxa, Kapsel, hård 150 mg , Boehringer Ingelheim", "id": "20100219000083", "images": [ "/products/images/d160e52b17749d3f6b497c6aef6c16877a8db77f.jpg" ], "noinfo": false } ] } ]
ATC-kod
//Nedan syns svar för ATC-koden B01AE (Direkt trombinhämmande medel) http://www.lakemedelsboken.se/api/v1/atctree?parentid=B01AE //I svaret syns sju objekt som representerar ATC-koder [ { "text": "Melagatran", "id": "B01AE04", "hasChildren": true }, { "text": "Ximelagatran", "id": "B01AE05", "hasChildren": true }, { "text": "Desirudin", "id": "B01AE01", "hasChildren": true }, { "text": "Lepirudin", "id": "B01AE02", "hasChildren": true }, { "text": "Argatroban", "id": "B01AE03", "hasChildren": true }, { "text": "Bivalirudin", "id": "B01AE06", "hasChildren": true }, { "text": "Dabigatranetexilat", "id": "B01AE07", "hasChildren": true } ]
Exempelkod
var apiKey = "nokey";
loadData("root");
function loadData(parentId) {
$("#output").html("Hämtar " + parentId + "...");
$.getJSON("http://www.lakemedelsboken.se/api/v1/atctree?apikey=" + apiKey + "&parentid=" + encodeURIComponent(parentId) + "&callback=?", function(data) {
$("#output").html("");
for (var i=0; i < data.length; i++) {
var item = data[i];
var itemType = "atc";
if (item.children !== undefined) {
itemType = "product";
}
if (itemType === "atc") {
renderATC(item);
} else {
renderProduct(item);
}
}
});
}
function renderProduct(item) {
$("#output").append(item.text + "<br>");
for (var i = 0; i < item.children.length; i++) {
var product = item.children[i];
$("#output").append(' - ' + product.text + "<br>");
}
}
function renderATC(item) {
$("#output").append('<a href="#" class="atc" id="' + item.id + '">' + item.text + '</a><br>');
}
function htmlEncode(value){
return $('<div/>').text(value).html();
}
$("body").on("click", "a.atc", function() {
loadData($(this).attr("id"));
});
Sök efter innehåll i informationsrutor
Du kan söka efter innehåll i enbart informationsrutor i Läkemedelsboken, dvs. terapirekommendationer, faktarutor och tabeller. Detta är till exempel intressant om man har ett namn på ett läkemedel och önskar se mer information kring detta preparat.
Protokoll:
HTTP GET
URL:
http://www.lakemedelsboken.se/api/v1/boxsearch?search={söktermer}&apikey={nyckel}
Parametrar:
search=alvedon //Leta efter "alvedon" i informationsrutor
Svar:
Om jag söker efter "alvedon" får jag detta som första svar:
//Strukturen är samma som för sökningar efter innehåll [ { "title": "Faktaruta 5 - Paracetamol", "level": 3, "id": "q1_53", "parentId": "q1_49", "chapter": "q1_sma_smartbehandl_2013fm10.html", "type": "facts", "titlePath": "Smärta och smärtbehandling && Behandling && Faktaruta 5", "content": "", "products": "", "score": 0.000001, "title_HL": "Faktaruta 5 - Paracetamol", "titlePath_HL": "Smärta och smärtbehandling && Behandling && Faktaruta 5" } ]
Länka direkt till en del av Läkemedelsbokens webbplats
Länka till ett sökresultat
http://www.lakemedelsboken.se/?iso=true&search=test
//Byt ut "test" mot valfritt sökord
eller länka till version utan javascript:
http://www.lakemedelsboken.se/search?search=test
//Byt ut "test" mot valfritt sökord
Länka till ett preparat
http://www.lakemedelsboken.se/?imo=true&nplId=19530210000012
//Byt ut "19530210000012" mot valfritt nplId
eller länka till version utan javascript:
http://www.lakemedelsboken.se/product/19530210000012
//Byt ut "19530210000012" mot valfritt nplId
Länka till ATC-kod
http://www.lakemedelsboken.se/atc/A11GA01
//Byt ut "A11GA01" mot valfri ATC-kod