SIL SOAP API 4.1. Tjänstegränssnittsbeskrivning

Relevanta dokument
SIL SOAP API 4.0. Tjänstegränssnittsbeskrivning

Tjänstegränssnittsbeskrivning

Specifikation 1 (114) Tjänstegränssnittsbeskrivning SIL SOAP API 3.1

Tjänstegränssnittsbeskrivning

SIL SOAP API 4.2. Tjänstegränssnittsbeskrivning

Specifikation 1 (115) Tjänstegränssnittsbeskrivning SIL SOAP API 3.1

SIL SOAP API 4.2. Tjänstegränssnittsbeskrivning

Sil SOAP API 5.1 Prerelease. Nyheter och förändringar gentemot Sil SOAP API 5.0

Integrationshandledning Produkttypsgrupper

Integrationshandledning Licensläkemedel

SIL 3.1. Specifikationer och innehåll. 12 november /16. Paul Cohen Förvaltningsledare IT, Läkemedel

Integrationshandledning Substanstjänster

Integrationshandledning Tillgänglighet

Integrationshandledning Substanstjänster

Integrationshandledning Substanstjänster

Sil 4.2 verksamhetsmässiga detaljer

Integrationshandledning Licensläkemedel

Release Sil 4.2 verksamhet & tekniska aspekter

SIL SOAP API 4.0. beta prerelease

Integrationshandledning Tillgänglighet

Verksamhetsmässiga detaljer Sil 5.0

Integrationshandledning Handelsvaror

Verksamhetshandledning Rekommenderade läkemedel

Integrationshandledning Sorteringsordning av produkter i Sil

Integrationshandledning APLs produktresuméer

Integrationshandledning Läkemedel inom förmånssystemet och periodens vara

Verksamhetshandledning Läkemedel och amning och läkemedel och graviditet/fosterpåverkan. En mappning mellan två olika beslutsstöd

Amning och graviditet-fosterpåverkan

Integrationshandledning Läkemedel inom förmånssystemet och periodens vara

Verksamhetshandledning för amning och graviditet/fosterpåverkan

Janus Läkemedelstjänster - Användarhandledning

Integrationshandledning DHPC: Ny viktig säkerhetsinformation om läkemedel till hälso- och sjukvården

Integrationshandledning Synonymkällan

Integrationshandledning Handelsvaror

Integrationshandledning Nationell lista undvik till äldre

Sil 5.0 verksamhetsmässiga detaljer

SILs innehåll och tjänster - stöder dessa generisk förskrivning?

Verksamhetshandledning för amning och graviditet/fosterpåverkan. En mappning mellan två olika beslutstöd

Information om ändringar i Nationellt Produktregister för Läkemedel (NPL) som kan beröra subvention av läkemedel

Frågor och svar för Nationellt substansregister för läkemedel (NSL)

Integrationshandledning Utsättningsorsaker

Svenska informationstjänster för läkemedel - Sil. - Beskrivning och tjänstespecifika villkor

Integrationshandledning Läkemedel och amning och läkemedel och graviditet/fosterpåverkan. En mappning mellan två olika beslutsstöd

Aktuell läkemedelsinformation ett måste för ett bra samspel mellan sjukvård och apotek

Möjliga framtidskällor och framtidstjänster i SIL. Birgit Eiermann, farm Dr., SIL birgit.eiermann@inera.se 1

Integrationshandledning Nationell lista undvik till äldre

Fass webbtjänster Akut- Fass

Versionsnyheter PMO 9.1

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Integrationshandledning Rekommenderade läkemedel

Integrationshandledning Janusmed interaktioner

Sveriges apoteksförening och e-vis identifierade åtgärder för förpackningar med indiska 2D-koder efter 9 februari 2019 för svenska marknaden.

Sil - årscykel och aktiviteter 2016

Bilaga 6 - Analys av GetMedicationHistory. Stöd till säker läkemedelsprocess

Integrationshandledning Biverkningsöversikt

Integrationshandledning Utsättningsorsaker

ANSÖKAN - om att ingå i läkemedelsförmånerna samt om pris på läkemedel. Typ av ansökan. Typ av läkemedel. Kalkylerad omsättning. Licensförskrivning

Nationell källa för ordinationsorsak Börja implementera! Birgit Eiermann, farm.dr, Inera Emma Hultén, Socialstyrelsen

Ovärderligt! är beroendeframkallande

Workshop barn och läkemedel

NPL i Hälso och sjukvården

Integrationshandledning eped - rimlighetskontroll

Identifiering av artiklar

Integrationshandledning Nationell lista läkemedel under utökad övervakning

Receptlära & Läkemedelsförmånerna

Medicinsk integrationsbeskrivning för kunskapstjänsten Janusmed amning som primärkälla

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Identifiering av artiklar

Nationellt substansregister för läkemedel (NSL) Therese Ringbom.

Förändringar i läkemedelsjournalen. Release för TakeCare 12.6

Medicinsk integrationsbeskrivning för kunskapstjänsten Läkemedel och amning som primärkälla

Sil - årscykel och aktiviteter

Licens Behandlingsalternativ när godkända läkemedel inte räcker till

Utbyte av läkemedel. Sofie Berge och Karin Andersson Utredare, TLV

Källor till läkemedelsinformation. Klinisk farmakologi Institutionen för Medicin Solna

Medicinsk integrationsbeskrivning för kunskapstjänsten Läkemedel och fosterpåverkan som primärkälla

Källor till läkemedelsinformation. Klinisk farmakologi Institutionen för Laboratoriemedicin Institutionen för Medicin Solna

Integrationshandledning Kortnotationer

Integrationshandledning Kortnotationer

Instruktion för att kunna använda Säkerhetstjänsternas administrationsgränssnitt

Nytt i Melior - Filtrering av vårdkontakter

Tentamen i Introduktion till programmering

Användarmanual för Centeped

Integrationshandledning Administreringsskällan

eped - Barnveckan Göteborg Barnläkemedelsgruppen Astrid Lindgrens Barnsjukhus

Utbildningsmaterial för LiiV

Medicinsk integrationsbeskrivning för kunskapstjänsten Läkemedel och fosterpåverkan som primärkälla

Leverans-API för nedladdning av geodata v1.0 - teknisk beskrivning

Skånegemensamma rutiner för läkemedelsmodulen i PMO

Användarhandledning Version 1.2

Receptskrivningens ABC. Carl-Olav Stiller Överläkare, Docent Klinisk farmakologi Institutionen för Medicin Solna

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Inrättande av nationellt substansregister för läkemedel

Användarmanual för Centeped

Vision ehälsa i praktiken

XML-produkter. -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: Version: 1.

Pascal - Beskrivning och tjänstespecifika villkor

Sätt att skriva ut binärträd

Snabbguide Visma Compact API Copyright Visma Spcs AB

Transkript:

SIL SOAP API 4.1 Tjänstegränssnittsbeskrivning

Revisionshistorik Version Författare Kommentar 1.0 (2015-10-28) Erik Heneryd Första utgåva. 1.1 (2016-02-03) Paul Cohen Korrigerat typ på attributet Indications i IndicationPathobjektet till Indication[] (4.17.12). 1.2 (2016-06-09) Jonatan Rydberg 1.3 (2016-08-29) Jonatan Rydberg 1.4 (2016-09-21) Jonatan Rydberg 1.5 (2016-09-29) Jonatan Rydberg Korrigerat typ på attributet shortindications i Recommendation-objektet till ShortIndication[] (4.17.12). Förtydligat den beskrivande texten till tjänsten getsuperdrugarticlesbynplpackidlist så att det framgår att den fungerar både för godkända och icke-godkända läkemedel (4.25.9) samt korrigerat exemplet för den tjänsten. Korrigerat stavningen på attributet drugarticle i SuperDrugArticle-objekt (4.25.11). Korrigerat stavning av attributet pubmedid i Referenceobjektet (4.14.18) Lagt till beskrivning för när attributet pubmedid i Reference-objektet (4.14.18) indikerar att referensen inte är en referens i PubMed Lagt till beskrivning för när attributet pubmedid i JanusInfoReference-objektet (4.16.12) indikerar att referensen inte är en referens i PubMed Ändrat beskrivning av parametern textformat i rekommendationstjänsterna (4.17). Ändrat beskrivningen av attributen sillactationcode och silpregnancycode i objektet DistributedDrug (4.6.13) Korrigerat stavning av tjänster getdrugadministrationsbycodes (4.12.4) och getdrugadministrationsbyterms (4.12.5) Korrigerat namnet på attributen containslactosflag och containslatexflag i objektet DistributedDrug (4.6.13) Utökade kommentarerna till rimlighetstjänsterna (4.10) Korrigerat typ för attributet dosageunitindefinite i objektet DrugForm (4.9.3) Korrigerat typ för attributet packsizenumeric i objektet DrugArticle (4.7.11) Korrigerat objektet DistributedDrug (4.6.13). Attributet drugclassificationcode finns inte i detta objekt. Korrigerade förklaring av regionid i början av avsnitten Parallellimportade läkemedel (Drug), Läkemedelsprodukter (DistributedDrug), Läkemedelsartiklar (DrugArticle) och Sid 2/152

tjänster för samlad läkemedelsinformation (supertjänster). Ändrat förklaring av flgcurrent i tjänster för samlad läkemedelsinformation (supertjänster) Korrigerade länken till demo-miljön. 1.6 (2017-03-01) Paul Cohen Lagt in information om namnbyte på kunskapskällorna från SLL. Förtydligat information om ATC-koder. Uppdaterat avsnittet med definitioner. Rättat fel i anrop för exempel för getatccodedrugsbyatccodelist (4.4.11). 1.7 (2017-05-12) Erik Heneryd Uppdaterat Ineras besöksadress. Uppdaterat Sil-länkar till. Lagt till förtydligande angående sorteringsordning av läkemedelsprodukter. 1.8 () Erik Heneryd Rättat fel i beskrivningen av getrecommendationsbynplpackidlist (4.17.7), nu är det rätt typ för attributet listtypes. Sid 3/152

Innehåll 1. Inledning... 12 1.1 Avgränsningar... 12 1.2 Allmänt... 12 1.3 Integration... 12 1.4 Drift av Sil-server och uppdatering av Sil-databas... 13 1.5 Datakällor i Sil... 13 1.6 Teknisk lösning... 13 1.7 Utvecklingsmiljö för integrerande system... 14 1.8 Demomiljö... 14 1.9 Definitioner... 15 2. Viktiga förändringar i Sil SOAP API 4.1... 18 2.1 Nya källor... 18 2.2 Övriga nya tjänster, objekt och attribut... 18 2.3 Smärre förändringar... 19 2.3.1 Biverkningar... 19 2.3.2 Kortnotationer... 19 2.3.3 Tillgänglighet... 19 2.3.4 Interaktioner... 19 2.3.5 Beståndsdelar... 20 3. Objektmodell för läkemedelsinformation... 21 3.1 Sils produkttypsgrupper... 22 3.2 Tjänster för att söka efter läkemedelsinformation... 22 3.3... 23 3.3.1 En läkemedelsprodukt utan parallellimporter: Aspirin... 23 3.3.2 En läkemedelsprodukt med parallellimporter: Stilnoct... 25 3.3.3 Sökning på substanser som börjar med tecknen Ace... 27 4. Tjänster... 29 4.1 Inledning... 29 4.2 Organisation och layout av beskrivningarna... 29 4.3 Felhantering... 30 4.4 ATC-koder... 31 4.4.1 getatcsbyatccode... 31 4.4.2 getatcsbytextsv... 31 4.4.3 getatcsbydrugid... 32 4.4.4 getatcnarrowersbyatccode... 32 4.4.5 getatcwiderbyatccode... 32 4.4.6 getatcsbyatccodeandlevelinterval... 33 Sid 4/152

4.4.7 getatcsbytextsvandlevelinterval... 33 4.4.8 getatcsbylevel... 34 4.4.9 getatcsbyatccodelist... 34 4.4.10 getdrugatccodesbydrugidlist... 34 4.4.11 getatccodedrugsbyatccodelist... 35 4.4.12 Atc... 35 4.4.13 DrugAtcCode... 35 4.4.14 AtcCodeDrug... 35 4.5 Parallellimporterade läkemedel... 36 4.5.1 getdrugsbyatccode... 36 4.5.2 getdrugsbydistributeddrugtradename... 38 4.5.3 getdrugbydrugid... 38 4.5.4 getdrugsbydrugidlist... 39 4.5.5 getdrugsbysubstancegroupid... 39 4.5.6 getdrugsbypharmaceuticalformgroupid... 40 4.5.7 getdrugsbystrengthgroupid... 40 4.5.8 getdrugidsbynplidlist... 41 4.5.9 Drug... 41 4.6 Läkemedelsprodukter... 43 4.6.1 getdistributeddrugsbydistributeddrugtradename... 43 4.6.2 getdistributeddrugbynplid... 45 4.6.3 getdistributeddrugsbynplidlist... 45 4.6.4 getdistributeddrugsbydrugid... 46 4.6.5 getdistributeddrugsbydrugidlist... 46 4.6.6 getdistributeddrughistoricalnamesbynplid... 47 4.6.7 getnplidsbydistributeddrughistoricalname... 47 4.6.8 getinterchangeabledistributeddrugsbynplid... 48 4.6.9 getdistributeddrugsbynplsubstanceid... 48 4.6.10 getdistributeddrugsbysubstancename... 49 4.6.11 getunauthoriseddistributeddrugsbysubstancename... 49 4.6.12 getunauthoriseddistributeddrugsbynplsubstanceid... 50 4.6.13 DistributedDrug... 50 4.7 Läkemedelsartiklar... 53 4.7.1 getdrugarticlesbydistributeddrugtradename... 53 4.7.2 getdrugarticlesbydrugid... 55 4.7.3 getdrugarticlesbydrugidlist... 55 4.7.4 getdrugarticlesbynplid... 56 4.7.5 getdrugarticlesbynplidlist... 56 4.7.6 getdrugarticlebynplpackid... 57 4.7.7 getdrugarticlesbynplpackidlist... 57 4.7.8 gethistoricalarticlenosbynplpackid... 58 Sid 5/152

4.7.9 getnplpackidsbydateadded... 58 4.7.10 gettlvexchangesbynplpackidlist... 59 4.7.11 DrugArticle... 59 4.7.12 TlvExchange... 61 4.7.13 ExchangePeriod... 61 4.8 Läkemedelsförvaring... 62 4.8.1 getstoragesbynplpackid... 62 4.8.2 getstoragesbynplpackidlist... 62 4.8.3 Storage... 63 4.9 Läkemedelsformer... 64 4.9.1 getdrugforms... 64 4.9.2 getdrugformbydrugformcode... 64 4.9.3 DrugForm... 65 4.9.4 Dosage... 65 4.10 Rimlighetskontroll... 66 4.10.1 getdoserangesbynplid... 66 4.10.2 getdoserangesbynplsubstanceid... 67 4.10.3 getdoseweightranges... 67 4.10.4 iswithindoserangefornplid... 68 4.10.5 iswithindoserangefornplsubstanceid... 69 4.10.6 iswithindoseweightrange... 70 4.10.7 DoseRange... 71 4.10.8 DoseWeightRange... 71 4.11 Läkemedelsinstruktioner... 72 4.11.1 getdruginstructionhealthcareunits... 72 4.11.2 getdruginstructions... 72 4.11.3 getdruginstructionsbydruginstructionid... 73 4.11.4 getdruginstructionsbyhealthcareunit... 73 4.11.5 getdruginstructionsbynplid... 74 4.11.6 gethealthcareunitbyid... 74 4.11.7 DrugInstruction... 75 4.11.8 HealthCareUnit... 75 4.12 Administreringssätt... 76 4.12.1 getdrugadministrationmethods... 76 4.12.2 getdrugadministrationroutes... 76 4.12.3 getdrugadministrationsites... 76 4.12.4 getdrugadministrationsbycodes... 77 4.12.5 getdrugadministrationsbyterms... 77 4.12.6 DrugAdministration... 77 4.12.7 Term... 77 4.13 FASS-texter... 79 Sid 6/152

4.13.1 getfassdocsbydrugid... 79 4.13.2 getfassdocbynplid... 79 4.13.3 FassDoc... 79 4.14 Interaktioner... 80 4.14.1 getdruginteractionsbydrugidagainstall... 80 4.14.2 getdruginteractionsbydrugidagainstlist... 81 4.14.3 getdruginteractionsbydrugidagainstlistsevclassification... 81 4.14.4 getdruginteractionswithindrugidlist... 82 4.14.5 getdruginteractionswithindrugidlistsevclassification... 82 4.14.6 getinteractionsbydrugidagainstall (deprikerad)... 83 4.14.7 getinteractionsbydrugidagainstlist (deprikerad)... 84 4.14.8 getinteractionsbydrugidagainstlistsevclassification (deprikerad)... 85 4.14.9 getinteractionswithindrugidlist (deprikerad)... 86 4.14.10 getinteractionswithindrugidlistsevclassification (deprikerad)... 86 4.14.11 getshortinteractionsbyinteractionidlist... 87 4.14.12 getcompleteinteractionbyinteractionid... 87 4.14.13 DrugInteraction... 88 4.14.14 ShortInteraction... 88 4.14.15 InteractionSection... 89 4.14.16 CompleteInteraction... 89 4.14.17 InteractingPart... 89 4.14.18 Reference... 89 4.15 Biverkningar... 90 4.15.1 getsideeffectsbynplidlist... 91 4.15.2 getsideeffectfrequencies... 91 4.15.3 getsideeffectsocs... 92 4.15.4 SideEffects... 92 4.15.5 SideEffect... 92 4.16 Graviditets- och amningsvarningar... 93 4.16.1 getwarningclassificationsbycode... 94 4.16.2 getsilpregnancylactationwarningsbynplidlist... 94 4.16.3 getjanusinfolactationdocsbynplidlist... 95 4.16.4 getjanusinfopregnancydocsbynplidlist... 96 4.16.5 getfasslactationdocsbynplidlist... 96 4.16.6 getfasspregnancydocsbynplidlist... 97 4.16.7 SILPregnancyLactationWarning... 97 4.16.8 SourceWarning... 97 4.16.9 WarningClassification... 98 4.16.10 JanusInfoLactationDoc... 98 4.16.11 JanusInfoPregnancyDoc... 99 4.16.12 JanusInfoReference... 99 Sid 7/152

4.16.13 JanusInfoLink... 99 4.16.14 FassPregnancyDoc... 100 4.16.15 FassLactationDoc... 100 4.17 Rekommenderade läkemedel... 101 4.17.1 getvalidregions... 101 4.17.2 getlisttypes... 102 4.17.3 getrecommendedlistinfosbyregionid... 102 4.17.4 gettherapygroups... 103 4.17.5 getindicationpaths... 104 4.17.6 getindicationpath... 105 4.17.7 getrecommendationsbynplpackidlist... 106 4.17.8 getrecommendationsbytherapygroupindicationname... 107 4.17.9 Region... 107 4.17.10 ListType... 107 4.17.11 TherapyGroup... 108 4.17.12 IndicationPath... 108 4.17.13 Indication... 108 4.17.14 RecommendedListInfo... 109 4.17.15 Recommendation... 109 4.17.16 IdentifierValue... 109 4.17.17 ShortIndication... 110 4.18 Utbytbarhet... 111 4.18.1 getsubstancegroups... 112 4.18.2 getsubstancegroupbysubstancegroupid... 112 4.18.3 getpharmaceuticalformgroups... 112 4.18.4 getpharmaceuticalformgroupbypharmaceuticalformgroupid... 113 4.18.5 getstrengthgroups... 113 4.18.6 getstrengthgroupbystrengthgroupid... 113 4.18.7 SubstanceGroup... 114 4.18.8 PharmaceuticalFormGroup... 114 4.18.9 StrengthGroup... 114 4.19 Ingredienser och substanser... 115 4.19.1 getsubstancesbynplsubstanceidlist... 116 4.19.2 getsubstancesbysubstancename... 116 4.19.3 getdistributeddrugcontentsbynplidlist... 117 4.19.4 getdistributeddrugcontentsbynplidlistfiltered... 117 4.19.5 Substance... 118 4.19.6 DistributedDrugContent... 118 4.19.7 Ingredient... 118 4.20 Kortnotationer... 119 4.20.1 getshortencdosagetranslation... 119 Sid 8/152

4.21 Utsättningsorsaker... 120 4.21.1 gettreatmentwithdrawalreasons... 120 4.21.2 gettreatmentwithdrawalreasonbyid... 120 4.21.3 TreatmentWithdrawalReason... 120 4.22 Läkemedelsföretag... 121 4.22.1 getdistributeddrugorganizationsbynplidlist... 121 4.22.2 getdrugarticleorganizationsbynplpackidlist... 121 4.22.3 DistributedDrugOrganizations... 122 4.22.4 DrugArticleOrganizations... 122 4.22.5 RoleOrganization... 122 4.22.6 Organization... 122 4.23 Handelsvaror (icke-läkemedel)... 123 4.23.1 getnondrugarticlesbyarticlename... 123 4.23.2 getnondrugarticlesbyproductgroupcode... 124 4.23.3 getnondrugarticlesbyarticlenolist... 124 4.23.4 getnondruggroupbycode... 125 4.23.5 getnondruggroupparentsbycode... 125 4.23.6 getnondruggroups... 126 4.23.7 getnondruggroupsbycode... 126 4.23.8 getnondruggroupsbycodelist... 127 4.23.9 getnondruggroupsbytextsv... 127 4.23.10 NonDrugArticle... 128 4.23.11 NonDrugGroup... 128 4.24 Söktjänster för läkemedelsidentifierare... 129 4.24.1 getnplpackidsbyarticlenolist... 129 4.24.2 getnplidsbysemanolist... 129 4.24.3 getdrugidsbysemanolist... 130 4.24.4 getsemanosbynplidlist... 130 4.24.5 getsemanosbydrugidlist... 131 4.24.6 IdPair... 131 4.25 Tjänster för samlad läkemedelsinformation (supertjänster)... 132 4.25.1 getsuperdrugsbydistributeddrugtradename... 132 4.25.2 getsuperdrugsbydrugidlist... 133 4.25.3 getsuperdrugsbynplidlist... 133 4.25.4 getsuperdrugsbyatccodelist... 134 4.25.5 getsuperdrugsbyatctextsv... 134 4.25.6 getunauthorisedsuperdrugsbydistributeddrugtradename... 135 4.25.7 getunauthorisedsuperdrugsbyatccodelist... 135 4.25.8 getunauthorisedsuperdrugsbyatctextsv... 136 4.25.9 getsuperdrugarticlesbynplpackidlist... 136 4.25.10 SuperDrug... 137 Sid 9/152

4.25.11 SuperDrugArticle... 137 4.26 Referensdatatjänster... 138 4.26.1 getdrugclassifications... 138 4.26.2 getdrugclassificationbycode... 138 4.26.3 getcontrolclasses... 138 4.26.4 getcontrolclassbycode... 139 4.26.5 getrouteofadministrations... 139 4.26.6 getrouteofadministrationbycode... 139 4.26.7 getprescribers... 139 4.26.8 getprescriberbycode... 140 4.26.9 getproducttypes... 140 4.26.10 getproducttypebycode... 140 4.26.11 getprescriptions... 140 4.26.12 getprescriptionbycode... 141 4.26.13 getstrengthnumericunits... 141 4.26.14 getstrengthnumericunitbycode... 141 4.26.15 getorganizationroles... 141 4.26.16 getorganizationrolebycode... 142 4.26.17 getcountries... 142 4.26.18 getcountrybycode... 142 4.26.19 getdosdisplifeunits... 142 4.26.20 getdosdisplifeunitbycode... 143 4.26.21 getpackagetypeinners... 143 4.26.22 getpackagetypeinnerbycode... 143 4.26.23 getpackconditions... 143 4.26.24 getpackconditionbycode... 144 4.26.25 getstoragetemps... 144 4.26.26 getstoragetempbycode... 144 4.26.27 getsalesrestrictions... 144 4.26.28 getsalesrestrictionbycode... 145 4.26.29 getpacksizenumericunits... 145 4.26.30 getpacksizenumericunitbycode... 145 4.26.31 getshelflifeunits... 145 4.26.32 getshelflifeunitbycode... 146 4.26.33 getstorageconditions... 146 4.26.34 getstorageconditionbycode... 146 4.26.35 getingredientroles... 146 4.26.36 getingredientrolebycode... 147 4.26.37 getquantityunits... 147 4.26.38 getquantityunitbycode... 147 4.26.39 getalternativequantityunits... 147 Sid 10/152

4.26.40 getalternativequantityunitbycode... 148 4.26.41 getcomprefquantities... 148 4.26.42 getcomprefquantitybycode... 148 4.26.43 getsilproducttypegroups... 148 4.26.44 DrugClassification... 149 4.26.45 ControlClass... 149 4.26.46 RouteOfAdministration... 149 4.26.47 Prescriber... 149 4.26.48 ProductType... 149 4.26.49 Prescription... 149 4.26.50 StrengthNumericUnit... 149 4.26.51 OrganizationRole... 149 4.26.52 Country... 149 4.26.53 DosdispLifeUnit... 149 4.26.54 PackageTypeInner... 149 4.26.55 PackCondition... 150 4.26.56 StorageTemp... 150 4.26.57 SalesRestriction... 150 4.26.58 PackSizeNumericUnit... 150 4.26.59 ShelfLifeUnit... 150 4.26.60 StorageCondition... 150 4.26.61 IngredientRole... 150 4.26.62 QuantityUnit... 150 4.26.63 AlternativeQuantityUnit... 150 4.26.64 CompRefQuantity... 150 4.27 Versionsinformation... 151 4.27.1 getdataversions... 151 4.27.2 getapiversion... 151 4.27.3 DataVersion... 151 4.27.4 ApiVersion... 151 Sid 11/152

1. Inledning Detta dokument beskriver Sil SOAP API 4.1. Sil SOAP API är ett skrivskyddat API för åtkomst till information om alla läkemedelsprodukter och förpackningar i Sverige samt om handelsvaror (icke-läkemedel) inom förmånen, d.v.s. som omfattas av TLV:s subventioner enligt deras nämnd för läkemedelsförmåner. Dokumentet vänder sig till systemutvecklare som vill integrera Sil i journalsystem eller andra expert- och stödsystem i vården. För en mer komplett och verksamhetsorienterad beskrivning av nytta och möjligheter med tjänster och informationen i Sil hänvisas läsaren till de olika integrationshandledningar som Sil tillhandahåller. Den senaste versionen av detta dokument finns att hämta på Sils hemsida 1. 1.1 Avgränsningar Detta dokument beskriver inte hur man installerar eller sköter drift av en Sil-server med Sil SOAP API och tillhörande Sil-databas. För information om det, se dokumentet Installation och drift av Sil Server 4.1. Se Sils hemsida för senaste version av det dokumentet. 1.2 Allmänt Sil SOAP API innehåller 176 read-only-tjänster (returnerandes 83 typer av objekt) som ger åtkomst till information om läkemedel i Sverige. Sil SOAP API använder internt en databas som kallas för Sil-databasen. Sil SOAP API tillsammans med Sil-databasen kallas för Sil-servern. En ny version av Sil SOAP API releasas varje år. Sil förvaltningen på Inera producerar och publicerar en ny Sil databas varje vecka (på onsdagar) på Sils SFTP-server. FASS-texter och annan FASS-information uppdateras alla vardagar utom röda dagar, i den publicerade databasen på SFTP-servern. 1.3 Integration För att integrera ett journal- eller vårdsystem med Sil SOAP API krävs dels att man programmerar sitt system så att det utför de anrop man vill mot Sil SOAP API och dels att man har tillgång till en installation av en Sil-server med Sil SOAP API och aktuell Sil-databas som systemet kan anropa när det körs. 1 Se: http:///sil-fordjupning Sid 12/152

1.4 Drift av Sil-server och uppdatering av Sil-databas Ansvaret för att ett journal- eller vårdsystem har tillgång till, och anropar, en Sil-server med rätt version av Sil SOAP API och en aktuell och uppdaterad databas, ligger på den som ansvarar för drift av respektive journal- och vårdsystem. Oftast är det landstingens IT-drift organisationer som ansvarar för detta. Inera tillhandahåller alltså inga Sil-servrar i drift utöver ett par demoservrar som kan användas för att lära sig om Sil SOAP API eller för prototyputveckling. I framtiden kan Inera komma att tillhandahålla nationella Sil-servrar i skarp drift. Aktuella och uppdaterade Sil-databaser kan laddas ner från Sils SFTP-server och uppdatering sker genom att göra ett kortare driftstopp (på ca 1 minut) på Sil-servern och då skriva över Sildatabasen med en ny version av hela Sil-databasen. För att ha aktuell Sil information krävs alltså att driftansvariga för lokala Sil-servrar ser till att ladda ner och uppdatera sin lokala Sil-server med en ny Sil-databas varje natt. 1.5 Datakällor i Sil Informationen om läkemedel i Sil-databasen kommer från ett antal olika källor och importeras till Sils interna kvalitetssäkringssystem varje vecka. Efter att informationen validerats och granskats skapas sedan en ny Sil-databas som publiceras på Sils SFTP-sajt. Källorna som används i Sil 4.1 är VARA (ehälsomyndigheten), NSL (Läkemedelsverket), Janusmed Interaktioner 2 (SLL), FASS (LIF), Amning & graviditetsvarningar (LIF/FASS), Janusmed Amning & Janusmed Fosterpåverkan 3 (SLL), Doseringsregistret (Sil), Utsättningsorsaksregistret (Sil), Administreringskällan (Sil), Läkemedelsinstruktioner (eped) och Rimlighetskontrollregistret (eped). VARA används som grundkälla för information om läkemedelsprodukter och artiklar. Informationen i VARA om läkemedelsprodukter och artiklar samt handelsvaror inom förmånen kommer från ehälsomyndigheten, Läkemedelsverket, TLV samt läkemedelsföretagen. Sil har endast redaktionellt ansvar för Doseringsregistret, Utsättningsorsaksregistret och Administreringskällan. Vidare finns i Sil 4.1 också information om biverkningar som extraherats från Läkemedelsverkets produktresuméer. Denna informationsextraktion är ännu inte helt kvalitetssäkrad. Det innebär att dessa tjänster inte ännu är avsedda användas i skarp produktion. De kan dock användas för att experimentera med hur beslutsstödsfunktionalitet för biverkningsinformation kan utformas på ett bra sätt. 1.6 Teknisk lösning Sil SOAP API är implementerat i Java med Metro (JAX-WS RI) och Tomcat och använder Microsoft SQL server som databasystem. 2 Denna källa bytte namn från SFINX (Swedish Finnish Interaction X-referencing) 1 januari 2017. 3 Dessa källor bytte namn från Läkemedel och amning ändras till Janusmed amning och från Läkemedel och fosterpåverkan till Janusmed fosterpåverkan 1 januari 2017. Sid 13/152

1.7 Utvecklingsmiljö för integrerande system För att integrera med Sil SOAP API krävs att man använder wsdl-filen för Sil SOAP API. Man kan antingen använda wsdl-filen och generera SOAP-klientstubbar för den utvecklings-miljö och det programmeringsspråk som man utvecklar med eller programmera manuellt mot den. wsdl-filen för Sil SOAP API 4.1 kommer man åt på den URL där man gjort sin installation av Sil-servern med Sil-API. Om man inte har en egen installation av Sil-servern kan man använda wsdl-filen som man kommer åt på demoservern för Sil SOAP API (se nästa avsnitt). 1.8 Demomiljö För att kunna testa sin integration mot Sil API måste man ha åtkomst till en installation av Silservern med Sil SOAP API och en Sil-databas. För initial prototyputveckling och test kan man använda en demoserver med Sil SOAP API 4.1 som är åtkomlig på Internet: http://sil41.demo.silinfo.se För att kunna göra kontrollerade tester och systemtester med Sil SOAP API och sitt journalsystem eller beslutsstödsystem ska man använda en egen kontrollerad installation av Sil-servern med en Sil-databas. För åtkomst till Sils demoserver måste man skicka in en ansökan till Inera om åtkomst till den där man deklarerar ansvarig kontaktperson, syfte med åtkomst samt från vilken eller vilka IPadresser man vill anropa demoservern. Se Sils hemsida för mer information och för en ansökningsblankett. Sid 14/152

1.9 Definitioner Term Amningsgrupp (LIF/FASS) Förklaring LIF/FASS klassificering av ett läkemedels dokumenterade effekt på dibarn under amningsperioden. Följande amningsgrupper finns: I: Passerar ej över i modersmjölk. II: Passerar över i modersmjölk men risk för påverkan på barnet synes osannolik med terapeutiska doser. III: Passerar över i modersmjölk i sådana mängder att risk för påverkan på barnet föreligger även med terapeutiska doser. IVa: Uppgift saknas om passage över i modersmjölk. IVb: Uppgift om passage över i modersmjölk är otillräcklig för att bedöma risken för barnet. För mer information om dessa se: http://www.fass.se/lif/produktfakta/fakta_lakare_artikel.jsp?articleid=18338 Amningsriskklass (SLL/JanusInfo) SLL/JanusInfo klassificering av ett läkemedels dokumenterade effekt på barn under amnings perioden. Följande riskklasser finns: A: Sannolikt kompatibelt med amning. B: Underlag för bedömning saknas. C: Särskilda överväganden och/eller med förbehåll. D: Amning avrådes. För mer information om dessa se: http://www.janusinfo.se/beslutsstod/lakemedel-amning/ Anti-rekommendation En lista med rekommenderade läkemedelsartiklar kan innehålla antirekommendationer i betydelsen att de uttrycker en rekommendation att inte förskriva läkemedelsartikeln (under vissa villkor). Anti-rekommendationer kombineras vanligtvis med en hänvisningsrekommendation till en alternativ nivå 7 ATCkod. Anti-rekommendationer kallas också noll-rekommendationer. ATC-kod FASS-text Graviditetskategori (LIF/FASS) En kod i ATC-systemet som är ett klassifikationssystem för läkemedel som baseras på deras anatomiska, terapeutiska och kemiska egenskaper. Sil innehåller endast de ATC-koder som finns angivna för läkemedelsprodukter i VARA eller som finns angivna för substanser i NSL. ATC-systemet är egentligen avsett att användas för uppföljning och forskning om användning av läkemedel. URL: https://www.whocc.no/atc/structure_and_principles Beskrivning av läkemedelsprodukter som ges ut av LIF. FASS-texten baseras på den läkemedelsproduktens produktresumé (SPC) som är registrerad hos Läkemedelsverket. LIF/FASS klassificering av ett läkemedels dokumenterade effekt på graviditet vid klinisk användning på människor i rekommenderade terapeutiska doser. Följande graviditetskategorier finns: A, B, B:1, B:2, B:3, C, D. För mer information om dessa se: http://www.fass.se/lif/produktfakta/fakta_lakare_artikel.jsp?articleid=18338 Sid 15/152

Term Graviditetsriskklass (SLL/JanusInfo) Handelsnamn Handelsvara Parallellimporterat läkemedel Läkemedelsform Läkemedelsartikel Läkemedelsförpackni ng Läkemedelsprodukt NPL Förklaring SLL/JanusInfo klassificering av ett läkemedels dokumenterade effekt på graviditet vid klinisk användning på människor i rekommenderade terapeutiska doser. Följande gravidtetsriskklasser finns: 1: Läkemedlet kan användas under graviditet utan ökad risk för fostret. 2: Det finns viktig information att ta del av om det här läkemedlet under graviditet. 3: Läkemedlet kan eller misstänks kunna medföra betydande risker för fostret vid användning under graviditet. För mer information om dessa se: http://www.janusinfo.se/beslutsstod/lakemedel-och-fosterpaverkan/ Ett läkemedels försäljningsnamn (produktnamn). Handelsnamn kan både vara registrerade varumärkesnamn ( ) eller ej registrerade varumärkesnamn ( ). I Sil avser termen handelsvara en förskrivningsbar artikel inom förmånen som kan expedieras av apotek men som inte innehåller läkemedel. : Zetuvit E", 25 styck, sterilt absorbationsförband. I Sil SOAP API representeras de av dataobjektet NonDrugArticle. I Sil avser termen "parallellimporterat läkemedel" den gemensamma information som ska gälla för alla läkemedelsprodukter som är parallellimporter till en given läkemedelsprodukt. Parallellimporterade läkemedelsprodukter har typiskt samma unika kombination av handelsnamn, läkemedelsform och styrka men olika ansvariga företag. Ibland kan dock även handelsnamnet skilja sig inom en grupp av parallellimporterade läkemedelsprodukter. Den gemensamma informationen om Parallell-importerade läkemedelsprodukter representeras i Sil SOAP API av dataobjektet Drug och identifieras med drugid. Utformning av bruksfärdigt läkemedel. Läkemedelsformer för invärtes bruk är t.ex. tabletter, dragéer, kapslar och mixturer; för utvärtes bruk t.ex. salvor, krämer, liniment och puder. Beredningsform är en synonym. I Sil är termerna läkemedelsartikel och "läkemedelsförpackning" synonymer och avser en hos Läkemedelsverket registrerad läkemedelsartikel med unikt NPL-packid. Den hör till ett och endast ett distribuerat läkemedel. I Sil SOAP API representeras det av dataobjektet DrugArticle. I Sil avser termen "läkemedelsprodukt" (DistributedDrug) en hos Läkemedelsverket registrerad läkemedelsprodukt med unikt NPL-id. En läkemedelsprodukt har en unik kombination av handelsnamn, läkemedelsform, styrka och ansvarigt företag. Nationellt produktregister för läkemedel (NPL) är ett register som innehåller kvalitetssäkrad information från olika aktörer om samtliga i Sverige godkända läkemedel. Avregistrerade läkemedel, extemporeläkemedel, rikslicenser och beviljade licensläkemedel finns också med i NPL. NPL tillhandahålls av Läkemedelsverket. URL: https://npl.mpa.se Sid 16/152

Term NSL semano VARA Förklaring Nationellt substansregister för läkemedel (NSL) innehåller kvalitetssäkrad information om aktiva substanser och ett urval av hjälpämnen som förekommer i svenska läkemedel, licensläkemedel och lagerberedningar. NSL är en nationell källa för rekommenderade svenska namn på läkemedelssubstanser. Substansregistret innehåller även information om engelskt namn, andra synonymnamn, narkotikaklassning, externa koder och substansernas inbördes relation. NSL tillhandahålls i form av två xml-filer. NSL tillhandahålls av Läkemedelsverket. URL: http://nsl.mpa.se En läkemedelsprodukts svenska godkännandenummer. Fastställs av Läkemedelsverket. VARA är ett nationellt produkt- och artikelregister som tillhandahålls av ehälsomyndigheten. VARA utgör grundregister för informationen som är åtkomlig via Sil SOAP API. I registret finns läkemedel samt de förbrukningsartiklar och livsmedel som ingår i högkostnadsskyddet. Syftet med VARA är att förse vård och apotek med uppdaterad och kvalitetssäkrad information för förskrivning och expedition av recept. VARA baseras i sin tur på NPL. URL: https://www.ehalsomyndigheten.se/tjanster/vara/ Sid 17/152

2. Viktiga förändringar i Sil SOAP API 4.1 Sil SOAP API 4.1 är tekniskt bakåtkompatibelt med Sil SOAP API 4.0. Med detta menas att i ingenting som fanns i den tidigare versionen har tagits bort eller egentligen förändrats (se nedan dock), utan skillnaden handlar uteslutande om saker som lagts till (29 tjänster, 7 objekt och 2 attribut). Detta till trots kan det, speciellt om man använder teknik som inte hanterar wsdl:er dynamiskt, behövas en mindre översyn för att lägga till de nya objekten/tjänsterna/attributen. Även om man tänkt ignorera dem. I vilket fall som helst rekommenderas nya systemtest vid migrering från 4.0 till 4.1. 2.1 Nya källor I Sil version 4.1 har det tillkommit tre nya källor. För info om dessa se respektive kapitel: Rimlighetskontroll (6 tjänster, 2 objekt) Läkemedelsinstruktioner (6 tjänster, 2 objekt) Administreringssätt (5 tjänster, 2 objekt) 2.2 Övriga nya tjänster, objekt och attribut För handelsvaror tillhandahålls numera hierarkiska s k varugrupperingskoder administrerade av TLV och ehälsomyndigheten genom ett nytt objekt (NonDrugGroup) samt 6 nya tjänster: getnondruggroupbycode() getnondruggroupparentsbycode() getnondruggroups() getnondruggroupsbycode() getnondruggroupbycodelist() getnondruggroupbytextsv() Se handelsvarukapitlet för mer info om dessa. I Sil 4.0 togs attributet authors bort från JanusInfoPregnancyDoc-objektet. Motiveringen var brist på källdata, vilket var fel och i 4.1 är attributet tillbaka igen. Utsättningsorsakerna har fått ett tidsbeständigt id-attribut på TreatmentWithdrawalReasonobjektet samt en tjänst att söka m h a sådana: gettreatmentwithdrawalreasonbyid(). Sid 18/152

2.3 Smärre förändringar Några mindre justeringar av befintliga tjänster och objekt har trots bakåtkompatibliteten gjorts och bör nämnas. Det rör sig t ex om förtydliganden av tidigare dokumentation där vi nu bättre beskriver vad exempelvis en tom lista som returvärde betyder (tidigare odefinerat). 2.3.1 Biverkningar Det har tidigare inte funnits något ordentligt sätt att skilja på fallen att det 1) inte finns någon information om biverkningar och 2) det inte finns några (kända) biverkningar. Sil inför nu den möjligheten genom att förtydliga definitionen av attributet SideEffects på objektet SideEffects, en lista med biverkningar för ett visst läkemedel. Är denna lista tom betyder det att det inte finns några (kända) biverkningar. Det andra fallet, det där det inte finns någon information öht, hanteras genom att att de tjänster som returnerar listor med SideEffects-objekt, i dagsläget bara getsideeffectsbynplidlist(), inte returnerar något SideEffects-objekt alls för läkemedel det inte finns någon information om. 2.3.2 Kortnotationer Det har framkommit att det finns vissa problem att schablonmässigt ordinera tf/tm - "till frukost/middag" för läkemedel som ska tas på morgonen/kvällen då en del läkemedel inte skall tas i samband med måltid. Därför har ett beslut tagits att ändra i kortnotationerna. Termen "tf" som tidigare expanderats till "till frukost" tas bort och slutar fungera och ersätts istället med "pm", vilket kommer expandera till "på morgonen". På samma sätt ersätts "tm" ("till middag") med "tk" ("till kvällen"). 2.3.3 Tillgänglighet I tidigare versioner av Sil SOAP API beräknades ett läkemedels tillgänglighet (om det marknadsförs) statiskt, dvs vid Ineras produktion av en ny databas. I version 4.1 beräknas detta dynamiskt, i tjänsteanropsögonblicket. Detta ger mer exakta uppgifter om vilka läkemedel som marknadsförs eller ej. Påverkar alla läkemedelstjänster med flgcurrent som filter. 2.3.4 Interaktioner Sil innehåller från och med denna version information om interaktioner mot läkemedel som saknar NPL/drugid. Detta har gjorts möjligt genom mindre förändringar av objekten DrugInteraction och InteractingPart (det senare nästlat i CompleteInteraction-objekt). Dessa objekt ser ut som tidigare, men för DrugInteractions betyder ett element (till skillnad mot tidigare alltid två) i drugids-attributet att den andra parten saknar NPL-id och för InteractingPart är drugids på liknande sätt tom i den situationen. Sid 19/152

Använder man inte den nya tjänsten getdruginteractionsbydrugidagainstall() riskerar man dock inte att stöta på objekt med dessa tidigare omöjliga listlängder, det är bara genom den man har en ingång till dessa NPL-lösa läkemedel. För mer info, se början av interaktionskapitlet. När vi införde den nya getdruginteractionsbydrugidagainstall() - som är en uppdaterad variant av getinteractionsbydrugidagainstall() - passade vi förresten på att döpa om alla de tjänster (5 st) som börjar med getinteractions... till getdruginteractions... Logiskt då de faktiskt returnerar DrugInteraction-objekt. Bortsett från ovan nämnda förändring fungerar de precis som de gamla, som fortfarande finns kvar, men planeras att tas bort i nästa bakåtinkompatibla version (5.0?). 2.3.5 Beståndsdelar I tidigare versioner av Sil har upptäckts en bug som gör att tjänsten getdistributeddrugcontentsbynplidlist() inte returnerar DistributedDrugContents-objekt som inte har några ingredienser, dvs där attributet ingredients är tomt. Vilket är fallet för exempelvis placebopiller och spädningsvätskor. Buggen är nu rättad och DistributedDrugContents kan ha tom ingredients-lista. Sid 20/152

3. Objektmodell för läkemedelsinformation Sil SOAP API tillhandahåller tjänster för att komma åt information om förskrivningsbara läkemedel och handelsvaror (icke-läkemedelsvaror) inom förmånen. Denna information är tillhandahålls via ett antal tjänster och informationsobjekt som var och en representerar olika förskrivnings- och läkemedelsrelaterade begrepp. För läkemedelsinformation finns tre viktiga objekt; Drug (parallellimporterade läkemedel), DistributedDrug (läkemedelsprodukt) och DrugArticle (läkemedelsartikel). Ett DistributedDrug-objekt representerar en hos Läkemedelsverket registrerad läkemedelsprodukt med unikt NPL-id. Ett DistributedDrug-objekt identifieras med NPL-id och har en unik kombination av handelsnamn, läkemedelsform, styrka och ansvarigt företag. Ett Drug-objekt representerar en grupp parallellimporterade läkemedel. Drug-objekt innehåller den gemensamma information som ska gälla för alla läkemedelsprodukter som är parallellimporter till någon läkemedelsprodukt. Det finns således alltid ett Drug-objekt även för sådana läkemedelsprodukter som saknar faktiska parallellimporter. Nedan ges en översiktlig bild av relationen mellan de grundläggande läkemedelsobjekten Drug, DistributedDrug och DrugArticle samt dess tillhörande, huvudsakliga identifierare. Alla läkemedelsprodukter som ingår i en grupp parallellimporter har vanligtvis samma unika kombination av handelsnamn, läkemedelsform och styrka men olika ansvariga företag. Ibland kan dock handelsnamnet skilja sig inom en grupp av parallellimporterade läkemedelsprodukter. I detta fall har Drug-objektet ett handelsnamn som består av handelsnamnet på originalläkemedelsprodukten följt av tecknet '*'. Drug-objekt innehåller vidare gemensam läkemedelsinformation som gäller för alla läkemedelsprodukterna inom en grupp av parallellimporter. Ett DrugArticle-objekt representerar en hos Läkemedelsverket registrerad läkemedelsartikel med unikt NPL-packid. Den hör till ett och endast ett distribuerat läkemedel. En läkemedelsartikel innehåller oftast en förpackning men den kan innehålla fler förpackningar med olika innehåll, Ett exempel är infusionsvätskor som måste blandas innan de administreras. Sid 21/152

3.1 Sils produkttypsgrupper I Sil finns en gruppering av läkemedelsprodukttyper. Denna gruppering styr vilken information som returneras av en del tjänster i Sil-API. Produkttypsgrupperna är idag: APPROVED. Avser godkända läkemedelsprodukter. Omfattar produkttyperna MEP, ALL, VBL, RAP, NLM, VUM och NIN. NON_APPROVED. Avser ej godkända läkemedelsprodukter. Omfattar produkttyperna APL och LIC. TRADITIONAL. Avser traditionella läkemedelsprodukter. Omfattar produkttypen TVB. 3.2 Tjänster för att söka efter läkemedelsinformation Sökning på läkemedelsinformation i form av Drug-, DistributedDrug- och DrugArticle-objekt kan göras på flera sätt. Det finns tjänster för att söka efter läkemedelsinformation baserat på bl.a. handelsnamn, NPL-id, NPL-packid, ATC text eller kod, NPL substansgruppsnamn, NPL substansnamn samt NPL-substansid. Sid 22/152

3.3 I följande exempel presenteras hur man kan söka efter Drug-objekt (parallellimporter) och DistributedDrug- objekt (läkemedelsprodukter) och hur informationen som returneras ser ut beroende på om det finns parallellimporter eller inte. Syftet med exemplen är att dels visa på hur man kan söka efter information och dels visa hur Drug-objekt förhåller sig till DistributedDrugobjekt för ett par olika fall. I exemplen nedan används programmeringsspråket Python och exemplen har gjorts som interaktiva sessioner med Pythons standardinterpretator 4. För att snabbt komma igång med Sil SOAP-API kan man använda Sils demoserver 5 och Python-modulen suds 6. Med Python och suds kan man interaktivt ansluta sig till Sils demoserver med Sil SOAP API så här: >>> import suds >>> url = "http://sil41.demo.silinfo.se/silapi41/sildb?wsdl" >>> sil = suds.client.client(url) För att se tillgängliga tjänster och datatyper i Sil SOAP-API skriv: >>> print sil För att anropa en specifik tjänst som t.ex. getdistributeddrugsbydistributeddrugtradename kan man skriva: >>> ddrugs = sil.service.getdistributeddrugsbydistributeddrugtradename("aspirin", True, -1) Resultatet av anropet är nu tillgängligt i variabeln ddrugs. För att presentera resultat av anrop i exemplen nedan används Pythons standardfunktion print. 3.3.1 En läkemedelsprodukt utan parallellimporter: Aspirin I detta exempel söker vi efter information om "Aspirin". Det finns endast en läkemedelsprodukt med handelsnamnet "Aspirin" och det finns inga parallellimporter för den läkemedelsprodukten. Således ska det finnas ett DistributedDrug-objekt och ett Drug-Objekt med information om "Aspirin". Sökning efter läkemedelsprodukten "Aspirin" kan göras med följande tjänst för DistributedDrugobjekt: >>> ddrugs = sil.service.getdistributeddrugsbydistributeddrugtradename("aspirin", True, -1) Den andra parametern med värdet True anger att vi enbart vill ha tillgängliga läkemedelsprodukter och den tredje parametern med värdet -1 anger att vi att vi inte vill begränsa vår sökning till någon specifik rekommenderad läkemedelslista. Antalet returnerade DistributedDrug-objekt fås genom att skriva: 4 Exemplen har körts med Python 2.7. 5 Se http:///sil-fordjupning för information om hur man kommer åt Sil demoservrar. 6 Se https://fedorahosted.org/suds/ för information om suds. Sid 23/152

>>> len(ddrugs) 1 Således returnerades bara en läkemedelsprodukt med handelsnamnet "Aspirin", vilket ju var förväntat. Vi kan se på information om denna enda läkemedelsprodukt genom att skriva: >>> print ddrugs[0] (DistributedDrug){ approvaldate = "1935-01-31" containslactosflag = "N" containslatexflag = "N" dosdispflag = "N" dosdisplife = 0 dosdisplifeunit = "Månader" drugformcode = "TABLET" drugformtextsv = "Tablett" drugid = "19350131000010" exportedfromcountrycode = "-" hasantirecommendedarticle = False hasrecommendedarticle = True interchangeableflag = "N" localrepresentative = None marketedflag = "Y" marketedfromdate = None marketingauthholder = "Bayer AB" nplid = "19350131000010" parallelimportdeviation = None parimporiginalid = "19350131000010" productnoteind = None salesstoppedflag = "N" sillactationcode = "M" silpregnancycode = "M" strengthnumeric = 500.0 strengthnumericunit = "mg" strengthtext = "500 mg" tradename = "Aspirin " withdrawaldate = None } Även om inte just denna läkemedelsprodukt har några parallellimporter finns det alltså ett Drugobjekt vilket identifieras av fältet drugid. Detta Drug-objekt representerar alltså den gemensamma information som ska vara samma för alla parallellimporter till "Aspirin" om de funnits! Vi kan hämta denna information i form av ett Drug-objekt genom att använda det drugid som är angivet i DistributedDrug-objektet ovan och använda tjänsten getdrugbydrugid: >>> drug = sil.service.getdrugbydrugid("19350131000010", True, -1) >>> print drug (Drug){ Sid 24/152

controlclasscode = "0" drugclassificationcode = "1" drugformcode = "TABLET" drugformtextsv = "Tablett" drugid = "19350131000010" hasantirecommendedarticle = False hasrecommendedarticle = True interactionstatus = 1 interchangeableflag = "N" pharmaceuticalformgroupid = 0 pharmaceuticalformgroupname = "Ospecificerad" prescribercodes[] = "1", "2", "3", "4", "6", prescriptioncode = "0" producttypecode = "MEP" routeofadministrationcodes[] = "-", strengthgroupid = 0 strengthgroupname = "Ospecificerad" strengthnumeric = 500.0 strengthnumericunit = "mg" strengthtext = "500 mg" substancegroupid = 0 substancegroupname = "Ospecificerad" tradename = "Aspirin" withdrawaldate = None } För att verifiera att det inte finns några parallellimporterade läkemedelsprodukter kan vi använda tjänsten getdistributeddrugsbydrugid: >>> ddrugs = sil.service.getdistributeddrugsbydrugid("19350131000010", True, -1) >>> len(ddrugs) 1 Således finns det alltid ett Drug-objekt för varje läkemedelsprodukt även om den inte har några parallellimporter. Notera också att Drug-objekt innehåller information om läkemedlet som inte finns tillgängligt i DistributedDrug-objekt. 3.3.2 En läkemedelsprodukt med parallellimporter: Stilnoct I detta exempel söker vi efter information om läkemedelsprodukter med handelsnamnet "Stilnoct". Det finns två olika grupper av parallellimporterade läkemedelsprodukter som innehåller handelsnamnet "Stilnoct". Således ska det finnas två Drug-Objekt med information om "Stilnoct". Sökning efter information om parallellimporterade läkemedelsprodukter med handelsnamnet "Stilnoct" görs med följande tjänst för Drug-objekt: Sid 25/152

>>> drugs = sil.service.getdrugsbydistributeddrugtradename("stilnoct", True, -1) >>> len(drugs) 2 Således ser vi att det finns två Drug-objekt som returneras. Det innebär som väntat att det finns två olika grupper med parallellimporterade läkemedelsprodukter som båda innehåller "Stilnoct" i handelsnamnet. För att kunna jämföra dessa två Drug-objekt skriver vi först en liten hjälpfunktion för att skriva ut information om drug-id, handelsnamn, läkemedelsform samt styrka för ett Drug-objekt: >>> def print_drug(drug):... print "%s %s, %s [drugid: %s]" % (... drug['tradename'],... drug['strengthtext'],... drug['drugformtextsv'],... drug['drugid'])... Vi använder hjälpfunktionen för att titta på handelsnamn, styrka, läkemedelsform samt drug-id för de returnerade Drug-objekten: >>> for x in drugs: print_drug(x)... Stilnoct 5 mg, Filmdragerad tablett [drugid: 19940128000057] Stilnoct* 10 mg, Filmdragerad tablett [drugid: 19940128000064] Det sista Drug-objektet har en avslutande asterisk '*' i handelsnamnet. Det innebär att a) det finns minst en läkemedelsprodukt i den gruppen av parallellimporterade läkemedelsprodukter som inte har "Stilnoct" som handelsnamn och b) originalläkemedelsprodukten har handelsnamnet "Stilnoct". Vi kan nu hämta alla läkemedelsprodukter som ingår i den gruppen av parallellimporter med tjänsten: >>> ddrugs = sil.service.getdistributeddrugsbydrugid("19940128000064", True, -1) >>> len(ddrugs) 1 Vi upptäcker då att det bara ingår en läkemedelsprodukt i denna grupp av parallellimporterade läkemedel! Detta beror på att vi har angivit värdet True på den andra parametern i anropet. Det anger att vi bara vill se läkemedelsprodukter för vilka det finns minst en tillgänglig läkemedelsartikel. Om vi istället vill se alla läkemedelsprodukter som ingår i denna grupp av parallellimporter, oavsett om de har tillgängliga läkemedelsartiklar eller inte, ska vi anropa med värdet False: >>> ddrugs = sil.service.getdistributeddrugsbydrugid("19940128000064", False, -1) >>> len(ddrugs) 10 Sid 26/152

För att kunna jämföra dessa tio DistributedDrug-objekt skriver vi först en liten hjälpfunktion för att skriva ut information om handelsnamn, styrka, läkemedelsform, NPL-id, tillgänglighet samt ansvarigt företag (MAH) för ett DistributedDrug-objekt: >>> def print_ddrug(ddrug): print "%s %s, %s, [nplid: %s, (%s), MAH: %s] %s" % ( ddrug['tradename'], ddrug['strengthtext'], ddrug['drugformtextsv'], ddrug['nplid'], ddrug['marketedflag'], ddrug['marketingauthholder'], ddrug['exportedfromcountrycode'])... Om vi använder denna funktion för att skriva ut information om alla tio läkemedelsprodukterna ovan får vi: >>> for x in ddrugs: print_ddrug(x)... Stilnoct 10 mg, Filmdragerad tablett, [nplid: 19940128000064, (Y), MAH: sanofi-aventis AB] - Stilnoct 10 mg, Filmdragerad tablett, [nplid: 19990813000138, (N), MAH: Paranova Läkemedel AB] ESP Stilnoct 10 mg, Filmdragerad tablett, [nplid: 19990827000124, (N), MAH: Paranova Läkemedel AB] PRT Stilnoct 10 mg, Filmdragerad tablett, [nplid: 19990910000048, (N), MAH: Paranova Läkemedel AB] GRC Stilnoct 10 mg, Filmdragerad tablett, [nplid: 19990910000178, (N), MAH: Orifarm AB] GRC Stilnoct 10 mg, Filmdragerad tablett, [nplid: 19991104000257, (N), MAH: Orifarm AB] ESP Stilnoct 10 mg, Filmdragerad tablett, [nplid: 20020614000030, (N), MAH: Paranova Läkemedel AB] ESP Stilnoct 10 mg, Filmdragerad tablett, [nplid: 20020809000043, (N), MAH: Orifarm AB] PRT Stilnox 10 mg, Filmdragerad tablett, [nplid: 20020614000054, (N), MAH: Medartuum AB] ESP Stilnox 10 mg, Filmdragerad tablett, [nplid: 20020719000034, (N), MAH: Medartuum AB] GRC Då ser vi att det bara är en av alla läkemedelsprodukterna som är tillgänglig (vilket indikeras med ett 'Y' inom parentes), dvs. har minst en tillgänglig läkemedelsartikel. Vi ser också att det finns två läkemedelsprodukter som har ett annat handelsnamn än originalläkemedels-produkten, nämligen "Stilnox". Det är därför som Drug-objektet som representerar denna grupp av parallellimporter har en asterisk '*' i slutet av handelsnamnet. Den uppmärksamme läsaren ser att det finns tre parallellimporterade läkemedelsprodukter i listan ovan som har samma handelsnamn, styrka, läkemedelsform och ansvarigt företag (NPLid: 19990813000138, 19990827000124 och 19990910000048). Det som skiljer dem är att de importeras från olika länder (Spanien, Portugal och Grekland). Informationen om vilket land läkemedelsprodukten importeras från finns tillgänglig i fältet exportedfromcountrycode i respektive DistributedDrug- objekt. 3.3.3 Sökning på substanser som börjar med tecknen Ace För att anropa en specifik tjänst som t.ex. getsubstancesbysubstancename kan man för att få alla substanser med substansnamn som börjar med "ace" skriva: >>> subs = sil.service.getsubstancesbysubstancename("ace%") Sid 27/152

Resultatet av anropet är nu tillgängligt i variabeln subs. För att presentera resultat av anrop i kan man använda Pythons standardfunktion print: >>> print subs [(Substance){ casno = "37517-30-9" children[] = "IDE4POEWUAJJEVERT1", nplsubstanceid = "IDE4POEYUAKZYVERT1" substancename = "acebutolol" }, (Substance){ casno = "34381-68-5" nplsubstanceid = "IDE4POEWUAJJEVERT1" parents[] = "IDE4POEYUAKZYVERT1", substancename = "acebutololhydroklorid" }, (Substance){ casno = "89796-99-6" nplsubstanceid = "IDE4POFKUB2F9VERT1" substancename = "aceklofenak" }, (Substance){ casno = "152-72-7" nplsubstanceid = "IDE4POC8U9C4BVERT1" substancename = "acenokumarol" }, (...) Sid 28/152

4. Tjänster Detta kapitel beskriver samtliga tjänster och objekt som ingår i Sil SOAP API. Tjänsterna och den information de returnerar är baserat på strukturen och informationsinnehållet i de datakällor som Sil använder. I designen av API:et har vi försökt att i möjligaste mån ta höjd för framtida förändringar i datakällorna för att åstadkomma ett stabilt tjänstegränssnitt. 4.1 Inledning Tjänsterna och SOAP-objekten beskrivs med en pseudokodssyntax. Exakt hur tjänsterna och SOAP-objekten ser och ska anropas i olika programmeringsspråk och miljöer beror på vilka SOAP-ramverk och WSDL-verktyg som man använder. Utöver grundtyperna string, boolean, integer och float, används en speciell syntax för att indikera listor av SOAP-objekt i form av hakparenteser [ ]. I vissa tjänster där en en inparameter har datatypen string kan man använda ett wildcard-tecken för att göra strängmatchning. Wildcard-tecknet är procenttecknet %. T.ex. kan strängen %alv% innebära att tjänsten, oberoende av versaler och gemener, söker efter alla strängar som innehåller texten alv ). Alla tjänster som har strängar som inparametrar stödjer dock inte wildcardtecken. Det framgår i beskrivningen för varje tjänst om den stödjer wildcard-tecken i inparametersträngar. 4.2 Organisation och layout av beskrivningarna Tjänsterna i Sil SOAP API har grupperats i ett antal olika områden baserat på den information de erbjuder. Tjänsterna i de olika områden beskrivs i separata underkapitel. Alla tjänsterna är dock åtkomliga via samma SOAP service end-point och URL. Varje tjänst och varje typ av SOAP-objekt som kan returneras av tjänsterna beskrivs i ett eget avsnitt i respektive underkapitel. I varje avsnitt som beskriver en tjänst finns ett inledande beskrivning av tjänsten följd av en tabell som beskriver inparametrar, returtyp samt exempel på användning. Här är ett exempel. inpar1: string inpar2: boolean Dataobj1[ ] Beskrivning av inpar1. Beskrivning av inpar2. Lista med Dataobj1-objekt. getdataobj1("exempel", False) returnerar information om alla Dataobj1 som innehåller strängen exempel. Sid 29/152

I varje avsnitt som beskriver ett SOAP-objekt finns ett inledande beskrivning av objektet följd av en tabell som beskriver attributen i SOAP-objektet. Här är ett exempel. Attribut text: string id: int Beskrivning av text. Beskrivning av id. 4.3 Felhantering Felhanteringen i Sil-gränssnittet är implementerad genom att tjänsterna kastar SILExceptions vid felsituationer. Ett SilException består av en kod (errorcode) samt en förklarande text (errormsg). Följande felkoder (errorcode) finns för tillfället: errorcode errormsg 100 Invalid parameter 800 Service returns too many elements 900 Server received an internal error När felsituationer uppstår skickar webbservern felmeddelande till klienten med en <detail> tag, som bl.a. innehåller detta SilException. Ur detta xml-meddelande kan sedan errorcode och errormsg erhållas genom traditionell xml-parsning. Sid 30/152

4.4 ATC-koder Tjänsterna används för att hämta ATC-kodsinformation. ATC-systemet är en hierarkisk klassificering i fem nivåer av läkemedels och substansers anatomiska, terapeutiska och kemiska egenskaper. Nivåerna är numrerade från 1 till 5 där 1 är den högsta nivån. Varje ATC-kod i kodsystemet har en unik kod samt en beskrivande text. I Sil finns bara information om de ATCkoder som finns i VARA och i NSL. Således innehåller inte Sil nödvändigtvis alla ATC-koder i ATC-systemet. Var observant på att inte alla läkemedel inom en ATC kod kan anses som medicinsk likvärdiga. Ett exempel ATC-koden N02AA05 (Oxikodon) som är angiven för läkemedelsprodukter som innehåller oxikodon som förekommer i depotform och som snabbverkande preparat. 4.4.1 getatcsbyatccode Returnerar en lista med de Atc-objekt som har en ATC-kod som matchar den angivna ATCkoden atccode. Listan är sorterad i alfanumerisk ordning på ATC-kodernas värde. atccode: string Atc[ ] En hel eller en del av en ATC-kod. Strängen får vara maximalt åtta (8) tecken långt. Wildcard-tecken '%' är tillåtet i strängen. Lista med Atc-objekt. getatcsbyatccode("c07aa%") returnerar information om alla ATC-koder som börjar med C07AA. 4.4.2 getatcsbytextsv Returnerar en lista med de Atc-objekt som har en beskrivande text som matchar den angivna svenska texten textsv. Listan är sorterad i alfanumerisk ordning på ATC-kodernas värde. textsv: string Atc[ ] Textsträng på svenska. Wildcard-tecken '%' är tillåtet i strängen. Lista med Atc-objekt. getatcsbytextsv("%receptorblockerare%") returnerar information om alla ATC-koder som innehåller strängen receptorblockerare i sin beskrivande text. Sid 31/152