Modul:Kembox/Drugbox Terápia
Kembox/Drugbox Terápia[mi ez?] • [dokumentáció: mutat, ] • [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;