Revision: 6393
http://care2002.svn.sourceforge.net/care2002/?rev=6393&view=rev
Author: mizuko
Date: 2010-06-28 14:42:29 +0000 (Mon, 28 Jun 2010)
Log Message:
-----------
fixes #33 - refactor: aufnahme_list.php to admission_list.php
Added Paths:
-----------
care2x/branches/gettext/modules/registration_admission/admission_list.php
Removed Paths:
-------------
care2x/branches/gettext/modules/registration_admission/aufnahme_list.php
Copied:
care2x/branches/gettext/modules/registration_admission/admission_list.php (from
rev 6392,
care2x/branches/gettext/modules/registration_admission/aufnahme_list.php)
===================================================================
--- care2x/branches/gettext/modules/registration_admission/admission_list.php
(rev 0)
+++ care2x/branches/gettext/modules/registration_admission/admission_list.php
2010-06-28 14:42:29 UTC (rev 6393)
@@ -0,0 +1,272 @@
+<?php
+error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR);
+require('./roots.php');
+require($root_path.'include/helpers/inc_environment_global.php');
+/**
+ * CARE2X Integrated Hospital Information System beta 2.0.1 - 2004-07-04
+ * GNU General Public License
+ * Copyright 2002,2003,2004,2005 Elpidio Latorilla
+ * [email protected],
+ *
+ * See the file "copy_notice.txt" for the licence notice
+ */
+
+# Default value for the maximum nr of rows per block displayed, define this to
the value you wish
+# In normal cases this value is derived from the db table "care_config_global"
using the "pagin_insurance_list_max_block_rows" element.
+define('MAX_BLOCK_ROWS',30);
+define('AUTOSHOW_ONERESULT',1); # Defining to 1 will automatically show the
admission data if the search result is one, otherwise the single result will be
listed
+
+function Cond($item,$k){
+ global $where,$tab,$_POST, $sql_LIKE;
+ if(empty($_POST[$item])) return false;
+ else{
+ if($item == 'current_ward_nr') {
+ $buf=" $tab.$item $sql_LIKE '".$_POST[$item]."'";
+ if(!empty($where)) $where.=' AND '.$buf;
+ else $where=$buf;
+ } else {
+ $buf=" $tab.$item $sql_LIKE '".$_POST[$item]."%'";
+ if(!empty($where)) $where.=' AND '.$buf;
+ else $where=$buf;
+ }
+ }
+}
+
+function fCond($item,$k){
+ global $orwhere,$tab,$_POST, $sql_LIKE;
+ if(empty($_POST[$item])) return false;
+ else{
+ $buf=" f.class_nr $sql_LIKE '".$_POST[$item]."%'";
+ if(!empty($orwhere)) $orwhere.=' OR '.$buf;
+ else $orwhere=$buf;
+ }
+}
+
+
+define('LANG_FILE','aufnahme.php');
+$local_user='aufnahme_user';
+require($root_path.'include/helpers/inc_front_chain_lang.php');
+require_once($root_path.'include/helpers/inc_date_format_functions.php');
+
+//$db->debug=1;
+
+// Initialize page's control variables
+if($mode=='paginate'){
+ $searchkey=$_SESSION['sess_searchkey'];
+}else{
+ # Reset paginator variables
+ $pgx=0;
+ $totalcount=0;
+ $odir='';
+ $oitem='';
+}
+#Load and create paginator object
+require_once($root_path.'include/core/class_paginator.php');
+$pagen=& new Paginator($pgx,$thisfile,$_SESSION['sess_searchkey'],$root_path);
+
+$GLOBAL_CONFIG=array();
+require_once($root_path.'include/core/class_globalconfig.php');
+$glob_obj=new GlobalConfig($GLOBAL_CONFIG);
+# Get the max nr of rows from global config
+$glob_obj->getConfig('pagin_person_search_max_block_rows');
+if(empty($GLOBAL_CONFIG['pagin_person_search_max_block_rows']))
$pagen->setMaxCount(MAX_BLOCK_ROWS); # Last resort, use the default defined at
the start of this page
+else $pagen->setMaxCount($GLOBAL_CONFIG['pagin_person_search_max_block_rows']);
+
+if (isset($mode) && ($mode=='search'||$mode=='paginate')){
+
+
+ if(empty($oitem)) $oitem='name_last';
+ if(empty($odir)) $odir='ASC'; # default, ascending alphabetic
+ # Set the sort parameters
+ $pagen->setSortItem($oitem);
+ $pagen->setSortDirection($odir);
+
+ if($mode=='paginate'){
+ $sql=$_SESSION['sess_searchkey'];
+ $where='?'; # Dummy char to force the sql query to be executed
+ }else{
+
+
+ $select="SELECT
p.name_last,p.name_first,p.date_birth,p.addr_zip,
p.sex,e.encounter_nr,e.encounter_class_nr,e.is_discharged,e.encounter_date FROM
";
+
+ $where=''; # ANDed where condition
+ $orwhere=''; # ORed where condition
+ $datecond=''; # date condition
+
+ # Walk the arrays in the function to preprocess the search
condition data
+ $parray=array('name_last','name_first','sex');
+ $tab='p';
+ array_walk($parray,'Cond');
+
$earray=array('encounter_nr','encounter_class_nr','current_ward_nr','referrer_diagnosis','referrer_dr','referrer_recom_therapy','referrer_notes','insurance_class_nr');
+ $tab='e';
+ array_walk($earray,'Cond');
+
$farray=array('sc_care_class_nr','sc_room_class_nr','sc_att_dr_class_nr');
+ array_walk($farray,'fCond');
+
+ # Process the dates
+ if(isset($date_start)&&!empty($date_start))
$date_sta...@formatdate2std($date_start,$date_format);
+ if(isset($date_end)&&!empty($date_end))
$date_e...@formatdate2std($date_end,$date_format);
+ if(isset($date_birth)&&!empty($date_birth))
$date_bir...@formatdate2std($date_birth,$date_format);
+
+ if($date_start){
+ if($date_end){
+ $datecond="(e.encounter_date $sql_LIKE
'$date_start%' OR e.encounter_date>'$date_start') AND
(e.encounter_date<'$date_end' OR e.encounter_date $sql_LIKE '$date_end%')";
+ }else{
+ $datecond="e.encounter_date $sql_LIKE
'$date_start%'";
+ }
+ }elseif($date_end){
+ $datecond="(e.encounter_date< '$date_end' OR
e.encounter_date $sql_LIKE '$date_end%')";
+ }
+
+ if($date_birth){
+ $datecond="(p.date_birth $sql_LIKE '$date_birth%')";
+ }
+
+ if(!empty($datecond)){
+ if(empty($where)) $where=$datecond;
+ else $where.=' AND '.$datecond;
+ }
+
+ if(!empty($orwhere)) {
+ if(empty($where)) $where='('.$orwhere.')';
+ else $where.=' AND ('.$orwhere.') ';
+ }
+
+ if($name_last||$name_first||$date_birth||$sex){
+
if($encounter_nr||$encounter_class_nr||$current_ward_nr||$referrer_diagnosis||$referrer_dr||$referrer_recom_therapy||$referrer_notes||$insurance_class_nr){
+
if($sc_care_class_nr||$sc_room_class_nr||$sc_att_dr_class_nr){
+ $from=" care_person AS p,
care_encounter AS e, care_encounter_financial_class AS f ";
+ $where.=" AND
e.encounter_nr=f.encounter_nr AND e.pid=p.pid ";
+ }else{
+ $from=" care_person AS p,
care_encounter AS e";
+ $where.=" AND p.pid=e.pid";
+ }
+ }else{
+ $from=" care_person AS p, care_encounter AS e";
+ $where.=" AND p.pid=e.pid";
+ }
+
+ }else{
+
if($date_start||$date_end||$encounter_nr||$encounter_class_nr||$current_ward_nr||$referrer_diagnosis||$referrer_dr||$referrer_recom_therapy||$referrer_notes||$insurance_class_nr){
+
if($sc_care_class_nr||$sc_room_class_nr||$sc_att_dr_class_nr){
+ $from=" care_person AS p,
care_encounter AS e, care_encounter_financial_class AS f";
+ $where.=" AND p.pid=e.pid AND
e.encounter_nr=f.encounter_nr";
+ }else{
+ $from=" care_person AS p,
care_encounter AS e";
+ $where.=" AND p.pid=e.pid";
+ }
+ }else{
+
if($sc_care_class_nr||$sc_room_class_nr||$sc_att_dr_class_nr){
+ $from=" care_person AS p,
care_encounter AS e, care_encounter_financial_class as f";
+ $where.=" AND p.pid=e.pid AND
f.encounter_nr=e.encounter_nr";
+ }
+ }
+ }
+
+ //gjergji - hide patient info of other departements
+ if(isset($_SESSION['department_nr']) &&
$_SESSION['department_nr'] != '0' ) {
+ $cond.=" AND ( ";
+ while (list($key, $val) =
each($_SESSION['department_nr'])) {
+ $tmp .= "e.current_dept_nr = " . $val . " OR ";
+
+ }
+ $cond .= substr($tmp,0,-4) ;
+ $cond .= " ) " ;
+ }
+ $where .= $cond;
+ //end : gjergji
+
+ $sql="$select$from WHERE $where AND e.encounter_status <>
'cancelled' AND e.status NOT IN ('void','inactive','hidden','deleted') ORDER by
";
+ $_SESSION['sess_searchkey']=$sql;
+
+ }
+
+ if(!empty($where)) {
+ # Filter the encounter nr:
+ if($oitem=='encounter_nr'||$oitem=='encounter_date') $tab='e';
+ else $tab='p';
+ //echo "$sql $tab.$oitem $odir";
+ if($ergebnis=$db->SelectLimit("$sql $tab.$oitem
$odir",$pagen->MaxCount(),$pagen->BlockStartIndex())){
+ $rows=$ergebnis->RecordCount();
+
+ if(AUTOSHOW_ONERESULT){
+ if($rows==1){
+ # If result is single item, display the
data immediately
+ $result=$ergebnis->FetchRow();
+
header("Location:admission_data_search.php".URL_REDIRECT_APPEND."&target=archiv&origin=archiv&encounter_nr=".$result['encounter_nr']);
+ exit;
+ }
+ }
+
+ $pagen->setTotalBlockCount($rows);
+
+ # If more than one count all available
+ if(isset($totalcount)&&$totalcount){
+ $pagen->setTotalDataCount($totalcount);
+ }else{
+ # Count total available data
+ $sql="$sql $tab.$oitem $odir";
+
+ if($result=$db->Execute($sql)){
+ $totalcount=$result->RecordCount();
+ }
+ $pagen->setTotalDataCount($totalcount);
+ }
+ # Set the sort parameters
+ $pagen->setSortItem($oitem);
+ $pagen->setSortDirection($odir);
+
+
+ }else{
+ echo "$LDDbNoRead<p>$sql $tab.$oitem $odir";
+ $rows=0;
+ }
+ }
+}
+require_once($root_path.'include/core/class_globalconfig.php');
+
+$glob_obj=new GlobalConfig($GLOBAL_CONFIG);
+$glob_obj->getConfig('patient%');
+$glob_obj->getConfig('person%');
+
+$thisfile=basename(__FILE__);
+$breakfile='patient.php'.URL_APPEND;
+$newdata=1;
+$target='archiv';
+
+
+if(!isset($rows)||!$rows) {
+
+ include($root_path.'include/core/class_encounter.php');
+ include($root_path.'include/core/class_ward.php');
+
include_once($root_path.'modules/insurance_co/model/class_insurance.php');
+
+ # Create encounter object
+ $encounter_obj=new Encounter();
+ # Load the wards info
+ $ward_obj=new Ward;
+ $items='nr,name';
+ $ward_info=&$ward_obj->getAllWardsItemsObject($items);
+ # Get all encounter classes
+ $encounter_classes=$encounter_obj->AllEncounterClassesObject();
+ # Get the insurance classes */
+ # Create new person's insurance object */
+ $insurance_obj=new Insurance;
+
$insurance_classes=&$insurance_obj->getInsuranceClassInfoObject('class_nr,LD_var,name');
+
+ if(!$GLOBAL_CONFIG['patient_service_care_hide']){
+ # Get the care service classes
+ $care_service=$encounter_obj->AllCareServiceClassesObject();
+ }
+ if(!$GLOBAL_CONFIG['patient_service_room_hide']){
+ # Get the room service classes
+ $room_service=$encounter_obj->AllRoomServiceClassesObject();
+ }
+ if(!$GLOBAL_CONFIG['patient_service_att_dr_hide']){
+ # Get the attending doctor service classes
+ $att_dr_service=$encounter_obj->AllAttDrServiceClassesObject();
+ }
+}
+# Load GUI page
+require('./gui_bridge/default/gui_admission_list.php');
+?>
Deleted:
care2x/branches/gettext/modules/registration_admission/aufnahme_list.php
===================================================================
--- care2x/branches/gettext/modules/registration_admission/aufnahme_list.php
2010-06-28 14:21:40 UTC (rev 6392)
+++ care2x/branches/gettext/modules/registration_admission/aufnahme_list.php
2010-06-28 14:42:29 UTC (rev 6393)
@@ -1,272 +0,0 @@
-<?php
-error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR);
-require('./roots.php');
-require($root_path.'include/helpers/inc_environment_global.php');
-/**
- * CARE2X Integrated Hospital Information System beta 2.0.1 - 2004-07-04
- * GNU General Public License
- * Copyright 2002,2003,2004,2005 Elpidio Latorilla
- * [email protected],
- *
- * See the file "copy_notice.txt" for the licence notice
- */
-
-# Default value for the maximum nr of rows per block displayed, define this to
the value you wish
-# In normal cases this value is derived from the db table "care_config_global"
using the "pagin_insurance_list_max_block_rows" element.
-define('MAX_BLOCK_ROWS',30);
-define('AUTOSHOW_ONERESULT',1); # Defining to 1 will automatically show the
admission data if the search result is one, otherwise the single result will be
listed
-
-function Cond($item,$k){
- global $where,$tab,$_POST, $sql_LIKE;
- if(empty($_POST[$item])) return false;
- else{
- if($item == 'current_ward_nr') {
- $buf=" $tab.$item $sql_LIKE '".$_POST[$item]."'";
- if(!empty($where)) $where.=' AND '.$buf;
- else $where=$buf;
- } else {
- $buf=" $tab.$item $sql_LIKE '".$_POST[$item]."%'";
- if(!empty($where)) $where.=' AND '.$buf;
- else $where=$buf;
- }
- }
-}
-
-function fCond($item,$k){
- global $orwhere,$tab,$_POST, $sql_LIKE;
- if(empty($_POST[$item])) return false;
- else{
- $buf=" f.class_nr $sql_LIKE '".$_POST[$item]."%'";
- if(!empty($orwhere)) $orwhere.=' OR '.$buf;
- else $orwhere=$buf;
- }
-}
-
-
-define('LANG_FILE','aufnahme.php');
-$local_user='aufnahme_user';
-require($root_path.'include/helpers/inc_front_chain_lang.php');
-require_once($root_path.'include/helpers/inc_date_format_functions.php');
-
-//$db->debug=1;
-
-// Initialize page's control variables
-if($mode=='paginate'){
- $searchkey=$_SESSION['sess_searchkey'];
-}else{
- # Reset paginator variables
- $pgx=0;
- $totalcount=0;
- $odir='';
- $oitem='';
-}
-#Load and create paginator object
-require_once($root_path.'include/core/class_paginator.php');
-$pagen=& new Paginator($pgx,$thisfile,$_SESSION['sess_searchkey'],$root_path);
-
-$GLOBAL_CONFIG=array();
-require_once($root_path.'include/core/class_globalconfig.php');
-$glob_obj=new GlobalConfig($GLOBAL_CONFIG);
-# Get the max nr of rows from global config
-$glob_obj->getConfig('pagin_person_search_max_block_rows');
-if(empty($GLOBAL_CONFIG['pagin_person_search_max_block_rows']))
$pagen->setMaxCount(MAX_BLOCK_ROWS); # Last resort, use the default defined at
the start of this page
-else $pagen->setMaxCount($GLOBAL_CONFIG['pagin_person_search_max_block_rows']);
-
-if (isset($mode) && ($mode=='search'||$mode=='paginate')){
-
-
- if(empty($oitem)) $oitem='name_last';
- if(empty($odir)) $odir='ASC'; # default, ascending alphabetic
- # Set the sort parameters
- $pagen->setSortItem($oitem);
- $pagen->setSortDirection($odir);
-
- if($mode=='paginate'){
- $sql=$_SESSION['sess_searchkey'];
- $where='?'; # Dummy char to force the sql query to be executed
- }else{
-
-
- $select="SELECT
p.name_last,p.name_first,p.date_birth,p.addr_zip,
p.sex,e.encounter_nr,e.encounter_class_nr,e.is_discharged,e.encounter_date FROM
";
-
- $where=''; # ANDed where condition
- $orwhere=''; # ORed where condition
- $datecond=''; # date condition
-
- # Walk the arrays in the function to preprocess the search
condition data
- $parray=array('name_last','name_first','sex');
- $tab='p';
- array_walk($parray,'Cond');
-
$earray=array('encounter_nr','encounter_class_nr','current_ward_nr','referrer_diagnosis','referrer_dr','referrer_recom_therapy','referrer_notes','insurance_class_nr');
- $tab='e';
- array_walk($earray,'Cond');
-
$farray=array('sc_care_class_nr','sc_room_class_nr','sc_att_dr_class_nr');
- array_walk($farray,'fCond');
-
- # Process the dates
- if(isset($date_start)&&!empty($date_start))
$date_sta...@formatdate2std($date_start,$date_format);
- if(isset($date_end)&&!empty($date_end))
$date_e...@formatdate2std($date_end,$date_format);
- if(isset($date_birth)&&!empty($date_birth))
$date_bir...@formatdate2std($date_birth,$date_format);
-
- if($date_start){
- if($date_end){
- $datecond="(e.encounter_date $sql_LIKE
'$date_start%' OR e.encounter_date>'$date_start') AND
(e.encounter_date<'$date_end' OR e.encounter_date $sql_LIKE '$date_end%')";
- }else{
- $datecond="e.encounter_date $sql_LIKE
'$date_start%'";
- }
- }elseif($date_end){
- $datecond="(e.encounter_date< '$date_end' OR
e.encounter_date $sql_LIKE '$date_end%')";
- }
-
- if($date_birth){
- $datecond="(p.date_birth $sql_LIKE '$date_birth%')";
- }
-
- if(!empty($datecond)){
- if(empty($where)) $where=$datecond;
- else $where.=' AND '.$datecond;
- }
-
- if(!empty($orwhere)) {
- if(empty($where)) $where='('.$orwhere.')';
- else $where.=' AND ('.$orwhere.') ';
- }
-
- if($name_last||$name_first||$date_birth||$sex){
-
if($encounter_nr||$encounter_class_nr||$current_ward_nr||$referrer_diagnosis||$referrer_dr||$referrer_recom_therapy||$referrer_notes||$insurance_class_nr){
-
if($sc_care_class_nr||$sc_room_class_nr||$sc_att_dr_class_nr){
- $from=" care_person AS p,
care_encounter AS e, care_encounter_financial_class AS f ";
- $where.=" AND
e.encounter_nr=f.encounter_nr AND e.pid=p.pid ";
- }else{
- $from=" care_person AS p,
care_encounter AS e";
- $where.=" AND p.pid=e.pid";
- }
- }else{
- $from=" care_person AS p, care_encounter AS e";
- $where.=" AND p.pid=e.pid";
- }
-
- }else{
-
if($date_start||$date_end||$encounter_nr||$encounter_class_nr||$current_ward_nr||$referrer_diagnosis||$referrer_dr||$referrer_recom_therapy||$referrer_notes||$insurance_class_nr){
-
if($sc_care_class_nr||$sc_room_class_nr||$sc_att_dr_class_nr){
- $from=" care_person AS p,
care_encounter AS e, care_encounter_financial_class AS f";
- $where.=" AND p.pid=e.pid AND
e.encounter_nr=f.encounter_nr";
- }else{
- $from=" care_person AS p,
care_encounter AS e";
- $where.=" AND p.pid=e.pid";
- }
- }else{
-
if($sc_care_class_nr||$sc_room_class_nr||$sc_att_dr_class_nr){
- $from=" care_person AS p,
care_encounter AS e, care_encounter_financial_class as f";
- $where.=" AND p.pid=e.pid AND
f.encounter_nr=e.encounter_nr";
- }
- }
- }
-
- //gjergji - hide patient info of other departements
- if(isset($_SESSION['department_nr']) &&
$_SESSION['department_nr'] != '0' ) {
- $cond.=" AND ( ";
- while (list($key, $val) =
each($_SESSION['department_nr'])) {
- $tmp .= "e.current_dept_nr = " . $val . " OR ";
-
- }
- $cond .= substr($tmp,0,-4) ;
- $cond .= " ) " ;
- }
- $where .= $cond;
- //end : gjergji
-
- $sql="$select$from WHERE $where AND e.encounter_status <>
'cancelled' AND e.status NOT IN ('void','inactive','hidden','deleted') ORDER by
";
- $_SESSION['sess_searchkey']=$sql;
-
- }
-
- if(!empty($where)) {
- # Filter the encounter nr:
- if($oitem=='encounter_nr'||$oitem=='encounter_date') $tab='e';
- else $tab='p';
- //echo "$sql $tab.$oitem $odir";
- if($ergebnis=$db->SelectLimit("$sql $tab.$oitem
$odir",$pagen->MaxCount(),$pagen->BlockStartIndex())){
- $rows=$ergebnis->RecordCount();
-
- if(AUTOSHOW_ONERESULT){
- if($rows==1){
- # If result is single item, display the
data immediately
- $result=$ergebnis->FetchRow();
-
header("Location:admission_data_search.php".URL_REDIRECT_APPEND."&target=archiv&origin=archiv&encounter_nr=".$result['encounter_nr']);
- exit;
- }
- }
-
- $pagen->setTotalBlockCount($rows);
-
- # If more than one count all available
- if(isset($totalcount)&&$totalcount){
- $pagen->setTotalDataCount($totalcount);
- }else{
- # Count total available data
- $sql="$sql $tab.$oitem $odir";
-
- if($result=$db->Execute($sql)){
- $totalcount=$result->RecordCount();
- }
- $pagen->setTotalDataCount($totalcount);
- }
- # Set the sort parameters
- $pagen->setSortItem($oitem);
- $pagen->setSortDirection($odir);
-
-
- }else{
- echo "$LDDbNoRead<p>$sql $tab.$oitem $odir";
- $rows=0;
- }
- }
-}
-require_once($root_path.'include/core/class_globalconfig.php');
-
-$glob_obj=new GlobalConfig($GLOBAL_CONFIG);
-$glob_obj->getConfig('patient%');
-$glob_obj->getConfig('person%');
-
-$thisfile=basename(__FILE__);
-$breakfile='patient.php'.URL_APPEND;
-$newdata=1;
-$target='archiv';
-
-
-if(!isset($rows)||!$rows) {
-
- include($root_path.'include/core/class_encounter.php');
- include($root_path.'include/core/class_ward.php');
-
include_once($root_path.'modules/insurance_co/model/class_insurance.php');
-
- # Create encounter object
- $encounter_obj=new Encounter();
- # Load the wards info
- $ward_obj=new Ward;
- $items='nr,name';
- $ward_info=&$ward_obj->getAllWardsItemsObject($items);
- # Get all encounter classes
- $encounter_classes=$encounter_obj->AllEncounterClassesObject();
- # Get the insurance classes */
- # Create new person's insurance object */
- $insurance_obj=new Insurance;
-
$insurance_classes=&$insurance_obj->getInsuranceClassInfoObject('class_nr,LD_var,name');
-
- if(!$GLOBAL_CONFIG['patient_service_care_hide']){
- # Get the care service classes
- $care_service=$encounter_obj->AllCareServiceClassesObject();
- }
- if(!$GLOBAL_CONFIG['patient_service_room_hide']){
- # Get the room service classes
- $room_service=$encounter_obj->AllRoomServiceClassesObject();
- }
- if(!$GLOBAL_CONFIG['patient_service_att_dr_hide']){
- # Get the attending doctor service classes
- $att_dr_service=$encounter_obj->AllAttDrServiceClassesObject();
- }
-}
-# Load GUI page
-require('./gui_bridge/default/gui_admission_list.php');
-?>
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Care2002-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/care2002-developers