Modul:Kembox/Drugbox Terápia

Kembox/Drugbox Terápia[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: létrehozás]

local csopfej = "Terápiás előírások"

local boxtbl = {   -- a paraméterek sorrendje és infóboxbeli felirata. Az 1-es sorszám fenntartva csopfej-nek
          licensz              = { 2,  "[[Gyógyszerkészítmények szabályozása|Licenc adat]]" },  -- több értéke lehet
          jogi                 = { 3, "Jogi státusz" },
          terhes               = { 4, "[[Terhességi kategória]]" },
          Dependence_liability = { 5, "Függőségi potenciál" },
          AdminRoutes          = { 6,  "Alkalmazás" },
          }
boxtbl.dependency_liability    = boxtbl.Dependence_liability      -- Drugbox
boxtbl['FüggőségiPot']         = boxtbl.Dependence_liability      -- Gyógyszeresdoboz
boxtbl["routes_of_administration"] = boxtbl.AdminRoutes           -- Drugbox
boxtbl["Alkalmazás"]           = boxtbl.AdminRoutes               -- Gyógyszeresdoboz


local munka = {}    -- { { sorsz, címke }, érték }

local licensz = {}   -- a licenszek értéktáblája: paraméternév, érték
local jogi    = {}   -- jogi státus értéktáblája: paraméternév, érték
local terhes  = {}   -- terhességi kategória értéktáblája: paraméternév, érték

function egysor(nev,ertek)
--                             Egy címkéhez több érték tartozik
    local szimtbl = {    -- többértékű paraméterek nevei: paraméternév, értéktábla
          Licence_EU           = { licensz, "EU" },    -- Chembox_new
          Licence_US           = { licensz, "US" },    -- Chembox_new
          licence_EU           = { licensz, "EU" },    -- Drugbox
          licence_US           = { licensz, "US" },    -- Drugbox
          EUlicenc             = { licensz, "EU" },    -- Gyógyszeresdoboz
          USAlicenc            = { licensz, "US" },    -- Gyógyszeresdoboz
          Legal_status         = { jogi,    "HU" },    -- Chembox_new
          Legal_AU             = { jogi,    "AU" },    -- Chembox_new
          Legal_CA             = { jogi,    "CA" },    -- Chembox_new
          Legal_UK             = { jogi,    "UK" },    -- Chembox_new
          Legal_US             = { jogi,    "US" },    -- Chembox_new
          legal_status         = { jogi,    "HU" },    -- Drugbox
          legal_AU             = { jogi,    "AU" },    -- Drugbox
          legal_CA             = { jogi,    "CA" },    -- Drugbox
          legal_UK             = { jogi,    "UK" },    -- Drugbox
          legal_US             = { jogi,    "US" },    -- Drugbox
          ['JogiStátusz']      = { jogi,    "HU" },    -- Gyógyszeresdoboz
          JogiAU               = { jogi,    "AU" },    -- Gyógyszeresdoboz
          JogiCA               = { jogi,    "CA" },    -- Gyógyszeresdoboz
          JogiUK               = { jogi,    "UK" },    -- Gyógyszeresdoboz
          JogiUS               = { jogi,    "US" },    -- Gyógyszeresdoboz
          PregCat              = { terhes,  "HU" },    -- Chembox_new
          PregCat_US           = { terhes,  "US" },    -- Chembox_new
          PregCat_UK           = { terhes,  "UK" },    -- Chembox_new
          PregCat_AU           = { terhes,  "AU" },    -- Chembox_new
          PregCat_CA           = { terhes,  "CA" },    -- Chembox_new
          pregnancy_category   = { terhes,  "HU" },    -- Drugbox
          pregnancy_US         = { terhes,  "US" },    -- Drugbox
          pregnancy_UK         = { terhes,  "UK" },    -- Drugbox-ból hiányzik
          pregnancy_AU         = { terhes,  "AU" },    -- Drugbox
          pregnancy_CA         = { terhes,  "CA" },    -- Drugbox-ból hiányzik
          ['TerhességKat']     = { terhes,  "HU" },    -- Gyógyszeresdoboz
          ['TerhességUS']      = { terhes,  "US" },    -- Gyógyszeresdoboz
          ['TerhességUK']      = { terhes,  "UK" },    -- Gyógyszeresdoboz-ból hiányzik
          ['TerhességAU']      = { terhes,  "AU" },    -- Gyógyszeresdoboz
          ['TerhességCA']      = { terhes,  "CA" },    -- Gyógyszeresdoboz-ból hiányzik
          }
    local fuggoseg = {
          low = "alacsony",
          medium = "közepes",
          high = "magas",
          ["extremely high"] = "nagyon magas"
          }

    if szimtbl[nev]      -- szimtbl[nev][1] a tábla, aminek szimtbl[nev][2] nevű elemébe kell tenni az értéket
    then    if ertek and #ertek > 0 then szimtbl[nev][1][szimtbl[nev][2]] = ertek end
    elseif boxtbl[nev]    -- a boxtbl tábla (lásd feljebb) az ismert paramétereket és azok sorrendjét tartalmazza
    then    if ( nev == 'Dependence_liability' or nev == 'dependency_liability' ) and fuggoseg[string.lower(ertek)]
            then  str = fuggoseg[string.lower(ertek)]
            else  str = ertek
            end
            if str and #str > 0 then table.insert(munka,{boxtbl[nev],str}) end    -- az üres paramétereket nem írjuk ki
--  else    -- a hívó sablon hibás paramétert kapott a szócikkből
    end
end

--                             A többértékű paraméterek feldolgozása köv.  (egy címke, több értéksor)
function menet2(hivo)
    local tmp           -- mint boxtbl. Minden használat előtt töröljük.

    if next(licensz)           -- licensz adatok
    then  tmp = {}
          tmp[1] = boxtbl.licensz
          i = 2
          for n,v in pairs(licensz)
          do    if n == 'EU'
                then   tmp[i] = '<span class="reflink plainlinks">[http://www.ema.europa.eu/ema/index.jsp?curl=/pages/medicines/landing/epar_search.jsp&murl=menus/medicines/medicines.jsp&searchkwByEnter=true&status=Authorised&searchType=Name&jsenabled=true '..v..']</span> (EU) '
                elseif n == 'US'
                then   tmp[i] = ' <span class="reflink plainlinks">[http://www.accessdata.fda.gov/scripts/cder/drugsatfda/index.cfm?fuseaction=Search.SearchAction&SearchTerm='..v..'&SearchType=BasicSearch '..v..']</span> (USA) '
                else   tmp[i] = v
                end
                i = i+1
          end
          table.insert(munka,tmp)
    end
    if next(jogi)             -- jogi státus
    then  tmp = {}
          tmp[1] = boxtbl.jogi
          i = 2
          for n,v in pairs(jogi)    -- egyelőre csak a magyar értékeket kódoljuk át, a másik négy nyelven később írjuk meg (ha egyáltalán)
          do    if n == "HU" and ( string.upper(v) == 'RX' or v == 'rx-only' or v == 'Rx-only' )
                then   tmp[i] = '[[receptköteles gyógyszer|receptköteles]]'
                else   if hivo == 'Drugbox_new' or hivo == 'Gyógyszeresdoboz' then tmp[i] = v..' ('..n..')' else tmp[i] = v end
                end
                i = i+1
          end
          table.insert(munka,tmp)
    end
    if next(terhes)          -- terhességi kategória
    then  tmp = {}
          tmp[1] = boxtbl.terhes
          i = 2
          for n,v in pairs(terhes)
          do    if string.len(v) > 0 and string.len(v) <= 3
                then   tmp[i] = string.upper(v)..' ('..n..')'
                else   tmp[i] = v
                end
                i = i+1
          end
          table.insert(munka,tmp)
    end
end


-- A munka-beli értékek rendezése és kiírása
local function rendez(hivo)
    local eredm = {}    -- { címke, érték } rendezve

    if next(munka)
    then    -- van megadott paraméter
          local kozos = require("Module:Kembox/kozos")
          eredm[1] = csopfej
          kozos.adatcsoport(munka,eredm)       -- munka rendezése és átmásolása eredm-be
          return kozos.kiir(eredm,hivo)
    end
return ""
end


-- Kívülről is hívható függvények
local p = {}

-- Hívás sablonból
function p.Drugbox_Terapia(frame)
    local hivo  = frame.args['infobox']     -- hívó sablon
    local szulo = frame:getParent()         -- a hívó sablon által kapott paraméterek

    for nev,ertek in szulo:argumentPairs()  -- a paraméterek begyűjtése a licensz, jogi és terhes táblába
    do     egysor(nev,ertek)
    end
    menet2(hivo)                            -- a begyűjtött adatok konvertálása a munka táblába             
    return rendez(hivo)                     -- munka rendezése, átmásolás eredm-be és kiírás
end


-- Hívás modulból
function p.lua(partbl,hivo)
    for nev,ertek in pairs(partbl)
    do    egysor(nev,ertek)
    end
    menet2(hivo)
    return rendez(hivo)
end

return p;