#!/usr/bin/perl

# ftestcurso.pl
# This script is copyright 2007, DOMINGO RAMOS CORPAS.
#
#########################################################################
##### USTED NO ESTA AUTORIZADO A COPIAR NI MODIFICAR ESTE SOFTWARE.
#####                                                                   
#####                                                                   
#########################################################################
#

$scripturl = "http://www.fetaltest.com/cgi-bin/ftestcurso.cgi";
%rec = &get_data();
print "Content-type: text/html\n\n";

unless (!$rec{'NUM'}){
@valores=();
$presentado=0;
$archivo = "ftestcurso.db";
open(FILE,"$archivo");
flock(FILE, 1);
while(<FILE>) {
$previo=0;
$posterior=0;
$imagen="";
$linea= $_;
$linea =~ s/NULL//g;
@valores = split(/\|/, $linea);
$previo=$valores[0]-1;
if ($previo<0){$previo=0;}
$posterior=$valores[0]+1;
$imagen="http://www.fetaltest.com/images/curso/".$valores[2];
if ($rec{'NUM'}==$valores[0]){
$presentado=1;
&diapositiva();
}
}
close(FILE);
}
if (!$presentado){&menu();}

exit;


sub menu{
&cabeceradepagina();
&encabezamiento();
print <<EOF;
<table border=0 cellpadding=5 cellspacing=3 width=100%><tr><td valign=top width=35%>
<TABLE CLASS='Bordernegro' WIDTH=100%><tr><td  CLASS="borde"><p><b><U>TEMARIO DEL CURSO</B></U><br>
EOF
@valores=();
$archivo = "ftestcurso.db";
open(FILE,"$archivo");
flock(FILE, 1);
while(<FILE>) {
$linea= $_;
$linea =~ s/NULL//g;
@valores = split(/\|/, $linea);
unless (!$valores[0]){
print <<EOF;
<br><b>$valores[0] .- <a HREF="ftestcurso.cgi?NUM=$valores[0]" > $valores[1]</a></b>
EOF
}else{
print <<EOF;
<br><p><b>$valores[1] $valores[2]</b>
EOF
}
}
close(FILE);
#AQUI VA EL TEXTO DE PRESENTACION DEL CURSO
print <<EOF;
<br><p>
<br><p>
</td></tr></table>


</td><td  valign=top>
<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>DESCRIPCION</b></TD></TR></TABLE>
<p align=justify>El <b>CURSO FETALTEST ON LINE SOBRE CRIBADO DE ANEUPLOIDIAS</b> se ha desarrollado para permitir que los m&eacute;dicos interesados en el cribado de cromosomopat&iacute;as puedan adquirir los conocimientos b&aacute;sicos necesarios para su acreditaci&oacute;n como ecografistas capacitados para la realizaci&oacute;n del cribado prenatal de cromosomopat&iacute;as y puedan ser autorizados para el uso del programa informatico de cribado de Fetaltest.<br>
<br><p>
<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>OBJETIVOS</b></TD></TR></TABLE>
<p align=justify>
<li>Objetivos Generales:
<dir>
<li>Contribuir al entrenamiento de los Obstetras en el cribado prenatal de cromosomopat&iacute;as, estableciendo una sistemática de evaluaci&oacute;n ecografica para dicho cometido.  
<li>Hacer accesible via internet la formación sobre cribado prenatal de cromosomopat&iacute;as, que permita el reciclaje de  un mayor número de  ginecologos, considerando el aspecto restrictivo de  la  distancia y  de los costes relacionados con los cursos presenciales. 
</dir>
<li>Objetivos Especificos:
<dir>
<p>Los alumnos deber&aacute;n:
<li>Conocer los conceptos b&aacute;sicos del cribado poblacional.
<li>Comprender la necesidad de realizar el cribado de cromosomopat&iacute;as mediante pruebas m&aacute;s eficaces que la edad materna.
<li>Conocer los principios b&aacute;sicos del cribado en funci&oacute;n del riesgo.
<li>Adquirir conocimientos b&aacute;sicos sobre los marcadores bioquimicos de cromosomopat&iacute;as en suero materno.
<li>Adquirir la capacidad de medir de forma adecuada la Translucencia Nucal.
<li>Adquirir la capacidad de evaluar otros marcadores ecograficos de cromosomopat&iacute;as.
<li>Conocer la eficacia de las distintas estrategias de cribado de cromosomopat&iacute;as.
<li>Conocer la importancia del control de calidad en el cribado de cromosomopat&iacute;as.
<li>Conocer el manejo del programa informatico FetalTest.
</dir>
<br><p>
<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>METODOLOGIA</b></TD></TR></TABLE>
<p align=justify>El curso est&aacute; articulado para que el alumno pueda realizar su formaci&oacute;n teorica en unas pocas horas. La metodolog&iacute;a del curso se fundamenta en el Aprendizaje autónomo de 60 conceptos b&aacute;sicos, con el soporte de los siguientes materiales de aprendizaje alojados en la red:
<li> Cada concepto  se desarrolla esquematicamente en una p&aacute;gina web, que incluye una explicación del mismo mediante imagenes y texto. 
<li> Cada pagina web incluye un conjunto de recursos que  pueden ayudar al alumno a completar su labor formativa, como bibliografia relevante o links a recursos bibliograficos relacionados con la materia, bien en forma de abstracts o de artículos a texto completo.
<br><p>
<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>INSTITUCIONES QUE AVALAN EL CURSO</b></TD></TR></TABLE>
<p align=justify>
<li>Sociedad Espa&ntilde;ola de Obstetricia y Ginecolog&iacute;a (S.E.G.O.)
<li>Sociedad IberoAmericana de Diagn&oacute;stico y Tratamiento Prenatal (S.I.A.D.T.P.)
<li>Asociaci&oacute;n Espa&ntilde;ola de Medicina Fetal (A.E.M.F.)
<br><p>
<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>DIRECTORES DEL CURSO</b></TD></TR></TABLE>
<p align=justify>
<br>Dr. Juan Carlos Santiago Bl&aacute;zquez
<br>Doctor en Medicina y Cirug&iacute;a.
<br>Especialista en Obstetricia y Ginecolog&iacute;a.
<br>Coordinador del Estudio Multicentrico Fetaltest.
<br>Jefe de Servicio de Obstetricia y Ginecolog&iacute;a del Hospital USP de Marbella (M&aacute;laga, Espa&ntilde;a)
<br>
<br>Dr. Domingo J. Ramos Corpas
<br>Doctor en Medicina y Cirug&iacute;a.
<br>Especialista en Obstetricia y Ginecolog&iacute;a.
<br>Coordinador del Estudio Multicentrico Fetaltest.
<br>Responsable de la Unidad de Medicina Fetal del Hospital USP de Marbella (M&aacute;laga, Espa&ntilde;a)
<br>
<br>Dr. Manuel Gallo Vallejo
<br>Doctor en Medicina y Cirug&iacute;a.
<br>Especialista en Obstetricia y Ginecolog&iacute;a.
<br>Coordinador del Estudio Multicentrico Fetaltest.
<br>Jefe de Secci&oacute;n de la Unidad de Diagn&oacute;stico Prenatal del Hospital Materno-Infantil de M&aacute;laga.
<br>Presidente de la Sociedad Ibero-Americana de Diagn&oacute;stico y Tratamiento Prenatal.
<br><p>
<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>INSCRIPCION</b></TD></TR></TABLE>
<br><p>
<li>Requisitos
<dir>
<p align=justify>Aunque los contenidos del curso son accesibles para cualquier persona que desee visitarlos, solo se aceptar&aacute; la inscripci&oacute;n a los M&eacute;dicos Especialistas en Obstetricia y Ginecolog&iacute;a.
</dir>
<li>Forma Inscripci&oacute;n
<dir>
<p>Remitiendo por email la siguiente documentaci&oacute;n:
<br>
<li>Carta de presentaci&oacute;n, que incluya breve curriculum.
</dir>
<li>Precio Inscripci&oacute;n: 50 Euros. (podr&aacute; abonarlo tras la aceptaci&oacute;n de su inscripci&oacute;n, mediante tarjeta de credito a trav&eacute;s de una pasarela de pago seguro on line habilitada por Banesto para tal fin. El enlace correspondiente aparecer&aacute; en la Hoja de Examen de Evaluaci&oacute;n).
<br><p>
<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>EVALUACION</b></TD></TR></TABLE>
<p align=justify>Una vez inscrito, el alumno ser&aacute; sometido a dos pruebas de evaluaci&oacute;n:
<li>Un <a href="ftestevaluacioncurso.cgi">CUESTIONARIO TIPO TEST</a> con preguntas relacionadas con el temario del curso, al que podr&aacute; acceder mediante codigo de acceso que se le facilitar&aacute; tras la aceptaci&oacute;n de la Inscripci&oacute;n. (Este c&oacute;digo le permitir&aacute; tambien realizar on line el pago de la inscripci&oacute;n).
<li>Junto con el cuestionario cumplimentado, el alumno deberá remitir 3 imagenes ecograficas, obtenidas por el alumno en su práctica clinica habitual, de cada una de las siguientes mediciones:
<dir>
<li>Translucencia Nucal
<li>Hueso Nasal
<li>Pliegue Nucal
<li>Pelvis Renal
<li>Longitud de H&uacute;mero
</dir>

<TABLE CLASS='Bordernegro' width=45%><tr><td CLASS="borde" vAlign=top><b>CERTIFICACION</b></TD></TR></TABLE>
<p align=justify>
Tras la superación de las pruebas de evaluación, los alumnos recibir&aacute;n certificado de realizaci&oacute;n del curso y claves de acceso a Fetaltest. 

</td></tr></table>


EOF
&piedepagina();
}




sub encabezamiento{
print <<EOF;
<table border=0 cellpadding=5 cellspacing=3 width=100% align=center valign=top><tr><td colspan=2 bgcolor="#140059"><b><FONT FACE="Tahoma, arial,helvetica" size=3 color="#FFFFFF"> CURSO FETALTEST ON LINE SOBRE CRIBADO DE ANEUPLOIDIAS</b></td></tr></table></center>
<br>
EOF
}

sub piedepagina{
print <<EOF;
<br><p>

EOF
$archivo = "pienuevo";
open(FILE,"$archivo");
while($entry = <FILE>) {
        print $entry;
}
close(FILE);
}


sub cabeceradepagina{
$archivo = "cabeceranueva";
open(FILE,"$archivo");
while($entry = <FILE>) {
        print $entry;
}
close(FILE);
$archivo = "cabeceranueva2";
open(FILE,"$archivo");
while($entry = <FILE>) {
        print $entry;
}
close(FILE);
}




sub get_data {
    local($string);

    # get data
    if ($ENV{'REQUEST_METHOD'} eq 'GET') {
        $_ = $string = $ENV{'QUERY_STRING'};
	tr/\"~;/_/;
	$string = $_;

    }				
    else { read(STDIN, $string, $ENV{'CONTENT_LENGTH'});
        $_ = $string;
	$OK_CHARS='a-zA-Z0-9=&%\n\/_\-\.@';
	tr/\"~;/_/;
	$string = $_;
	   }

    # split data into name=value pairs
    @rec = split(/&/, $string);
   
    # split into name=value pairs in associative array
    foreach (@rec) {
	split(/=/, $_);
	$_[0] =~ s/\+/ /g; # plus to space
	$_[0] =~ s/%(..)/pack("c", hex($1))/ge; # hex to alphanumeric
	$rec{"$_[0]"} = $_[1];
    }

    # translate special characters
    foreach (keys %rec) {
	$rec{"$_"} =~ s/\+/ /g; # plus to space
	$rec{"$_"} =~ s/%(..)/pack("c", hex($1))/ge; # hex to alphanumeric
    }

    %rec;			# return associative array of name=value
}


sub parse_form {
# --------------------------------------------------------
# Parses the form input and returns a hash with all the name
# value pairs. Removes SSI and any field with "---" as a value 
# (as this denotes an empty SELECT field.

	my (@pairs, %in);
	my ($buffer, $pair, $name, $value);	

	if ($ENV{'REQUEST_METHOD'} eq 'GET') {
		@pairs = split(/&/, $ENV{'QUERY_STRING'});
	}
	elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
		read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 		@pairs = split(/&/, $buffer);
	}
	else {
		&cgierr ("This script must be called from the Web\nusing either GET or POST requests\n\n");
	}
	PAIR: foreach $pair (@pairs) {
		($name, $value) = split(/=/, $pair);
		 
		$name =~ tr/+/ /;
		$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

		$value =~ tr/+/ /;
		$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

		$value =~ s/<!--(.|\n)*-->//g;			  # Remove SSI.
		if ($value eq "---") { next PAIR; }		  # This is used as a default choice for select lists and is ignored.
		(exists $in{$name}) ?
			($in{$name} .= "$value") :	      # if ( we have multiple select, then we tack on
			($in{$name}  = $value);				  # using the ~~ as a seperator.
	}
	return %in;
}


sub diapositiva{
&cabeceradepagina();
&encabezamiento();
print <<EOF;
<center><br><p>
<P><TABLE CLASS='Bordernegro' width=80%>
<tr><td CLASS="borde" vAlign=top>
<center><b>$valores[0].- $valores[1]</b></center>

<td></tr><tr><td>
<center><img border="0" src=$imagen></center>
</td></tr><tr><td CLASS="borde" vAlign=top>
<p align=justify><b>$valores[3] </b>
</td>
</td></tr>
<tr><td>
<br><p>
</td></tr>

EOF


unless(!$valores[4] ){
print <<EOF;
<tr><td CLASS="borde" vAlign=top>
<p align=justify><i><b>PARA SABER MAS:</b></i>
<li>$valores[4] 
EOF
unless(!$valores[5] ){
print <<EOF;
<a href=$valores[5] target="_blank">[ver Abstract]</a> 
EOF
}}

unless(!$valores[6] ){
print <<EOF;
<li>$valores[6] 
EOF
unless(!$valores[7] ){
print <<EOF;
<a href=$valores[7] target="_blank">[ver Abstract]</a> 
EOF
}}
unless(!$valores[8] ){
print <<EOF;
<li>$valores[8] 
EOF
unless(!$valores[9] ){
print <<EOF;
<a href=$valores[9] target="_blank">[ver Abstract]</a> 
EOF
}}

unless(!$valores[4] ){
print <<EOF;
</td></tr>
EOF
}
print <<EOF;
</table>
<br><p>
<br><p>	

<center><table CLASS='Bordernegro'><TR>
<td>| <a HREF="ftestcurso.cgi?NUM=$previo">Previo</a> |</td>
<td>| <a HREF="ftestcurso.cgi">Indice Curso On Line</a> |</td>
<td>| <a HREF="ftestcurso.cgi?NUM=$posterior">Siguiente</a> |</td>
</tr></table></center>
<br><p>
EOF
&piedepagina();

}