SIL SOAP API 4.0. Tjänstegränssnittsbeskrivning



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

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

SIL SOAP API 4.0. beta prerelease

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

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

Integrationshandledning Produkttypsgrupper

Integrationshandledning Tillgänglighet

Integrationshandledning Licensläkemedel

Verksamhetsmässiga detaljer Sil 5.0

Verksamhetshandledning Rekommenderade läkemedel

Amning och graviditet-fosterpåverkan

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

Verksamhetshandledning för amning och graviditet/fosterpåverkan

Integrationshandledning Licensläkemedel

Integrationshandledning Tillgänglighet

Integrationshandledning Synonymkällan

Integrationshandledning Substanstjänster

Integrationshandledning Substanstjänster

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

Sil 4.2 verksamhetsmässiga detaljer

Janus Läkemedelstjänster - Användarhandledning

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

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

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

Integrationshandledning Rekommenderade läkemedel

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

Integrationshandledning Biverkningsöversikt

Sil 5.0 verksamhetsmässiga detaljer

Integrationshandledning Substanstjänster

Release Sil 4.2 verksamhet & tekniska aspekter

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

Integrationshandledning Sorteringsordning av produkter i Sil

Fass webbtjänster Akut- Fass

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

Ovärderligt! är beroendeframkallande

Tentamen i Introduktion till programmering

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

Integrationshandledning Handelsvaror

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

Identifiering av artiklar

Identifiering av artiklar

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

Integrationshandledning Nationell lista undvik till äldre

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

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

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

SIL SOAP API 4.1. Tjänstegränssnittsbeskrivning

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

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

Integrationshandledning Utsättningsorsaker

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

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

Integrationshandledning APLs produktresuméer

Integrationshandledning Janusmed interaktioner

Versionsnyheter PMO 9.1

Kopiering av objekt i Java

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

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

GATEWAY TJÄNSTEBESKRIVNING. Webbservice. WSDL-fil. Skicka meddelanden. SMS och FastnätsSMS

Integrationshandledning Nationell lista undvik till äldre

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Sätt att skriva ut binärträd

Avsiktsförklaring gällande utökning av beslutsstöd för läkemedel i Sil (Svenska informationstjänster för läkemedel)

PROV. 12 Egenskaper (provavsnitt)

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

Objektsamlingar i Java

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

Snabbguide Visma Compact API Copyright Visma Spcs AB

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

NPL i Hälso och sjukvården

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

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Integrationshandledning Utsättningsorsaker

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

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

Integrationshandledning Handelsvaror

Godkännande av kundapplikationer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen OOP

Classes och Interfaces, Objects och References, Initialization

Receptlära & Läkemedelsförmånerna

Sil - årscykel och aktiviteter 2016

Arrayer (fält)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Remiss Remissvar lämnas i kolumnen Tillstyrkes term och Tillstyrkes def(inition) och eventuella synpunkter skrivs i kolumnen Synpunkter.

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

Delrapport - Uppdrag att förbereda införandet av nya regler för utbyte av läkemedel

16. De olika dokumenttyperna

Pascal - Beskrivning och tjänstespecifika villkor

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Tentamen Grundläggande programmering

Transkript:

SIL SOAP API 4.0 Tjänstegränssnittsbeskrivning

Revisionshistorik Version Författare Kommentar 1.0 (2014-09-30) Paul Cohen Första utgåva. 1.1 (2014-12-17) Paul Cohen Korrigerat beskrivning av text-attributet i FassLactationDoc-objekt (4.13.15). Korrigerat funktionsnamn i exemplet för getstoragesbynplpackidlist (4.8.2). Tagit bort kommentaren För framtida bruk, används ej i nuläget. i beskrivningen av attributen salesrestrictioncodes och marketedfromdate i DrugArticle-objekt (4.7.11), av attributet i marketedfromdate i DistributedDrug-objekt (4.7.11), och av attributet comprefquantitycode i DistributedDrugContent-objekt (4.16.6). Dessa attribut har värden nu. Korrigerat beskrivningen av attributet routeofadministrationcodes i Drug-objekt (4.5.9) samt av attributen routeofadministration och patientinformation i Dosage-objekt så att det står För framtida bruk, används ej i nuläget.. Förtydligat beskrivningen av CompRefQuantity-objekt (4.23.64). Några smärre stiljusteringer av texten i några avsnitt. 1.2 (2015-01-19) Paul Cohen Rättat skrivelse om hur ofta den publicerade SILdatabasen uppdateras i avsnitt 1.2 Allmänt. 1.3 () Erik Heneryd Rättat beskrivningen av getsuperdrugarticlesbynplpackidlist (4.22.9) som hade fått en extra, icke-existerande parameter och fel returtyp. Sid 2/126

Innehåll 1. Inledning... 10 1.1 Avgränsningar... 10 1.2 Allmänt... 10 1.3 Integration... 10 1.4 Drift av SIL-server och uppdatering av SIL-databas... 11 1.5 Datakällor i SIL... 11 1.6 Teknisk lösning... 11 1.7 Utvecklingsmiljö för integrerande system... 12 1.8 Testmiljö... 12 1.9 Definitioner... 13 1.9.1 Vård- och läkemedelsinformatiktermer... 13 1.9.2 Tekniktermer... 15 1.9.3 SIL SOAP API termer... 16 1.10 Stilkonventioner... 16 2. Viktiga förändringar i SIL SOAP API 4.0... 17 2.1 Ändrade objekt... 17 2.2 Nya tjänster och objekt... 19 2.3 Borttagna tjänster och objekt... 19 3. Objektmodell för läkemedelsinformation... 21 3.1 SIL:s 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... 28 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 4.4.7 getatcsbytextsvandlevelinterval... 33 Sid 3/126

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... 37 4.5.3 getdrugbydrugid... 37 4.5.4 getdrugsbydrugidlist... 38 4.5.5 getdrugsbysubstancegroupid... 38 4.5.6 getdrugsbypharmaceuticalformgroupid... 39 4.5.7 getdrugsbystrengthgroupid... 39 4.5.8 getdrugidsbynplidlist... 40 4.5.9 Drug... 40 4.6 Läkemedelsprodukter... 42 4.6.1 getdistributeddrugsbydistributeddrugtradename... 42 4.6.2 getdistributeddrugbynplid... 43 4.6.3 getdistributeddrugsbynplidlist... 43 4.6.4 getdistributeddrugsbydrugid... 44 4.6.5 getdistributeddrugsbydrugidlist... 44 4.6.6 getdistributeddrughistoricalnamesbynplid... 45 4.6.7 getnplidsbydistributeddrughistoricalname... 45 4.6.8 getinterchangeabledistributeddrugsbynplid... 46 4.6.9 getdistributeddrugsbynplsubstanceid... 46 4.6.10 getdistributeddrugsbysubstancename... 47 4.6.11 getunauthoriseddistributeddrugsbysubstancename... 47 4.6.12 getunauthoriseddistributeddrugsbynplsubstanceid... 48 4.6.13 DistributedDrug... 48 4.7 Läkemedelsartiklar... 51 4.7.1 getdrugarticlesbydistributeddrugtradename... 51 4.7.2 getdrugarticlesbydrugid... 52 4.7.3 getdrugarticlesbydrugidlist... 52 4.7.4 getdrugarticlesbynplid... 53 4.7.5 getdrugarticlesbynplidlist... 53 4.7.6 getdrugarticlebynplpackid... 54 4.7.7 getdrugarticlesbynplpackidlist... 54 4.7.8 gethistoricalarticlenosbynplpackid... 55 4.7.9 getnplpackidsbydateadded... 55 Sid 4/126

4.7.10 gettlvexchangesbynplpackidlist... 56 4.7.11 DrugArticle... 56 4.7.12 TlvExchange... 58 4.7.13 ExchangePeriod... 58 4.8 Läkemedelsförvaring... 59 4.8.1 getstoragesbynplpackid... 59 4.8.2 getstoragesbynplpackidlist... 59 4.8.3 Storage... 60 4.9 Läkemedelsformer... 61 4.9.1 getdrugforms... 61 4.9.2 getdrugformbydrugformcode... 61 4.9.3 DrugForm... 62 4.9.4 Dosage... 62 4.10 FASS-texter... 63 4.10.1 getfassdocsbydrugid... 63 4.10.2 getfassdocsbynplid... 63 4.10.3 FassDoc... 63 4.11 Interaktioner... 64 4.11.1 getinteractionsbydrugidagainstall... 64 4.11.2 getinteractionsbydrugidagainstlist... 65 4.11.3 getinteractionswithindrugidlist... 65 4.11.4 getshortinteractionsbyinteractionidlist... 66 4.11.5 getinteractionsbydrugidagainstlistsevclassification... 66 4.11.6 getinteractionswithindrugidlistsevclassification... 67 4.11.7 getcompleteinteractionbyinteractionid... 67 4.11.8 DrugInteraction... 68 4.11.9 ShortInteraction... 68 4.11.10 InteractionSection... 69 4.11.11 CompleteInteraction... 69 4.11.12 InteractingPart... 69 4.11.13 Reference... 69 4.12 Biverkningar... 70 4.12.1 getsideeffectsbynplidlist... 71 4.12.2 getsideeffectfrequencies... 71 4.12.3 getsideeffectsocs... 71 4.12.4 SideEffects... 72 4.12.5 SideEffect... 72 4.13 Graviditets- och amningsvarningar... 73 4.13.1 getsilpregnancylactationwarningsbynplidlist... 73 4.13.2 getwarningclassificationsbycode... 74 4.13.3 getjanusinfolactationdocsbynplidlist... 74 Sid 5/126

4.13.4 getjanusinfopregnancydocsbynplidlist... 75 4.13.5 getfasslactationdocsbynplidlist... 75 4.13.6 getfasspregnancydocsbynplidlist... 76 4.13.7 SILPregnancyLactationWarning... 76 4.13.8 SourceWarning... 76 4.13.9 WarningClassification... 77 4.13.10 JanusInfoLactationDoc... 77 4.13.11 JanusInfoPregnancyDoc... 78 4.13.12 JanusInfoReference... 78 4.13.13 JanusInfoLink... 78 4.13.14 FassPregnancyDoc... 79 4.13.15 FassLactationDoc... 79 4.14 Rekommenderade läkemedel... 80 4.14.1 getvalidregions... 80 4.14.2 getlisttypes... 81 4.14.3 gettherapygroups... 81 4.14.4 getindicationpaths... 82 4.14.5 getindicationpath... 83 4.14.6 getrecommendationsbynplpackidlist... 84 4.14.7 getrecommendationsbytherapygroupindicationname... 85 4.14.8 Region... 85 4.14.9 ListType... 85 4.14.10 TherapyGroup... 86 4.14.11 IndicationPath... 86 4.14.12 Indication... 86 4.14.13 RecommendedListInfo... 87 4.14.14 Recommendation... 87 4.14.15 IdentifierValue... 88 4.14.16 ShortIndication... 88 4.15 Utbytbarhet... 89 4.15.1 getsubstancegroups... 90 4.15.2 getsubstancegroupbysubstancegroupid... 90 4.15.3 getpharmaceuticalformgroups... 90 4.15.4 getpharmaceuticalformgroupbypharmaceuticalformgroupid... 91 4.15.5 getstrengthgroups... 91 4.15.6 getstrengthgroupbystrengthgroupid... 91 4.15.7 SubstanceGroup... 92 4.15.8 PharmaceuticalFormGroup... 92 4.15.9 StrengthGroup... 92 4.16 Ingredienser och substanser... 93 4.16.1 getsubstancesbynplsubstanceidlist... 94 Sid 6/126

4.16.2 getsubstancesbysubstancename... 94 4.16.3 getdistributeddrugcontentsbynplidlist... 95 4.16.4 getdistributeddrugcontentsbynplidlistfiltered... 95 4.16.5 Substance... 96 4.16.6 DistributedDrugContent... 96 4.16.7 Ingredient... 96 4.17 Kortnotationer... 97 4.17.1 getshortencdosagetranslation... 97 4.18 Utsättningsorsaker... 98 4.18.1 gettreatmentwithdrawalreasons... 98 4.18.2 TreatmentWithdrawalReason... 98 4.19 Läkemedelsföretag... 99 4.19.1 getdistributeddrugorganizationsbynplidlist... 99 4.19.2 getdrugarticleorganizationsbynplpackidlist... 99 4.19.3 DistributedDrugOrganizations... 100 4.19.4 DrugArticleOrganizations... 100 4.19.5 RoleOrganization... 100 4.19.6 Organization... 100 4.20 Handelsvaror (icke-läkemedel)... 101 4.20.1 getnondrugarticlesbyarticlename... 101 4.20.2 getnondrugarticlesbyproductgroupcode... 101 4.20.3 getnondrugarticlesbyarticlenolist... 102 4.20.4 NonDrugArticle... 102 4.21 Söktjänster för läkemedelsidentifierare... 103 4.21.1 getnplpackidsbyarticlenolist... 103 4.21.2 getnplidsbysemanolist... 103 4.21.3 getdrugidsbysemanolist... 105 4.21.4 getsemanosbynplidlist... 105 4.21.5 getsemanosbydrugidlist... 106 4.21.6 IdPair... 106 4.22 Tjänster för samlad läkemedelsinformation (supertjänster)... 107 4.22.1 getsuperdrugsbydistributeddrugtradename... 107 4.22.2 getsuperdrugsbydrugidlist... 108 4.22.3 getsuperdrugsbynplidlist... 108 4.22.4 getsuperdrugsbyatccodelist... 109 4.22.5 getsuperdrugsbyatctextsv... 109 4.22.6 getunauthorisedsuperdrugsbydistributeddrugtradename... 110 4.22.7 getunauthorisedsuperdrugsbyatccodelist... 110 4.22.8 getunauthorisedsuperdrugsbyatctextsv... 111 4.22.9 getsuperdrugarticlesbynplpackidlist... 111 4.22.10 SuperDrug... 112 Sid 7/126

4.22.11 SuperDrugArticle... 112 4.23 Referensdatatjänster... 113 4.23.1 getdrugclassifications... 113 4.23.2 getdrugclassificationbycode... 113 4.23.3 getcontrolclasses... 113 4.23.4 getcontrolclassbycode... 114 4.23.5 getrouteofadministrations... 114 4.23.6 getrouteofadministrationbycode... 114 4.23.7 getprescribers... 114 4.23.8 getprescriberbycode... 115 4.23.9 getproducttypes... 115 4.23.10 getproducttypebycode... 115 4.23.11 getprescriptions... 115 4.23.12 getprescriptionbycode... 116 4.23.13 getstrengthnumericunits... 116 4.23.14 getstrengthnumericunitbycode... 116 4.23.15 getorganizationroles... 116 4.23.16 getorganizationrolebycode... 117 4.23.17 getcountries... 117 4.23.18 getcountrybycode... 117 4.23.19 getdosdisplifeunits... 117 4.23.20 getdosdisplifeunitbycode... 118 4.23.21 getpackagetypeinners... 118 4.23.22 getpackagetypeinnerbycode... 118 4.23.23 getpackconditions... 118 4.23.24 getpackconditionbycode... 119 4.23.25 getstoragetemps... 119 4.23.26 getstoragetempbycode... 119 4.23.27 getsalesrestrictions... 119 4.23.28 getsalesrestrictionbycode... 120 4.23.29 getpacksizenumericunits... 120 4.23.30 getpacksizenumericunitbycode... 120 4.23.31 getshelflifeunits... 120 4.23.32 getshelflifeunitbycode... 121 4.23.33 getstorageconditions... 121 4.23.34 getstorageconditionbycode... 121 4.23.35 getingredientroles... 121 4.23.36 getingredientrolebycode... 122 4.23.37 getquantityunits... 122 4.23.38 getquantityunitbycode... 122 4.23.39 getalternativequantityunits... 122 Sid 8/126

4.23.40 getalternativequantityunitbycode... 123 4.23.41 getcomprefquantities... 123 4.23.42 getcomprefquantitybycode... 123 4.23.43 getsilproducttypegroups... 123 4.23.44 DrugClassification... 124 4.23.45 ControlClass... 124 4.23.46 RouteOfAdministration... 124 4.23.47 Prescriber... 124 4.23.48 ProductType... 124 4.23.49 Prescription... 124 4.23.50 StrengthNumericUnit... 124 4.23.51 OrganizationRole... 124 4.23.52 Country... 124 4.23.53 DosdispLifeUnit... 124 4.23.54 PackageTypeInner... 124 4.23.55 PackCondition... 125 4.23.56 StorageTemp... 125 4.23.57 SalesRestriction... 125 4.23.58 PackSizeNumericUnit... 125 4.23.59 ShelfLifeUnit... 125 4.23.60 StorageCondition... 125 4.23.61 IngredientRole... 125 4.23.62 QuantityUnit... 125 4.23.63 AlternativeQuantityUnit... 125 4.23.64 CompRefQuantity... 125 4.24 Versionsinformation... 126 4.24.1 getdataversions... 126 4.24.2 getapiversion... 126 4.24.3 DataVersion... 126 4.24.4 ApiVersion... 126 Sid 9/126

1. Inledning Detta dokument beskriver SIL SOAP API 4.0. 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 verksamhetshandledningar som SIL tillhandahåller. Den senaste versionen av detta dokument finns att hämta på SIL:s 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 SIL Installationsmanual. Se SIL:s hemsida för senaste version av det dokumentet. 1.2 Allmänt SIL SOAP API innehåller 146 read-only tjänster 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å SIL:s 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:///tjanster--projekt/sil/ Sid 10/126

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 testservrar 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 SIL:s 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 SIL:s interna kvalitetssäkringssystem varje vecka. Efter att informationen validerats och granskats skapas sedan en ny SIL-databas som publiceras på SIL:s SFTP-sajt. Källorna som används i SIL 4.0 är VARA (ehälsomyndigheten), NSL (Läkemedelsverket) SFINX (SLL/JanusInfo), FASS (LIF) Amning & graviditetsvarningar (LIF/FASS), Amning & Fosterskador (SLL/JanusInfo), Doseringsregistret (SIL), Utsättningsorsaksregistret (SIL). 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 och Utsättningsorsaksregistret. Vidare finns i SIL 4.0 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. JAX-WS RI ersätter Axis/Java som användes i förra versionen av SIL (3.1). Sid 11/126

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.0 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å testservern för SIL SOAP API (se nästa avsnitt). 1.8 Testmiljö 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 testserver med SIL SOAP API 4.0 som är åtkomlig på Internet: http://sil40.test.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 SILservern med en SIL-databas. För åtkomst till SIL:s testserver 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 testservern. Se SIL:s hemsida för mer information och för en ansökningsblankett. Sid 12/126

1.9 Definitioner 1.9.1 Vård- och läkemedelsinformatiktermer 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 Biverkning Läkemedelsprodukt Eumano Fass-text Klassifikationssystem för läkemedel som baseras på deras anatomiska, terapeutiska och kemiska egenskaper. SIL innehåller endast de ATC-koder för vilka det finns minst en registrerad läkemedelsprodukt hos Läkemedels-verket. Oönskad effekt av ett läkemedel. 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. Det europeiska godkännandenumret för en läkemedelsprodukt vilket fastställs av EMA. Beskrivning av läkemedelsprodukter som ges ut av LIF. FASS-texten baseras på den läkemedelsproduktens produktresumé (SPC) som är registrerad hos Läkemedels-verket. Sid 13/126

Term Graviditetskategori (LIF/FASS) Graviditetsriskklass (SLL/JanusInfo) Handelsnamn Handelsvara Icke-läkemedel Kontrollkod Parallellimporterat läkemedel Läkemedelsform Läkemedelsartikel Läkemedelsvara Läkemedelsförpackning Förklaring 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 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. I SIL är termerna handelsvara och icke-läkemedel synonymer. : Zetuvit E", 25 styck, sterilt absorbationsförband. I SIL SOAP API representeras de av dataobjektet NonDrugArticle. Kod som hänvisar till Läkemedelsverkets receptföreskrifter, vilka anger de villkor som föreligger vid förskrivning för att en viss läkemedelsartikel t.ex. ett narkotikaklassat läkemedel ska kunna expedieras på apoteken. 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äkemedelsvara" synonymer och avser en hos Läkemedelsverket registrerad läkemedelsartikel med unikt NPLpackid. Den hör till ett och endast ett distribuerat läkemedel. I SIL SOAP API representeras det av dataobjektet DrugArticle. Avser en förpackning av ett läkemedel. Vissa läkemedelsartiklar kan innehålla flera läkemedelsförpackningar. Sid 14/126

Term semano Förklaring En läkemedelsprodukts svenska godkännandenummer. Fastställs av Läkemedelsverket. 1.9.2 Tekniktermer Term API SOAP Read-only tjänst Förklaring Application Programming Interface. Programmeringsgränssnitt mot ett program- eller operativsystem. En W3C standard för RPC-baserat API-protokoll. Tidigare stod SOAP för Simple Object Access Protocol. Se: http://www.w3.org/tr/2007/rec-soap12-part1-20070427/ Teknisk tjänst eller funktion som enbart erbjuder möjlighet att hämta eller läsa information men inte att ändra information. Sid 15/126

1.9.3 SIL SOAP API termer Term / Symbol drugid string boolean int float Förklaring Ett id för de dataobjekt i SIL SOAP API som har information om parallell-importerade läkemedel (Drug). Baseras på NPL-id för originalläkemedels-produkten. Anger en textsträng. Anger ett sant eller falskt värde (true eller false). Anger ett heltal. Anger ett decimaltal. [ ] Anger en lista med datavärden eller data-objekt. Y N Strängvärde som anger Yes (ja). Strängvärde som anger No (nej). 1.10 Stilkonventioner Följande fonter har använts i dokumentet. Times New Roman (11pt) för löpande text. Arial (olika fontstorlekar) för rubriker och text i sidhuvud och sidfot. Arial (9pt fetstil) för namn på tjänster, objekt, attribut och grundtyper. Arial (10pt och blå färg) för källkodsexempel. Dokument har skrivits i LibreOffice 3. Sid 16/126

2. Viktiga förändringar i SIL SOAP API 4.0 SIL SOAP API 4.0 är inte tekniskt bakåtkompatibelt med SIL SOAP API 3.1. Förändringarna i SIL SOAP API 4.0 rör dels den tekniska implementationen men också att vissa tjänster och objekt har tagits bort och att vissa objekt har fått attribut borttagna eller fått ändrade attributnamn. Ett par nya tjänster och objekt för att tillhandahålla information om läkemedelsföretag har också lagts till. Dessa förändringar innebär att system som integrerat med SIL SOAP API 3.1 och som är utvecklade med kompilerade språk (som C# och Java) och tillhörande utvecklingsmiljöer måste generera om SOAP klientstubbar och anpassa sin källkod. För system som är utvecklade med interpreterade språk (som Python och Ruby) som erbjuder möjlighet till dynamisk tolkning av wsdl-filer så måste de, även om de inte använder tjänster som berörs av förändringarna, åtminstone verifiera att deras system klarar alla deras system- och integrationstester. Förändringen av teknisk implementation i SIL-API 4.0 är att metoden för WSDL SOAP-binding har ändrats från RPC/encoded till Document/literal wrapped 2. Det har gjorts för att få bättre interoperabilitet med moderna SOAP ramverk som används av integrerande system. Övriga förändringar är att tjänster och objekt som tidigare markerats som utgångna har tagits bort samt att vissa tjänster och objekt fått ändrade namn. Tio (10) objekt har fått förändrade attribut. Fyra (4) nya tjänster och fyra (4) nya objekt har tillkommit. Sexton (16) tjänster och åtta (8) objekt har tagits bort. 2.1 Ändrade objekt Här listas de ändrade objekten. Läsaren hänvisas till relevant kapitel i dokumentet för mer ingående information om varje objekt. DistributedDrug-objekt. Följande ändringar har gjorts i attributen: 1) availabledate har ersatts av marketedfromdate. 2) availableflag har ersatts av marketedflag. 3) procstatusindcode har tagits bort. 4) sildeviationcode har tagits bort. 5) hasantirecommendedarticle har tillkommit. 6) sillactationcode har tillkommit. 7) silpregnancycode har tillkommit. Drug-objekt. Följande ändringar har gjorts i attributen: 1) lactationgroup har tagits bort. 2 För mer information om WSDL SOAP bindings se: http://www.ibm.com/developerworks/library/wswhichwsdl/ Sid 17/126

2) pregnancycategory har tagits bort. 3) sildeviationcode har tagits bort. 4) hasantirecommendedarticle har tillkommit. DrugArticle-objekt. Följande ändringar har gjorts i attributen: 1) barcodesingledose har tagits bort. 2) packsizealphanumeric har tagits bort. 3) productnoteapo har tagits bort. 4) productpropertyapo har tagits bort. 5) availabledate har ersatts av marketedfromdate. 6) availableflag har ersatts av marketedflag. 7) eancode har ersatts av barcode. 8) lfnpriceaupprescription har ersatts av aup. 9) sildeviationcode har tagits bort. 10) isreimbursed har tillkommit. DistributedDrugContent-objekt. Följande ändringar har gjorts. 1) comptotweightvol har tagits bort. 2) comptotweightvolunitcode har tagits bort. DrugForm-objekt. Följande ändringar har gjorts. 1) drugformgroupnamesv har tagits bort. Ingredient-objekt. Följande ändringar har gjorts. 1) quantitymax har tagits bort. ExchangePeriod-objekt. Följande ändringar har gjorts. 1) rank har tillkommit. 2) aipperunit har tillkommit. 3) aupperunit har tillkommit. JanusInfoLactationDoc-objekt. Följande ändringar har gjorts. 1) atccodegroup har tagits bort. 2) authors har tagits bort. JanusInfoPregnancyDoc-objekt. Följande ändringar har gjorts. 1) authors har tagits bort. NoneDrugArticle-objekt har fått ändrat namn till NonDrugArticle och följande ändringar har gjorts: Sid 18/126

1) isdiscounted har ersatts av isreimbursed. 2) articlegroupcode har ersatts av productgroupcode. 3) sellingprice har tagits bort. 4) aup har tillkommit. 5) productdescription har tillkommit. 2.2 Nya tjänster och objekt Följande fyra (4) tjänster har tillkommit. getdistributeddrugorganizationsbynplidlist getdrugarticleorganizationsbynplpackidlist getnondrugarticlesbyproductgroupcode getunauthoriseddistributeddrugbynplsubstanceid Följande fyra (4) objekt har tillkommit. DistributedDrugOrganizations-objekt DrugArticleOrganizations-objekt Organization-objekt RoleOrganization-objekt 2.3 Borttagna tjänster och objekt Följande sexton (16) tjänster har tagits bort. getdrugidshasantirecommendedarticlebydrugidlistregionid getnplidshasantirecommendedarticlebynplidlistregionid getlactationgroupinfos getlactationgroupinfosbygroup getnonedrugarticlesbyarticlegroupcode getpregnancycategoryinfos getpregnancycategoryinfosbycategory getprocstatusbycode getprocstatuses getrecommendlistsbyregionid getrecommendsbynplpackidlistregionidlisttypes Sid 19/126

getrecommendsbytherapygroupindicationnameregionidlisttypes getcomptotweightvolunitbycode getcomptotweightvolunits getsildeviationbycode getsildeviations Följande 8 (åtta) objekt har tagits bort. Indic-objekt ProcStatus-objekt SilDeviation-objekt Recommend-objekt RecommendList-objekt LactationGroupInfo-objekt PregnancyCategoryInfo-objekt CompTotWeightVolUnit-objekt Sid 20/126

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/126

3.1 SIL:s 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/126

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 3. För att snabbt komma igång med SIL SOAP-API kan man använda SIL:s testserver 4 och Python-modulen suds 5. Med Python och suds kan man interaktivt ansluta sig till SIL:s testserver med SIL SOAP API så här: >>> import suds >>> url = "http://sil40.test.silinfo.se/silapi40/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 3 Exemplen har körts med Python 2.7. 4 Se http:///tjanster--projekt/sil/inforandestod-sil/anslutning-/ för information om hur man kommer åt SIL testservrar. 5 Se https://fedorahosted.org/suds/ för information om suds. Sid 23/126

sökning till någon specifik rekommenderad läkemedelslista. Antalet returnerade DistributedDrug-objekt fås genom att skriva: >>> 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: Sid 24/126

>>> drug = sil.service.getdrugbydrugid ("19350131000010", True, -1) >>> print drug (Drug){ 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 Sid 25/126

innehåller handelsnamnet "Stilnoct". Således ska det finnas två Drug-Objekt med information om "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: >>> 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 Sid 26/126

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 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 Sid 27/126

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%") 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" },... Sid 28/126

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/126

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, se nedan. Ur detta xml-meddelande kan sedan errorcode och errormsg erhållas genom traditionell xml-parsning. Sid 30/126

4.4 ATC-koder Tjänsterna används för att hämta ATC-kodsinformation. ATC-klassificeringen ä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 klassificeringen har en unik kod samt en beskrivande text. I SIL finns bara information om de ATC-koder som används för registrerade läkemedelsprodukter i Sverige. Således innehåller inte SIL nödvändigtvis alla ATC-koder i ATC-klassificeringen. 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/126

4.4.3 getatcsbydrugid Returnerar en lista med de Atc-objekt som är registrerade för de parallellimporter som identifieras med angivet drugid. Listan är sorterad i alfanumerisk ordning på ATC-kodernas värde. drugid: string Atc [ ] drugid för ett Drug-objekt. Lista med Atc-objekt. getatcsbydrugid ("19350131000010") returnerar information om alla ATC-koder för Drug-objektet med drugid "19350131000010". 4.4.4 getatcnarrowersbyatccode Returnerar en lista med de Atc-objekt som är hierarkiskt underordnade den angivna ATC-koden atccode. Listan är sorterad i alfanumerisk ordning på ATC-kodernas värde. atccode: string Atc [ ] En ATC-kod. Strängen får vara maximalt åtta (8) tecken långt. Lista med Atc-objekt. getatcsnarrowersbyatccode ("C07AA") returnerar information om alla ATC-koder som ligger under ATC-koden "C07AA". 4.4.5 getatcwiderbyatccode Returnerar det Atc-objekt som är hierarkiskt överordnat den angivna ATC-koden atccode. atccode: string Atc En ATC-kod. Strängen får vara maximalt åtta (8) tecken långt. Ett Atc-objekt. getatcswiderbyatccode ("C07AA") returnerar information om den ATC-kod som ligger över ATC-koden "C07AA". Sid 32/126

4.4.6 getatcsbyatccodeandlevelinterval Returnerar en lista med de Atc-objekt som matchar den angivna ATC-koden AtcCode och som är på en hierarkiskt nivå i ATC-klassificeringen mellan nivåerna levelhigh och levellow. atccode: string levelhigh: int levellow: int Atc [ ] En ATC-kod. Strängen får vara maximalt åtta (8) tecken långt. Wildcard-tecken '%' är tillåtet i strängen. En nivå i ATC-klassificeringen. En nivå i ATC-klassificeringen. Lista med Atc-objekt. getatcsbyatccodeandlevelinterval ("C07AA", 2, 4) returnerar information om alla ATC-koder som börjar med C07AA och som är mellan nivå 2 och 4. 4.4.7 getatcsbytextsvandlevelinterval Returnerar en lista med de Atc-objekt som har en beskrivande text som matchar den angivna svenska texten textsv och som är på en hierarkiskt nivå i ATC-klassificeringen mellan nivåerna levelhigh och levellow. textsv: string levelhigh: int levellow: int Atc [ ] Textsträng på svenska. Wildcard-tecken '%' är tillåtet i strängen. En nivå i ATC-klassificeringen. En nivå i ATC-klassificeringen. Lista med Atc-objekt. getatcsbytextsvcodeandlevelinterval ("%receptorblockerare%", 2, 4) returnerar information om alla ATC-koder innehåller strängen receptorblockerare i sin beskrivande text och som är mellan nivå 2 och 4. Sid 33/126

4.4.8 getatcsbylevel Returnerar en lista med de Atc-objekt som finns på den angivna nivån level i ATCklassificeringen. level: int Atc [ ] En nivå i ATC-klassifieringen. Lista med Atc-objekt. getatcsbylevel (1) returnerar information om alla ATC-koder som är på nivå 1. 4.4.9 getatcsbyatccodelist Returnerar en lista med de Atc-objekt för de angivna ATC-koderna atccodes. atccodes: string [ ] Atc [ ] Lista med ATC-koder. Lista med Atc-objekt. getatcsbyatccodelist ([ A01, A02 ]) returnerar information om de ATC-koderna A01 och A02. 4.4.10 getdrugatccodesbydrugidlist Returnerar en lista med de DrugAtcCode-objekt som har ATC-koder som är registrerade för läkemedelsprodukter med angivna drugids. drugids: string [ ] DrugAtcCode [ ] Lista med drugids. Lista med DrugAtcCode-objekt. getdrugatccodesbydrugidlist ([ 20040916001900, 2010070900005 ]) returnerar information om de ATC-koder som är registrerade för läkemedelsprodukterna med drugid 20040916001900 och 2010070900005. Sid 34/126