在6天內輸注3U 分離術血小板(RhD+),第7天時測得產生抗體(anti-D),應該是血袋中殘留的紅血球造成的 ,還好病人是男性,不會有生產的問題。
*6月16日PLT = 3 x1000/ul
**備血,Antibody screening:Negative
**輸注分離術血小板 6/16 x 1U, 6/18 x 1U
*6月19日 PLT= 12 x1000/ul
**備血,Antibody screening:Negative
**輸注分離術血小板 6/20 x 1U
*6月22日 PLT= 5 x1000/ul
**備血,Antibody screening:Positive, Ab ID result: anti-D
在第一天 20080429 有些工作上有趣的事很想記下來。可是好像每天都超忙,也不知道能記錄多少...ㄣ...任何事(有趣的、令人生氣的、奇怪的老闆、奇怪的顯微鏡下看到的東西...還有些什麼呢?)
2010年6月23日 星期三
2010年6月13日 星期日
文件掃描系統備份
備份在不同的電腦(掃描備份.bat)
@echo off
rem // copy to local (different directory)
cd d:\
xcopy d:\檢驗科\*.* c:\檢驗科scan備份\ /s /y
rem // copy to web directory (before transform)
NET USE o: \\192.168.xx.xx\d$\檢驗科 /user:lis2k
xcopy d:\檢驗科\*.* O:\ /y /s
NET USE O: /delete
rem // rename d:\檢驗科 加上日期
rem cd d:\
rename 檢驗科 檢驗科%Date:~4,4%%date:~9,2%%date:~12,2%
cd c:\appserv\php5
php -f filetransfer.php >> filetransfer.log
(2) filetransfer.php
//include mdb2
require_once("config.inc.php");
$scanDir="d:/檢驗科";
//check $dest_dir_name in function getDirectory
getDirectory( $scanDir );
for ($i=1;$i<=5;$i++){
//每次刪減一個level的目錄
delEmptyDirectory( $scanDir );
}
echo "Files Transfered";
//test empty directory
function is_empty_dir($dir)
{
if (($files = @scandir($dir)) && count($files) <= 2) {
return true;
}
return false;
}
//delete empty directory
function delEmptyDirectory($path){
$ignore = array( 'cgi-bin', '.', '..' );
$dh = @opendir( $path );
while( false !== ( $file = readdir( $dh ) ) ){
if( !in_array( $file, $ignore ) ){
if( is_dir( "$path/$file" ) ){
if (($files = @scandir("$path/$file")) && count($files) <= 2) {
rmdir("$path/$file");
}else{
delEmptyDirectory( "$path/$file", ($level+1) );
} //if 空目錄刪除, else 往下scan
} //if is_dir
} //if !in_array
} // while( false !== ( $file = readdir( $dh ) ) )
closedir( $dh );
} //function delEmptyDirectory
//test recursive directory list
function getDirectory( $path = '.', $level = 0 ){
global $mdb2;
$today=date("Ymd");
echo "$today files transfer start....\n";
//if backup to different dir, change the path below
$dest_dir_name="i:/backup/$today/";
//backup destination directory with date 2010(Y)04(m)22(d) sub-directory
if (!is_dir($dest_dir_name)){
mkdir($dest_dir_name);
echo "create dir $dest_dir_name \n";
//如果沒有這個目錄,mkdir
}
$ignore = array( 'cgi-bin', '.', '..' );
// Directories to ignore when listing output. Many hosts
// will deny PHP access to the cgi-bin.
$dh = @opendir( $path );
// Open the directory to the handle $dh
while( false !== ( $file = readdir( $dh ) ) ){
// Loop through the directory
if( !in_array( $file, $ignore ) ){
// Check that this file is not to be ignored
// $spaces = str_repeat( ' ', ( $level * 4 ) );
// Just to add spacing to the list, to better
// show the directory tree.
if( is_dir( "$path/$file" ) ){
// Its a directory, so we need to keep reading down...
// echo $i++."$spaces $path/$file
";
// unmark to echo directory name
getDirectory( "$path/$file", ($level+1) );
echo "go subDir $path/$file \n";
// Re-call this same function but on a new directory.
// this is what makes function recursive.
} else {
$full_path="$path/$file";
// echo $i++."$spaces $path/$file
";
$path_parts = pathinfo($full_path);
$file_mod_time=date ("YmdHis", filemtime($full_path));
$source_dir_name= $path_parts['dirname'];//directory
$source_file_name= $path_parts['basename'];//filename with ext
$dest_file_name= md5_file($full_path);//filename change to md5
$file_ext=$path_parts['extension'];//file ext
$source_file_name_no_ext= $path_parts['filename']; // since PHP 5.2.0, filename without ext
rename($full_path,"$dest_dir_name/$dest_file_name.$file_ext");
// exec_sql("insert into file_search(source_dir_name,source_file_name,dest_dir_name,dest_file_name,file_ext) values('$source_dir_name','$source_file_name','$dest_dir_name','$dest_file_name','$file_ext')");
exec_sql("insert into file_search(source_file_name,dest_dir_name,dest_file_name,file_ext,file_mod_time) values('$full_path','$today/','$dest_file_name','$file_ext','$file_mod_time')");
// echo "$path/$file".md5_file("$path/$file")."
";
// Just print out the filename
} //if is_dir
} //if !in_array
} // while( false !== ( $file = readdir( $dh ) ) )
closedir( $dh );
// Close the directory handle
} //function getDirectory
?>
@echo off
rem // copy to local (different directory)
cd d:\
xcopy d:\檢驗科\*.* c:\檢驗科scan備份\ /s /y
rem // copy to web directory (before transform)
NET USE o: \\192.168.xx.xx\d$\檢驗科 /user:lis2k
xcopy d:\檢驗科\*.* O:\ /y /s
NET USE O: /delete
rem // rename d:\檢驗科 加上日期
rem cd d:\
rename 檢驗科 檢驗科%Date:~4,4%%date:~9,2%%date:~12,2%
- 備份檔案轉入網頁資料庫
cd c:\appserv\php5
php -f filetransfer.php >> filetransfer.log
(2) filetransfer.php
//include mdb2
require_once("config.inc.php");
$scanDir="d:/檢驗科";
//check $dest_dir_name in function getDirectory
getDirectory( $scanDir );
for ($i=1;$i<=5;$i++){
//每次刪減一個level的目錄
delEmptyDirectory( $scanDir );
}
echo "Files Transfered";
//test empty directory
function is_empty_dir($dir)
{
if (($files = @scandir($dir)) && count($files) <= 2) {
return true;
}
return false;
}
//delete empty directory
function delEmptyDirectory($path){
$ignore = array( 'cgi-bin', '.', '..' );
$dh = @opendir( $path );
while( false !== ( $file = readdir( $dh ) ) ){
if( !in_array( $file, $ignore ) ){
if( is_dir( "$path/$file" ) ){
if (($files = @scandir("$path/$file")) && count($files) <= 2) {
rmdir("$path/$file");
}else{
delEmptyDirectory( "$path/$file", ($level+1) );
} //if 空目錄刪除, else 往下scan
} //if is_dir
} //if !in_array
} // while( false !== ( $file = readdir( $dh ) ) )
closedir( $dh );
} //function delEmptyDirectory
//test recursive directory list
function getDirectory( $path = '.', $level = 0 ){
global $mdb2;
$today=date("Ymd");
echo "$today files transfer start....\n";
//if backup to different dir, change the path below
$dest_dir_name="i:/backup/$today/";
//backup destination directory with date 2010(Y)04(m)22(d) sub-directory
if (!is_dir($dest_dir_name)){
mkdir($dest_dir_name);
echo "create dir $dest_dir_name \n";
//如果沒有這個目錄,mkdir
}
$ignore = array( 'cgi-bin', '.', '..' );
// Directories to ignore when listing output. Many hosts
// will deny PHP access to the cgi-bin.
$dh = @opendir( $path );
// Open the directory to the handle $dh
while( false !== ( $file = readdir( $dh ) ) ){
// Loop through the directory
if( !in_array( $file, $ignore ) ){
// Check that this file is not to be ignored
// $spaces = str_repeat( ' ', ( $level * 4 ) );
// Just to add spacing to the list, to better
// show the directory tree.
if( is_dir( "$path/$file" ) ){
// Its a directory, so we need to keep reading down...
// echo $i++."$spaces $path/$file
";
// unmark to echo directory name
getDirectory( "$path/$file", ($level+1) );
echo "go subDir $path/$file \n";
// Re-call this same function but on a new directory.
// this is what makes function recursive.
} else {
$full_path="$path/$file";
// echo $i++."$spaces $path/$file
";
$path_parts = pathinfo($full_path);
$file_mod_time=date ("YmdHis", filemtime($full_path));
$source_dir_name= $path_parts['dirname'];//directory
$source_file_name= $path_parts['basename'];//filename with ext
$dest_file_name= md5_file($full_path);//filename change to md5
$file_ext=$path_parts['extension'];//file ext
$source_file_name_no_ext= $path_parts['filename']; // since PHP 5.2.0, filename without ext
rename($full_path,"$dest_dir_name/$dest_file_name.$file_ext");
// exec_sql("insert into file_search(source_dir_name,source_file_name,dest_dir_name,dest_file_name,file_ext) values('$source_dir_name','$source_file_name','$dest_dir_name','$dest_file_name','$file_ext')");
exec_sql("insert into file_search(source_file_name,dest_dir_name,dest_file_name,file_ext,file_mod_time) values('$full_path','$today/','$dest_file_name','$file_ext','$file_mod_time')");
// echo "$path/$file".md5_file("$path/$file")."
";
// Just print out the filename
} //if is_dir
} //if !in_array
} // while( false !== ( $file = readdir( $dh ) ) )
closedir( $dh );
// Close the directory handle
} //function getDirectory
?>
2010年6月2日 星期三
a loggable laboratory bullitin information pratice
a loggable laboratory bullitin information pratice.
您的實驗室都如何進行人員公告、SOP修訂閱讀紀錄?
使用E-MAIL?使用紙本一個人一個人蓋章?
您如何知道E-MAIL已經有效通知,人員於何時讀取?三班輪替的人員蓋完章要花多少時間?
同仁跟你反映過:什麼時候公告的?我不知道!?
我想讓這流程有效率一點,設計了公告紀錄網頁,與檢驗報告查詢系統連結。
程式碼還沒想好放在哪,有興趣可以直接找我拿。
系統需求:APACHE OR IIS 網頁伺服器, MYSQL, PHP+PEAR(auth, mdb2)
**program lists(in subDIR \msg)
table
**USER FRIENDLY INTERFACE
您的實驗室都如何進行人員公告、SOP修訂閱讀紀錄?
使用E-MAIL?使用紙本一個人一個人蓋章?
您如何知道E-MAIL已經有效通知,人員於何時讀取?三班輪替的人員蓋完章要花多少時間?
同仁跟你反映過:什麼時候公告的?我不知道!?
我想讓這流程有效率一點,設計了公告紀錄網頁,與檢驗報告查詢系統連結。
程式碼還沒想好放在哪,有興趣可以直接找我拿。
系統需求:APACHE OR IIS 網頁伺服器, MYSQL, PHP+PEAR(auth, mdb2)
**program lists(in subDIR \msg)
- ../login.php
- styles.css
- config.inc.php
- header.php
- index.php
- msg_add.php
- msg_edit.php
- msg_read_log.php
- msg_read_log_user.php
- msg_show.php
- sample_posteddata.php
table
- MSG_cont(
CREATE TABLE msg_cont (
m_id int(11) NOT NULL auto_increment,
m_date varchar(14) default NULL,
m_title1 varchar(128) NOT NULL default '',
m_title2 varchar(128) default NULL,
m_content text NOT NULL,
to_show char(1) NOT NULL default '1',
post_oper varchar(5) NOT NULL default '',
read_count int(11) default '1',
PRIMARY KEY (m_id),
FULLTEXT KEY m_content(m_content),
KEY post_oper(post_oper)
) TYPE=MyISAM COMMENT='message 內容'; - msg_read_log(
CREATE TABLE msg_read_log (
m_id int(11) NOT NULL default '0',
oper_id varchar(5) NOT NULL default '',
post_date varchar(14) default NULL,
read_date varchar(14) default '9',
remark varchar(64) NOT NULL default '',
PRIMARY KEY (m_id,oper_id),
KEY m_id(m_id),
KEY oper_id(oper_id)
) TYPE=MyISAM COMMENT='message read log'; - Msg_search(
CREATE TABLE msg_search (
m_id int(11) NOT NULL default '0',
m_key varchar(128) NOT NULL default '',
PRIMARY KEY (m_id,m_key),
FULLTEXT KEY m_key(m_key)
) TYPE=MyISAM; - Oper(
CREATE TABLE oper (
oper_id varchar(6) default NULL,
oper_name varchar(10) default NULL,
pswd_desc varchar(15) default NULL,
EXPER_TYPE varchar(10) default NULL,
e_mail varchar(60) default NULL,
auth_right varchar(10) NOT NULL default 'user',
UNIQUE KEY oper_id(oper_id)
) TYPE=MyISAM; - msg_cont_backup(
CREATE TABLE msg_cont_backup (
m_id int(11) NOT NULL auto_increment,
m_date varchar(14) default NULL,
m_title1 varchar(128) NOT NULL default '',
m_title2 varchar(128) default NULL,
m_content text NOT NULL,
to_show char(1) NOT NULL default '0',
post_oper varchar(5) NOT NULL default '',
read_count int(11) default '1',
PRIMARY KEY (m_id),
FULLTEXT KEY m_content(m_content),
KEY post_oper(post_oper)
) TYPE=MyISAM COMMENT='message 內容'; - msg_read_log_backup(
CREATE TABLE msg_read_log_backup (
m_id int(11) NOT NULL default '0',
oper_id varchar(5) NOT NULL default '',
post_date varchar(14) default NULL,
read_date varchar(14) default NULL,
remark varchar(64) NOT NULL default '',
KEY m_id(m_id)
) TYPE=MyISAM COMMENT='message read log';
**USER FRIENDLY INTERFACE
- CKEditor :可將word格式直接貼上,增加可讀性
- CKFinder:檔案上傳(未完成,中文檔名有問題)
- message 管理,選擇人員公佈
- message 可包括各組公告、SOP修改公告、
- message 可搜尋
- 人員登錄
- 依照登錄與 讀取公告,紀錄讀取公告時間
- 追蹤未讀取的名單
- 顯示各公告的讀取情況
2010年6月1日 星期二
更換 HEPA 注意事項
今天實驗室換 HEPA filter,聯絡人拿著相機狂拍。
過了一會兒,我路過在 BSC(Bio Safty Cabnet)旁,看到有個同事沒戴口罩還在團團轉做工,趕快請他戴上口罩(雖然不一定有用)。等我走遠了發現,奇怪,位於更遠位置的同事,以前都不戴口罩的,怎今天已經都武裝完備?那為什麼沒人告訴在"高危險區"的同事該戴口罩呢?同時,我發現"聯絡人"也已經戴上了口罩。
這群沒同事愛(幫他們想個台階,可能沒想到吧),沒安全觀念的人真該好好教教。如果沒戴口罩的人感染了什麼的,難道其他人躲得過麼?休息區在一起,每天也得見面講話的,以為實驗室有多大?
可能老闆會說:怎麼別人都知道要戴口罩,你不知道呢?
這是兩回事,就好像水庫洩洪時,有開警報警告民眾;跟直接放了水,再問民眾,你怎麼看到大水來了還不躲呢?
結論:更換 HEPA 注意事項,要先通知周邊相關人員,做好安全防護措施。更理想點,評估怎樣的防護設備才是有效的,並且提供相關設備。
過了一會兒,我路過在 BSC(Bio Safty Cabnet)旁,看到有個同事沒戴口罩還在團團轉做工,趕快請他戴上口罩(雖然不一定有用)。等我走遠了發現,奇怪,位於更遠位置的同事,以前都不戴口罩的,怎今天已經都武裝完備?那為什麼沒人告訴在"高危險區"的同事該戴口罩呢?同時,我發現"聯絡人"也已經戴上了口罩。
這群沒同事愛(幫他們想個台階,可能沒想到吧),沒安全觀念的人真該好好教教。如果沒戴口罩的人感染了什麼的,難道其他人躲得過麼?休息區在一起,每天也得見面講話的,以為實驗室有多大?
可能老闆會說:怎麼別人都知道要戴口罩,你不知道呢?
這是兩回事,就好像水庫洩洪時,有開警報警告民眾;跟直接放了水,再問民眾,你怎麼看到大水來了還不躲呢?
結論:更換 HEPA 注意事項,要先通知周邊相關人員,做好安全防護措施。更理想點,評估怎樣的防護設備才是有效的,並且提供相關設備。
訂閱:
文章 (Atom)