#
#	ITSV GmbH
#	CCDB - Command and Control Database
#
#	FILE:			dquerymfile_CFcountSVT2class.txt
#	DESCRIPTION:	DQUERY-Definition for CCDB-Query CFcountSVT2class
#					this query reports counts over all SVTs and per-SVT for CF urgent / non urgent / total Meldungen
#
@querytitle			Anzahl Clearingfälle alle ÖGK-Landesstellen / per SVT mit/ohne Evidenz im Verhältnis zu Anzahl Meldungen
@querydescription	Berichtet AlleMeldungen/MeldungenMit ClearingfällenMit Evidenz/OhneEvidenz über alle SVT und perSVT
@attributenames		svt:gkkInclAll
@group				SVCLCFSTATMVBRFAUSW
@querytype			function
@function			seqtrans.seqtrans
@formpagetitle		Träger für Clearingfall-Auswertung auswählen
@input_mode			INIT
@init.qexpression
	this.inputresult = new aux.Result({ resulttype: 'dbresult', metaData: [{name: 'svt'}], rows: [[this.query.svt]]});

~query.tsteps

#
# <<TSTEPNUM:0>>: initialize
#
if 		(this.init_done)
goto	init_complete

#
# <<TSTEPNUM:1>>: initialize
#
qexpression
	proc: {
		copycvars(this,"svt");
		this.tabname = "CCMVBRFAUSW";
		this.init_done = true;
	}

#
# <<TSTEPNUM:2>>: check if svt is known
#
init_complete:
pre_qexpression
	if (this.svt=="@G") { /* all ÖGK-Landesstellen (formerly GKKs) */
		this.svtsql = "select * from CCVSVT where MST BETWEEN 11 and 19";
		this.filtwc = "";
		this.filtsrf= "";
		this.filtws = "";
	} else {
		this.svtsql = "select * from CCVSVT where MST=::svt::";
		this.filtws = " and TRAEGER='"+this.svt+"'";
		this.filtsrf= " and srf.TRAEGER='"+this.svt+"'";
		this.filtwc = "WHERE TRAEGER='"+this.svt+"'";
	}
sql				@@svtsql@@
named_params	svt
result_varname	svtres
post_qexpression
	if (this.svtres.getRowCount()<1) {
		this.errcoll.collect(null,"SVT "+this.svt+" is not known in CCVSVT");
	}

#
# <<TSTEPNUM:3>>: inform about restrictions
#
introtext
	<p>Diese Auswertung beinhaltet Daten eines begrenzten Zeitraums. Derzeit wird daran gearbeitet, Daten über einen längeren Zeitraum für solche Auswertungen heranziehen zu können.</p>
	<p>Nicht für alle Monate liegen vollständige Daten vor. Aus diesem Grunde sind die Gesamt-Anzahlen für nicht-komplette Monate kleiner und damit auch die anteiligen Zahlen</p>
	<p>Per 06.11.2019 sind die Daten für Oktober 2019 weitestgehend komplett</p>
	<p>Aus systematischen Gründen fehlen aktuell für alle Tage, an denen keine TEV des STP-MVB läuft (Samstag, Sonntag, Feiertag), die Daten. Die Anzahl kann also durchaus höher sein.</p>
qexpression
	this.ppush({type: 'html', htext: this.tstep.introtext});

#
# <<TSTEPNUM:4>>: get range
#
sql		select 'Erstellungszeitpunkt dieser Auswertung' as "Bereich", NOW() as "Wert"
		UNION
		select 'Datumsbereich Meldungen von' as "Bereich",MIN(DOKDAT_DATNUM) as "Wert" from @@tabname@@ @@filtwc@@
		UNION
		select 'Datumsbereich Meldungen bis', MAX(DOKDAT_DATNUM) from @@tabname@@ @@filtwc@@
		UNION
		select 'Datumsbereich Rückfragen von', MIN(FTIMESTAMP) from @@tabname@@ @@filtwc@@
		UNION
		select 'Datumsbereich Rückfragen bis', MAX(FTIMESTAMP) from @@tabname@@ @@filtwc@@
		UNION
		select 'Anzahl Meldungen im Zeitraum', count(distinct DOKUMENT_ID) from @@tabname@@ @@filtwc@@
		UNION
		select 'Anzahl Meldungen mit Clearingfällen im Zeitraum', count(distinct DOKUMENT_ID) from @@tabname@@ where RUECKFRAGETYPCODE!='' @@filtws@@
		UNION
		select 'Anzahl Rückfragen im Zeitraum', count(*) from @@tabname@@ where RUECKFRAGETYPCODE!='' @@filtws@@
result_varname	rangeres
description
		<ul>
		<li>Datumsbereich Meldungen: dies sind die ältesten und jüngsten Zeitpunkte  zu denen Meldungen entsanden sind, die in die Auswertung einbezogen wurden.
		    Dieser kann auch groß sein, da Rückfragen zu weit zurückliegenden Meldungen entstehen können.</li>
		<li>Datumsbereich Rückfragen: dies ist der Zeitraum, in dem die Rückfragen entstanden sind, die in dieser Auswertung berücksichtigt wurden.</li>
		<li>Anzahl Meldungen im Zeitraum: Das ist die Anzahl der von Dienstgebern im Zeitraum erstellten Meldungen. Zu jeder Meldung können kein oder ein Clearingfall enstehen.</li>
		<li>Anzahl Meldungen mit Clearingfällen: Das ist der Anteil der Gesamt-Anzahl von Meldungen, zu denen Clearingfälle entstanden sind</li>
		<li>Anzahl Rückfragen im Zeitraum: Das ist die Anzahl der Rückfragen in den Clearingfällen. Ein Clearingfall kann eine oder mehrere Rückfragen enthalten</li>
		</ul>
post_qexpression
	this.rangeres.title = "Betrachtete Bereiche";
	this.rangeres.description = this.tstep.description;
	this.ppush({ type: 'result',	result: this.rangeres });

#
# <<TSTEPNUM:5>>: get counts
#
sql		select distinct srf.TRAEGER,srf.MONAT,srf.KLASSE,srf.ANZAHL
		  from ccvmvbrfauswccf srf
			join SVCLMAFILES maf on srf.MONAT=SUBSTR(maf.FTIMESTAMP,1,6) and srf.TRAEGER=maf.TRAEGER
		 where maf.TRAEGER is not null @@filtsrf@@
		 order by srf.TRAEGER,srf.MONAT,srf.KLASSE asc
result_varname	cfres
description
		<ul>
		<li>TRAEGER: Träger, zu dem die Meldungen gezählt wurden</li>
		<li>MONAT: Monat, in dem die gezählten Dokumente erstellt wurden</li>
		<li>KLASSE: Klasse der gemessenen Anzahl:
			<ul>
			<li>A_GESAMT: 			Gesamte Meldungen, zu denen an Tagen in diesem Monat Dokumente erzeugt wurden</li>
			<li>B_OHNE_CF:			von A - ohne Clearingfälle</li>
			<li>C_CF_GESAMT:		von A - mit Clearingfällen</li>
			<li>D_CF_OHNE_EVIDENZ:	von A - Clearingfälle ohne Evidenz</li>
			<li>E_CF_MIT_EVIDENZ:	von A - Clearingfälle mit Evidenz</li>
			</ul>
		<li>ANZAHL:		Anzahl der Meldungen dieser Klasse zu diesem Träger in diesem Monat</li>
		</ul>
post_qexpression
	this.cfpres = aux.pivotizeResult(this.cfres, { pivotize: {	hcolumns: [ 'KLASSE' ],
																vcolumns: [ 'TRAEGER', 'MONAT' ],
																value_column: 'ANZAHL'
															}
												});
	this.cfpres.title = "Meldungs/Clearingfall-Zahlen";
	this.cfpres.description = this.tstep.description;
	this.ppush({ type: 'result', result: this.cfpres });
	
#
# <<TSTEPNUM:6>>: title the protocol, seqtrans will produce a result from it
#
qexpression
	this.protocol.title = "Clearingfall-Anzahlen für "+((this.svt=="@G")?"alle ÖGK-Landesstellen":("SVT "+this.query.svt));