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:

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"));
});

See the Pen JcnGa by Staffan Living (@staliv) on CodePen.

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


© Läkemedelsverket