Benutzer:Schnark-Bot/Infobox Krankenhaus

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Umstellung von {{Infobox Krankenhaus}}

(new JSBot('Vorlage:Infobox Krankenhaus')).embeddedin().not(new JSBot('Vorlage:Infobox Krankenhaus'))
.edit(function (t, p) {
	var	text = p.text,
		infobox = mw.libs.Template('Infobox Krankenhaus', text);
	if (infobox === null) {
		return {reason: mw.libs.templateGetLastError()};
	}

	//Staat + Bundesland/Kanton -> Region-ISO
	var	iso_alt = (infobox.getVal('Region-ISO') || '').replace(/<!--.*?-->/g, '').replace(/^\s+|\s+$/g, ''),
		iso_neu = getISO(
			(infobox.getVal('Staat') || '') + (infobox.getVal('Land') || ''),
			(infobox.getVal('Bundesland') || '') + (infobox.getVal('Kanton') || '') + (infobox.getVal('Bundeslang') || '')
		);
	if (iso_alt === iso_neu) {
		p.isook = '';
	} else {
		if (iso_alt.indexOf('-') === -1 && iso_neu !== '') { //neue ist besser als alte
			infobox.change('Region-ISO', iso_neu) || infobox.insert('Region-ISO', iso_neu, 'Staat');
		}
	}
	infobox.remove('Staat');
	infobox.remove('Land');
	infobox.remove('Bundesland');
	infobox.remove('Kanton');
	infobox.remove('Bundeslang');

	//Leitung + Leitungstitel -> Kaufmännische_Leitung + Kaufmännischer_Leitungstitel & Medizinische_Leitung + Medizinischer_Leitungstitel
	var	leiter = infobox.getVal('Leitung') || '',
		titel = infobox.getVal('Leitungstitel') || '',
		k_leiter = '', k_titel = '',
		m_leiter = '', m_titel = '';
	if (titel.indexOf('Ärztliche') > -1 || titel.indexOf('Medizinische') > -1) {
		m_leiter = leiter;
		m_titel = titel;
	} else {
		k_leiter = leiter;
		k_titel = titel;
	}
	infobox.insert('Kaufmännische_Leitung', k_leiter, 'Leitung');
	infobox.insert('Kaufmännischer_Leitungstitel', k_titel, 'Kaufmännische_Leitung');
	infobox.insert('Medizinische_Leitung', m_leiter, 'Kaufmännischer_Leitungstitel');
	infobox.insert('Medizinischer_Leitungstitel', m_titel, 'Medizinische_Leitung');
	infobox.remove('Leitung');
	infobox.remove('Leitungstitel');
	infobox.remove('Geschäftsführer');

	//Nebenbox entfernen, falls ohne Wert
	if ((infobox.getVal('Nebenbox') || '').replace(/<!--.*?-->/g, '').replace(/\s/g, '') === '') {
		infobox.remove('Nebenbox');
	} else {
		infobox.change('Nebenbox', 'x');
	}

	//davon Ärzte -> Ärzte, Zugehörigkeit -> Versorgungsgebiet
	infobox.rename('davon Ärzte', 'Ärzte');
	infobox.rename('Zugehörigkeit', 'Versorgungsgebiet');

	//+ Ambulant, Stationär
	infobox.insert('Ambulant', '');
	infobox.insert('Stationär', '');

	//Website formatieren
	var website = infobox.getVal('Website') || '[';
	if (website.indexOf('[') === -1) {
		if (website.indexOf('www.') === 0) {
			website = 'http://' + website;
		}
		website = '[' + website + ' ' + website.replace(/^https?:(www\.)?/, '').replace(/\/.*$/, '') + ']';
		infobox.change('Website', website);
	}

	//Falschschreibungen
	infobox.rename('Jahresbilanz', 'Jahresetat');
	infobox.rename('Mitarbeiter', 'Mitarbeiterzahl');
	infobox.rename('[[Versorgungsstufe]]', 'Versorgungsstufe');
	infobox.rename('Träger', 'Trägerschaft');
	infobox.rename('Stadt', 'Ort');

	//unbekannte Parameter
	infobox.remove('Studenten');
	infobox.remove('Institutskennzeichen');
	infobox.remove('Anzahl Kliniken');
	infobox.remove('Anzahl Kompetenzzentren');
	infobox.remove('davon Pfleger');
	infobox.remove('davon Professoren');
	infobox.remove('Studentenzahl');
	infobox.remove('Fachabteilungen');

	//sortieren
	infobox.sort([
		'Name',
		'Logo',
		'Logogrösse',
		'Trägerschaft',
		'Ort',
		'Versorgungsgebiet',
		'Breitengrad',
		'Längengrad',
		'Region-ISO',
		'Nebenbox',
		'Medizinische_Leitung',
		'Medizinischer_Leitungstitel',
		'Versorgungsstufe',
		'Ärzte',
		'Fachgebiete',
		'Stationär',
		'Ambulant',
		'Kaufmännische_Leitung',
		'Kaufmännischer_Leitungstitel',
		'Bettenzahl',
		'Mitarbeiterzahl',
		'Jahresetat',
		'Gründungsdatum',
		'Website'
	]);

	//einrücken
	infobox.setIndention(undefined, undefined, undefined, -31);
	infobox.normalize();
	
	if (infobox.validate({
		'Name': {optional: true},
		'Logo': {optional: true},
		'Logogrösse': {optional: true, re: /^(?:|<!--.*-->|\d+px)\s*$/},
		'Trägerschaft': {},
		'Ort': {},
		'Versorgungsgebiet': {},
		'Breitengrad': {re: /^(?:\d\d?\/\d\d?\/\d\d?(?:\.\d+)?\/[NS]|-?\d+(?:\.\d+)?)\s*$/},
		'Längengrad': {re: /^(?:\d\d?\/\d\d?\/\d\d?(?:\.\d+)?\/[WEO]|-?\d+(?:\.\d+)?)\s*$/},
		'Region-ISO': {re: /^[A-Z]+(?:-[A-Z0-9]+)?$/},
		'Nebenbox': {optional: true, re: /^x$/},
		'Medizinische_Leitung': {},
		'Medizinischer_Leitungstitel': {},
		'Versorgungsstufe': {},
		'Ärzte': {},
		'Fachgebiete': {},
		'Stationär': {},
		'Ambulant': {},
		'Kaufmännische_Leitung': {},
		'Kaufmännischer_Leitungstitel': {},
		'Bettenzahl': {},
		'Mitarbeiterzahl': {},
		'Jahresetat': {},
		'Gründungsdatum': {},
		'Website': {re: /http/}
	})) {
		p.valid = '';
	} else {
		p.valid = mw.libs.templateGetLastError();
	}

	return {text: infobox.toString(), summary: 'Bot: Stelle [[Vorlage:Infobox Krankenhaus]] um'};
}/*, 'simulate'*/)
.alert(['#', 'title', 'editOK', 'editStatus', 'isook', 'valid'], botlog);