[Care2x-general] Fw: Re: [Care2002-developers] about patients and personnel in the same table

Juan Rossano juanrossano en gmail.com
Vie Nov 12 21:47:05 CET 2004


Estimados colegas:

Les informo que pude adelantar del archivo personas. Si bien es cierto
que concecptualmente la herencia permite reusar una clase siempre esta
ligada a la implementacion hecha en cada sistema. Y comento brevemente
(podremos ampliarlo como tema) que no solo es un problema de seguridad
que se vea al personal quien puede ver paciente sin que puede
considerarse de igual o mas gravedad que quien accede al personal
pueda ver datos del paciente; con el tema de la confidencialidad y del
Habeas Data merece una consideracion.
En el archivo de carga del personal llama a las dos clases (la de
persona y la de personal) y cualquier redefinicion ahi puede traer un
efecto colateral en otra parte del sistema. Estuve viendo como esta
armado el sistema, analizando como hacer la implementacion y haciendo
pruebas. Y en realidad habria que hacer un cambio en la estructura
proponiendolo al grupo central; me explico. En
include/care_api_classes esta la clase personal. Haciendo uso de la
herencia se pueden crear dos clases: paciente y empleado. Son
simplemente derivadas de person y solo se redefinen coneptualmente
para usarlas en los programa correspondiente. Dejandolo como esta
siguen abriendo la base care_person con lo que a ellos no les modifica
nada, pero permite la implementacion en distintas bases. Me explico:

Paso 1:

/include/care_api_classes/care_employee.php

<?php
/**
* @package care_api
*/
/**
*/
require_once($root_path.'include/care_api_classes/class_person.php');
/**
*  Person methods.
*
* Note this class should be instantiated only after a "$db" adodb 
connector object  has been established by an adodb instance
* @author Elpidio Latorilla
* @version beta 2.0.1
* @copyright 2002,2003,2004,2005,2005 Elpidio Latorilla
* @package care_api
* aporte Juan Rossano - Grupo Biolinux (Care2l)
*/
class Employee extends Person {
	/**
	* Table name for person registration data.
	* @var string
	*/
}
?>

/include/care_api_classes/care_patient.php

<?php
/**
* @package care_api
*/
/**
*/
require_once($root_path.'include/care_api_classes/class_person.php');
/**
*  Person methods.
*
* Note this class should be instantiated only after a "$db" adodb 
connector object  has been established by an adodb instance
* @author Elpidio Latorilla
* @version beta 2.0.1
* @copyright 2002,2003,2004,2005,2005 Elpidio Latorilla
* @package care_api
* aporte Juan Rossano - Grupo Biolinux (Care2l)
*/
class Patient extends Person {
	/**
	* Table name for person registration data.
	* @var string
	*/
}
?>

Hasta aca solo se redefinen, cambian los nombres, el programa es mas
legible pero la funcionalidad es la misma. Ahora al incluir el archivo
de classes se puede cargar uno personalizado como se hace con los de
idioma. Mi propuesta es crear /include/classes/es-ar para poner las
classes personalizadas. Los cambios son los care_person por
care_patient o care_employee segun corresponda y ademas cargar el
personalizado si estuviera y si no el default.
Entonces el codigo php donde decia:
require_once($root_path.'include/care_api_classes/class_person.php');
require_once($root_path.'include/care_api_classes/class_personell.php');

queda:
if (file_exists('include/classes/'.$GLOBALCONFIG['language_default'].'/class_employee.php'))
{
		require_once($root_path.'include/classes/'.$GLOBALCONFIG['language_default'].'/class_employee.php');
	} else {
require_once($root_path.'include/care_api_classes/class_employee.php');
}
if (file_exists('include/classes/'.$GLOBALCONFIG['language_default'].'/class_personell.php'))
{
		require_once($root_path.'include/classes/'.$GLOBALCONFIG['language_default'].'/class_personell.php');
	} else {
require_once($root_path.'include/care_api_classes/class_personell.php');
}

Esto permite que pongamos en nuestra personalizacion las clases
correspondiente dejandolas asi:

/include/care_api_classes/care_employee.php

<?php
/**
* @package care_api
*/
/**
*/
require_once($root_path.'include/care_api_classes/class_person.php');
/**
*  Person methods.
*
* Note this class should be instantiated only after a "$db" adodb 
connector object  has been established by an adodb instance
* @author Elpidio Latorilla
* @version beta 2.0.1
* @copyright 2002,2003,2004,2005,2005 Elpidio Latorilla
* @package care_api
* aporte Juan Rossano - Grupo Biolinux (Care2l)
*/
class Employee extends Person {
	/**
	* Table name for person registration data.
	* @var string
	*/
        $this->tb_person='care_employee';
}
?>

/include/care_api_classes/care_patient.php

<?php
/**
* @package care_api
*/
/**
*/
require_once($root_path.'include/care_api_classes/class_person.php');
/**
*  Person methods.
*
* Note this class should be instantiated only after a "$db" adodb 
connector object  has been established by an adodb instance
* @author Elpidio Latorilla
* @version beta 2.0.1
* @copyright 2002,2003,2004,2005,2005 Elpidio Latorilla
* @package care_api
* aporte Juan Rossano - Grupo Biolinux (Care2l)
*/
class Patient extends Person {
	/**
	* Table name for person registration data.
	* @var string
	*/
        $this->tb_person='care_patient';
}
?>

consiguiendo separar las tablas en pacientes y empleados (care_patient
y care_employee)
¿Me explique? ¿Que opinan? 

Saludos

Juan Rossano

On Tue, 9 Nov 2004 23:31:47 -0300, Juan Rossano <juanrossano en gmail.com> wrote:
> En OOP la herencia permite crear una subclase a partir de otra para
> agregar funcionalidad. En nuestro caso seria crear class_employee a
> partir de class_person (conceptualmente, tengo que confirmar si son
> esas). Pero no es tan simple por dos temas. Por un lado nos alejamos
> del central ya que tenemos que cambiar las llamadas a class_person por
> class_employee y en segundo lugar porque sigue siendo un tema donde
> hacemos el cambio por el agregado de funcionalidad. Si la instancias a
> las clases se crean en los php personalizados para el idioma es mas
> adaptable, pero nosotros tendriamos que redefinir la clase o la
> propiedad desde un php llamado despues de la creacion de la instancia.
> Igualmente voy a hacer pruebas y despues les cuento; pero queria
> ponerlos al tanto de los conceptos.
> Saludos
> 
> Juan
>



Más información sobre la lista de distribución Care2x-general