:root{
–brand:#00857C;
–ink:#0C2340;
–bg:#F7F7F7;
–ok:#6ECEB2;
–err:#b30000;
–card:#fff;
}
body{ background:#fafafa; color:var(–ink); font-family:Arial, Helvetica, sans-serif; }
.msd-fmv-container{
max-width: 560px;
margin: 32px auto;
padding: 24px;
background: var(–bg);
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0,0,0,0.07);
}
.msd-fmv-label{
display:block;
margin: 12px 0 6px;
font-weight:bold;
color:var(–ink);
}
.msd-fmv-select, .msd-fmv-input, .msd-fmv-button{
width:100%;
padding:10px 12px;
margin:0 0 14px;
border-radius:6px;
border:1px solid var(–brand);
font-size:1em;
background:#fff;
color:var(–ink);
box-sizing:border-box;
}
.msd-fmv-input[readonly]{ background:#f4f8f8; }
.inline{
display:flex; gap:12px; align-items:flex-end;
}
.inline > div{ flex:1; }
.msd-fmv-button{
background:var(–brand);
color:#fff;
border:none;
cursor:pointer;
font-weight:bold;
transition:background .2s;
}
.msd-fmv-button:hover, .msd-fmv-button:focus{ background:var(–ink); }
.msd-fmv-result{
background:var(–ok);
color:var(–ink);
padding:16px;
border-radius:8px;
margin-top:12px;
font-size:1.1em;
font-weight:bold;
box-shadow:0 1px 4px rgba(0,0,0,0.05);
display:none;
}
.msd-fmv-error{
background:#fff3f3;
color:var(–err);
padding:14px;
border-radius:8px;
margin-top:12px;
font-size:1.05em;
font-weight:bold;
border:1px solid var(–err);
display:none;
}
.msd-fmv-note{
margin-top:18px;
font-size:.95em;
color:var(–ink);
background:var(–bg);
border-left:4px solid var(–brand);
padding:10px 16px;
border-radius:6px;
}
.msd-fmv-definitions{
max-width: 780px;
margin: 28px auto 48px;
background: var(–card);
border-radius:10px;
padding: 18px 20px;
border-left:5px solid var(–brand);
color:var(–ink);
font-size:.97em;
line-height:1.6;
box-shadow:0 2px 8px rgba(0,0,0,0.04);
}
.msd-fmv-definitions h3{
color:var(–brand);
margin-top:0; margin-bottom:10px; font-size:1.1em;
}
.msd-fmv-definitions ul{ margin:0 0 10px 20px; padding:0; }
.msd-fmv-definitions li{ margin-bottom:6px; }
.desc{
background:#fff; border-left:4px solid var(–brand); padding:12px; border-radius:6px;
font-size:.95em; margin:-6px 0 10px; display:none;
}
MSD FMV Calculator for KOLs (2025, v2)
Select country
Czech Republic
Slovakia (converted from CZ at current CZK→EUR rate)
Poland
Hungary
Romania
Select activity type
National Event
Regional Event
Local Event
Original Article
Editing of articles/Round up Article
Elaboration of educational program
Webinar – Complex
Webinar – Simple
Select length
1+ hour (+10%)
2+ hours (+20%)
3+ hours (+30%)
Select KOL level
Internationally Recognized
National KOL
Regional Expert
Local Expert
Definitions and Notes
- National KOL: Top-tier recognized specialist, affiliated with major research centers, member of international/national associations, well-published in major journals.
- Internationally Recognized: Expert opinion in the international community, international publications.
- Regional Expert: Recognized nationally, presidents of medical societies, university professors or lecturers.
- Local Expert: Community-based specialist, expert opinion at a local level.
- Honoraria Rules: Minimum duration of a speaking event is 30 minutes. Honoraria includes time spent for preparation, study, speaking, and travel. If the presentation is longer or if more preparation is needed, up to additional 30% can be paid on top of the mentioned rates.
- Currency Notes: Rates are in local currency and represent maximum rates per activity. Lower rates can be applied where justified. For Slovak Republic, the same rates apply, converted into EUR at the current exchange rate.
- Overreaching of the maximum time of presentation: For in person events the price can be increased by 10% for 1+ hour, 20% for 2+ hours, and 30% for 3+ hours (max 180 minutes). For longer presentations or out of scope cooperations, additional approval by Compliance Steward, Business Unit Director and Regional Director is required.
Types of activities
- National Event: Speaking at national congresses, conferences, or satellite symposiums; chairing or moderating sessions; conducting workshops or scientific seminars. Minimum duration: 30 minutes. Honoraria includes preparation, speaking, and travel time.
- Regional Event: Speaking, chairing, or moderating at regional congresses, conferences, workshops, or seminars. Follows the same rules as national events regarding minimum duration and honoraria coverage.
- Local Event: Speaking or chairing at local professional events, such as community-based seminars, workshops, or meetings. Follows the same rules as above for minimum duration and honoraria.
- Original Article: Preparing an original scientific or educational article for publication or internal use. Payment covers research, writing, and any necessary revisions.
- Editing of articles/Round up Article: Preparing a round-up article (summary of multiple sources or events) or editing existing articles for clarity, accuracy, and compliance. Payment covers review, editing, and synthesis work.
- Elaboration of educational program: Developing an educational program, including creating materials (text or slides) based on attended events or new research. Payment covers curriculum design, content creation, and adaptation for target audiences.
- Webinar – Complex: Delivering or moderating a webinar that involves advanced scientific content, multiple speakers, interactive elements, or significant preparation. Payment includes time for preparation, delivery, and post-event follow-up.
- Webinar – Simple: Delivering or moderating a webinar with straightforward content, limited interaction, and minimal preparation required. Payment covers basic preparation and delivery time.
// —- Data (rates) —-
// CZK, PLN, HUF, RON as per your grid. SK derived from CZ via CZK→EUR rate.
const FMV_TABLE = {
„Czech Republic”: {
„National Event”: { „Internationally Recognized”: 34900, „National KOL”: 29500, „Regional Expert”: 24200, „Local Expert”: 20100 },
„Regional Event”: { „Internationally Recognized”: 34900, „National KOL”: 29500, „Regional Expert”: 24200, „Local Expert”: 20100 },
„Local Event”: { „Internationally Recognized”: 34900, „National KOL”: 29500, „Regional Expert”: 24200, „Local Expert”: 20100 },
„Original Article”: { „Internationally Recognized”: 34900, „National KOL”: 29500, „Regional Expert”: 24200, „Local Expert”: 20100 },
„Editing of articles/Round up Article”: { „Internationally Recognized”: 24200, „National KOL”: 20100, „Regional Expert”: 18800, „Local Expert”: 12000 },
„Elaboration of educational program”: { „Internationally Recognized”: 34900, „National KOL”: 29500, „Regional Expert”: 24200, „Local Expert”: 20100 },
„Webinar – Complex”: { „Internationally Recognized”: 27900, „National KOL”: 23600, „Regional Expert”: 19300, „Local Expert”: 16100 },
„Webinar – Simple”: { „Internationally Recognized”: 24200, „National KOL”: 20100, „Regional Expert”: 18800, „Local Expert”: 12000 }
},
„Poland”: {
„National Event”: { „Internationally Recognized”: 7500, „National KOL”: 5500, „Regional Expert”: 5500, „Local Expert”: 4500 },
„Regional Event”: { „Internationally Recognized”: 7500, „National KOL”: 5500, „Regional Expert”: 5500, „Local Expert”: 4500 },
„Local Event”: { „Internationally Recognized”: 7500, „National KOL”: 5500, „Regional Expert”: 5500, „Local Expert”: 4500 },
„Original Article”: { „Internationally Recognized”: 7500, „National KOL”: 5500, „Regional Expert”: 5500, „Local Expert”: 4500 },
„Editing of articles/Round up Article”: { „Internationally Recognized”: 3600, „National KOL”: 2600, „Regional Expert”: 3600, „Local Expert”: 2700 },
„Elaboration of educational program”: { „Internationally Recognized”: 7500, „National KOL”: 5500, „Regional Expert”: 5500, „Local Expert”: 4500 },
„Webinar – Complex”: { „Internationally Recognized”: 6000, „National KOL”: 4400, „Regional Expert”: 4400, „Local Expert”: 3600 },
„Webinar – Simple”: { „Internationally Recognized”: 3600, „National KOL”: 2600, „Regional Expert”: 3600, „Local Expert”: 2700 }
},
„Hungary”: {
„National Event”: { „Internationally Recognized”: 311000, „National KOL”: 215000, „Regional Expert”: 260000, „Local Expert”: 210000 },
„Regional Event”: { „Internationally Recognized”: 311000, „National KOL”: 215000, „Regional Expert”: 260000, „Local Expert”: 210000 },
„Local Event”: { „Internationally Recognized”: 311000, „National KOL”: 215000, „Regional Expert”: 260000, „Local Expert”: 210000 },
„Original Article”: { „Internationally Recognized”: 311000, „National KOL”: 240000, „Regional Expert”: 260000, „Local Expert”: 210000 },
„Editing of articles/Round up Article”: { „Internationally Recognized”: 173000, „National KOL”: 120000, „Regional Expert”: 173000, „Local Expert”: 145000 },
„Elaboration of educational program”: { „Internationally Recognized”: 311000, „National KOL”: 240000, „Regional Expert”: 260000, „Local Expert”: 210000 },
„Webinar – Complex”: { „Internationally Recognized”: 248000, „National KOL”: 172000, „Regional Expert”: 184000, „Local Expert”: 150000 },
„Webinar – Simple”: { „Internationally Recognized”: 173000, „National KOL”: 120000, „Regional Expert”: 60000, „Local Expert”: 145000 }
},
„Romania”: {
„National Event”: { „Internationally Recognized”: 7000, „National KOL”: 6000, „Regional Expert”: 5000, „Local Expert”: 4000 },
„Regional Event”: { „Internationally Recognized”: 7000, „National KOL”: 6000, „Regional Expert”: 5000, „Local Expert”: 4000 },
„Local Event”: { „Internationally Recognized”: 7000, „National KOL”: 6000, „Regional Expert”: 5000, „Local Expert”: 4000 },
„Original Article”: { „Internationally Recognized”: 7000, „National KOL”: 6000, „Regional Expert”: 5000, „Local Expert”: 4000 },
„Editing of articles/Round up Article”: { „Internationally Recognized”: 3600, „National KOL”: 3000, „Regional Expert”: 2750, „Local Expert”: 2500 },
„Elaboration of educational program”: { „Internationally Recognized”: 7000, „National KOL”: 6000, „Regional Expert”: 4450, „Local Expert”: 4000 },
„Webinar – Complex”: { „Internationally Recognized”: 4100, „National KOL”: 3800, „Regional Expert”: 2500, „Local Expert”: 2250 },
„Webinar – Simple”: { „Internationally Recognized”: 3600, „National KOL”: 3400, „Regional Expert”: 2250, „Local Expert”: 2100 }
}
};
const CURRENCY = {
„Czech Republic”: „CZK”,
„Slovakia”: „EUR”,
„Poland”: „PLN”,
„Hungary”: „HUF”,
„Romania”: „RON”
};
const IN_PERSON = new Set([„National Event”,”Regional Event”,”Local Event”]);
const ACTIVITY_DESCRIPTIONS = {
„National Event”: „Speaking at national congresses, conferences, or satellite symposiums; chairing or moderating sessions; conducting workshops or scientific seminars. Minimum duration: 30 minutes. Honoraria includes preparation, speaking, and travel time.”,
„Regional Event”: „Speaking, chairing, or moderating at regional congresses, conferences, workshops, or seminars. Follows the same rules as national events regarding minimum duration and honoraria coverage.”,
„Local Event”: „Speaking or chairing at local professional events, such as community-based seminars, workshops, or meetings. Follows the same rules as above for minimum duration and honoraria.”,
„Original Article”: „Preparing an original scientific or educational article for publication or internal use. Payment covers research, writing, and any necessary revisions.”,
„Editing of articles/Round up Article”: „Preparing a round-up article (summary of multiple sources or events) or editing existing articles for clarity, accuracy, and compliance. Payment covers review, editing, and synthesis work.”,
„Elaboration of educational program”: „Developing an educational program, including creating materials (text or slides) based on attended events or new research. Payment covers curriculum design, content creation, and adaptation for target audiences.”,
„Webinar – Complex”: „Delivering or moderating a webinar that involves advanced scientific content, multiple speakers, interactive elements, or significant preparation. Payment includes time for preparation, delivery, and post-event follow-up.”,
„Webinar – Simple”: „Delivering or moderating a webinar with straightforward content, limited interaction, and minimal preparation required. Payment covers basic preparation and delivery time.”
};
// —- UI helpers —-
function toggleLengthDropdown(){
const type = document.getElementById(’activityType’).value;
const div = document.getElementById(’lengthDiv’);
const lenSel = document.getElementById(’presentationLength’);
if (IN_PERSON.has(type)) {
div.style.display = 'block’;
} else {
div.style.display = 'none’;
lenSel.value = ”;
}
}
function toggleExchangeField(){
const country = document.getElementById(’country’).value;
const ex = document.getElementById(’exchangeDiv’);
ex.style.display = (country === 'Slovakia’) ? 'flex’ : 'none’;
}
function renderActivityDescription(){
const type = document.getElementById(’activityType’).value;
const el = document.getElementById(’activityDesc’);
if (type && ACTIVITY_DESCRIPTIONS[type]){
el.textContent = ACTIVITY_DESCRIPTIONS[type];
el.style.display = 'block’;
} else {
el.textContent = ”;
el.style.display = 'none’;
}
}
function formatMoney(value, currency){
return new Intl.NumberFormat(undefined, { maximumFractionDigits: 0 }).format(Math.round(value)) + ’ ’ + currency;
}
function showError(msg){
const e = document.getElementById(’fmvError’);
e.textContent = msg;
e.style.display = 'block’;
document.getElementById(’fmvResult’).style.display = 'none’;
}
function showResult(msg){
const r = document.getElementById(’fmvResult’);
r.textContent = msg;
r.style.display = 'block’;
document.getElementById(’fmvError’).style.display = 'none’;
}
// —- Core calculation —-
function getBaseRate(country, activityType, kolLevel){
if (country !== 'Slovakia’){
return FMV_TABLE?.[country]?.[activityType]?.[kolLevel] ?? null;
}
// Slovakia: use CZ values and convert via current CZK→EUR
const czRate = FMV_TABLE?.[’Czech Republic’]?.[activityType]?.[kolLevel];
const czkPerEur = parseFloat(document.getElementById(’czkPerEur’).value) || 25;
if (!czRate || czkPerEur <= 0) return null;
return czRate / czkPerEur; // rounded later
}
function calculateFMV(){
const country = document.getElementById('country').value;
const activityType = document.getElementById('activityType').value;
const kolLevel = document.getElementById('kolLevel').value;
const lengthVal = document.getElementById('presentationLength').value;
// Validation
if (!country) return showError('Please select a country.');
if (!activityType) return showError('Please select a type of activity.');
if (!kolLevel) return showError('Please select a KOL level.');
if (IN_PERSON.has(activityType) && !lengthVal) return showError('Please select the length of presentation for in-person events.');
const base = getBaseRate(country, activityType, kolLevel);
if (base == null) return showError('No rate found for the selected combination. Please review your selections.');
let adjusted = base;
if (IN_PERSON.has(activityType)){
// Total uplift mapping for 1+/2+/3+: +10% / +20% / +30%
const multiplierMap = { '1': 1.10, '2': 1.20, '3': 1.30 };
adjusted = base * (multiplierMap[lengthVal] || 1.00);
}
const currency = CURRENCY[country] || '';
const pretty = formatMoney(adjusted, currency);
// Friendly recap
let recap = `Maximum FMV: ${pretty}`;
recap += ` — ${country} • ${activityType}`;
if (IN_PERSON.has(activityType) && lengthVal) {
const label = lengthVal==='1' ? '1+ hour' : (lengthVal==='2' ? '2+ hours' : '3+ hours');
recap += ` • ${label}`;
}
recap += ` • ${kolLevel}`;
showResult(recap);
}
