
星期二, 2月 03, 2015
星期二, 9月 10, 2013
星期四, 6月 06, 2013
Python 沒有 switch - case
雖然在用 Python,但還是算初學者,一堆指令的用法和細節,都常常要上網找語法來用。這次突然翻到,Python 沒有 switch - case,喔喔喔!!有人整理過各種程式語言的switch - case,想不到連古老的COBOL 85也有類似的語法,更不用講在Python之後的Ruby或Perl了。
我是還沒寫到這麼高階的功能啦,不過看看別人怎麼處理這個問題也好。其實,書上會寫,要用if...elif...elif...else來處理這個問題。但是也有人想直接改別人的c code或php code而不要重寫,所以才會想出這些處理方法。
主要的參考網頁為 azalea says及 ActiveState Code,其實可以看看ActiveState Code下面的討論串,原來一個簡單的問題,其實有蠻多不同的創意解決方案,而不是教科書上寫的單一教條。
第一個方法是用Dictionary,第二個方法其實也是用Dictionary,再加上lambda。第三個方法就比較貼近我想的,直接寫一個 class來處理,以下的code,是2005年Brian Beck 就寫好的,來自於ActiveState Code,在此宣告他們的版權。
我是還沒寫到這麼高階的功能啦,不過看看別人怎麼處理這個問題也好。其實,書上會寫,要用if...elif...elif...else來處理這個問題。但是也有人想直接改別人的c code或php code而不要重寫,所以才會想出這些處理方法。
主要的參考網頁為 azalea says及 ActiveState Code,其實可以看看ActiveState Code下面的討論串,原來一個簡單的問題,其實有蠻多不同的創意解決方案,而不是教科書上寫的單一教條。
第一個方法是用Dictionary,第二個方法其實也是用Dictionary,再加上lambda。第三個方法就比較貼近我想的,直接寫一個 class來處理,以下的code,是2005年Brian Beck 就寫好的,來自於ActiveState Code,在此宣告他們的版權。
星期三, 6月 05, 2013
[解決] 用 Python來開 Microsoft Access的.mdb資料檔的中文欄位問題
又開始沒事找事做,開始改之前寫好的程式了。
在之前的文章:用 Python來開 Microsoft Access的.mdb資料檔曾經提到
後來有熱心網友提供了他的心得:用微軟提供的元件 ADODB 來存取 Access。所以我也很快樂的在新版程式中 import這些功能。一個不錯的使用方法及副程式,可以在AlarmChang所維護的Python NoteBook中找到程式碼,基本上直接copy就很好用了。
但是,還是一樣,一但整份.py文件儲存時是使用utf-8,那就完了,一直出現error。
重點是,我突然發現,在
這一段,其實是丟一個字串(SQL)給Microsoft ADODB COM去解譯,那我丟的字串符合它要的編碼規定(在我之前的文章有提,就是用ansi儲存的編碼),就可以了吧。
在之前的文章:用 Python來開 Microsoft Access的.mdb資料檔曾經提到
"pyodbc 是个很不错的库,api 也很好用,不过对中文支持的并不好"我的經驗也是如此。原始資料庫的開發者沒事把欄位名稱用上中文,結果就是我花了好久時間,還是不能用sql語法的where來限制欄位的比對結果。
後來有熱心網友提供了他的心得:用微軟提供的元件 ADODB 來存取 Access。所以我也很快樂的在新版程式中 import這些功能。一個不錯的使用方法及副程式,可以在AlarmChang所維護的Python NoteBook中找到程式碼,基本上直接copy就很好用了。
但是,還是一樣,一但整份.py文件儲存時是使用utf-8,那就完了,一直出現error。
重點是,我突然發現,在
SQL = "Select * from TableABC" rs = Connect_To_Access(SQL)
這一段,其實是丟一個字串(SQL)給Microsoft ADODB COM去解譯,那我丟的字串符合它要的編碼規定(在我之前的文章有提,就是用ansi儲存的編碼),就可以了吧。
星期三, 5月 08, 2013
用 Python來開 Microsoft Access的.mdb資料檔
其實 Python算是蠻容易了解的語言,至少在語法上算是蠻貼近於我們使用的文字,加上眾多的函式庫的支援,幾乎就是你要的函式大多都可以找到。加上它算是網路世代的程式語言,在網路功能的支援也不惶多讓。不過,沒好好唸過程式語言的我,對於其中的物件還是不太熟悉。
我會使用Python,也是被逼的。當初要交程式報告時,實在是搞不懂要怎麼去get及put網頁資料。看過java及C,直覺並不是我可以在一個假日就完成這樣工作的。因為之前稍稍有看過Python的網頁,它的語法和basic,pascal或Matlab都蠻像的,而且可以查得到網頁相關的功能。
這幾年都接了單位的"品質"精進作業。每年都要想一個品質專案,因為有些事是不得搬上抬面的,所以大家都做些顯而易見,不傷大雅的議題。今年我特別抄去年的專案,只是用 Python寫好電子化的處理方案。在用Python處理時,遇見資料庫讀寫的問題,因為實在太少資料了,所以拿上來分享一下。
先說我的狀況:就是要去開一個已有的.mdb檔,讀出裏面的資料,再上傳到單位的網頁中。為了讀database檔,Python簡單解決方案為使用pyodbc,或是使用pypyodbc。兩者都可以讀一些主流的sql server,以及Microsoft excel和access的存檔。兩者的差異只有pypyodbc是純python的程式碼實作出來的。打開.mdb檔的方式如下:
我會使用Python,也是被逼的。當初要交程式報告時,實在是搞不懂要怎麼去get及put網頁資料。看過java及C,直覺並不是我可以在一個假日就完成這樣工作的。因為之前稍稍有看過Python的網頁,它的語法和basic,pascal或Matlab都蠻像的,而且可以查得到網頁相關的功能。
這幾年都接了單位的"品質"精進作業。每年都要想一個品質專案,因為有些事是不得搬上抬面的,所以大家都做些顯而易見,不傷大雅的議題。今年我特別抄去年的專案,只是用 Python寫好電子化的處理方案。在用Python處理時,遇見資料庫讀寫的問題,因為實在太少資料了,所以拿上來分享一下。
先說我的狀況:就是要去開一個已有的.mdb檔,讀出裏面的資料,再上傳到單位的網頁中。為了讀database檔,Python簡單解決方案為使用pyodbc,或是使用pypyodbc。兩者都可以讀一些主流的sql server,以及Microsoft excel和access的存檔。兩者的差異只有pypyodbc是純python的程式碼實作出來的。打開.mdb檔的方式如下:
###打開.mdb檔的方式 conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\\dir\\file.mdb') cursor = conn.cursor() cursor.execute('select * from ProgressNote;') ###
星期四, 2月 28, 2013
氣管內雷射
常有人問我,我的專長是什麼。我制式的回答是:胸腔介入性檢查及治療。
但是什麼是介入性檢查及治療?基本上就是支氣管鏡檢查及治療、超音波檢查及治療。
最具代表性的支氣管鏡治療就是這個 (用影片來說比較快,所要講的也都打在影片中了):
沒有個人資訊,應該不會侵犯隱私吧!
但是什麼是介入性檢查及治療?基本上就是支氣管鏡檢查及治療、超音波檢查及治療。
最具代表性的支氣管鏡治療就是這個 (用影片來說比較快,所要講的也都打在影片中了):
沒有個人資訊,應該不會侵犯隱私吧!
星期日, 2月 24, 2013
Case Report 和 impact factor
這一陣子幫 fellow們投 Case Report,可謂是吃力不討好。連續丟了好幾個 Journal都是 Reject。而且,一堆 Journal幾乎都不收 Case Report了,為什麼?
我們來看美國 Neth Heart J 怎麼樣來評 Case report的:
我們來看美國 Neth Heart J 怎麼樣來評 Case report的:
星期五, 11月 23, 2012
我們不太熟的老朋友:PENTAX 全電子式支氣管鏡 -- 離情依依
又有一個老朋友要離我們而去了。雖然說,胸腔部的同仁對它可能是又愛又恨,或是一點感情都沒有,但是它仍舊是默默的躲在牆邊守候著。
這次的主角是它,PENTAX EPM-3300 及 EB-1830T3系列的全電子式支氣管鏡-Videobronchsocpe 組。

這一組電子式的支氣管鏡,應該算是台灣第一組全電子式的支氣管鏡了吧。
這次的主角是它,PENTAX EPM-3300 及 EB-1830T3系列的全電子式支氣管鏡-Videobronchsocpe 組。
這一組電子式的支氣管鏡,應該算是台灣第一組全電子式的支氣管鏡了吧。
星期五, 11月 09, 2012
程式專題之一:Part-1:py2exe 的小問題
經過2週和程式的奮鬥,基本上我那個程式是完成了。
但是程式是要給別人用的,所以就只好打包成exe檔。
python自己沒有compile成exe的功能。還好有人寫了py2exe的程序來做這件事。研究了一下,這位Victor寫的進階教學還算不錯,只是它打包的是程式本身,程式呼叫的DLL檔是沒打包起來的。
尤於我用的是python 2.7.2版,直接上py2exe的官網下載並且安裝。這個過程中出現了一個小插曲,py2exe的官網上直接給的是for python 2.6的py2exe,所以要再去它的下載目錄中找出for 2.7的py2exe來裝才可以。
那,程式呼叫的DLL檔要怎麼辦?只好再上網找答案。還好我是新手,新手會遇到的問題應該都不難。很快的在Frank的五四三就找到答案了。基本上在setup這個裏面要把參數設進去即可。這樣弄好,本來約200行的程式(我是新手,程式寫得很髒,行數很多,而且註解也很多),compile起來約有7M。
接著拿去別的電腦測測看,嗶嗶~~ERROR。跳出一個message說程式沒裝好???只好再拜google大神了。大神指示往pyodbc去找答案。果然,答案就在網路中。這個問題是因為py2exe不認識我import的pyodbc,必須在setup中加個options來指定,如下:
想說,這樣應該好了吧。一執行,哇咧,為什麼又有錯誤,還有log檔給我。這次有錯誤訊息了,表示至少程式有跑到,而錯誤訊息是:
終於........
休息了,真好!
但是程式是要給別人用的,所以就只好打包成exe檔。
python自己沒有compile成exe的功能。還好有人寫了py2exe的程序來做這件事。研究了一下,這位Victor寫的進階教學還算不錯,只是它打包的是程式本身,程式呼叫的DLL檔是沒打包起來的。
尤於我用的是python 2.7.2版,直接上py2exe的官網下載並且安裝。這個過程中出現了一個小插曲,py2exe的官網上直接給的是for python 2.6的py2exe,所以要再去它的下載目錄中找出for 2.7的py2exe來裝才可以。
那,程式呼叫的DLL檔要怎麼辦?只好再上網找答案。還好我是新手,新手會遇到的問題應該都不難。很快的在Frank的五四三就找到答案了。基本上在setup這個裏面要把參數設進去即可。這樣弄好,本來約200行的程式(我是新手,程式寫得很髒,行數很多,而且註解也很多),compile起來約有7M。
接著拿去別的電腦測測看,嗶嗶~~ERROR。跳出一個message說程式沒裝好???只好再拜google大神了。大神指示往pyodbc去找答案。果然,答案就在網路中。這個問題是因為py2exe不認識我import的pyodbc,必須在setup中加個options來指定,如下:
setup(如果有有指定別的option了,可以用"逗號"分開。
options = { "py2exe": { "includes": "decimal, datetime" } })
想說,這樣應該好了吧。一執行,哇咧,為什麼又有錯誤,還有log檔給我。這次有錯誤訊息了,表示至少程式有跑到,而錯誤訊息是:
EOFError: EOF when reading a line。還是來問Google大神吧。還好,還不是很難的問題,大神這次指示往這兒去,會遇到貴人。果然,又是個小問題,原來之前的Victor大大功力太高,都寫GUI的程式,不像小弟我的處女作只是在CONSOLE上跑。所以要把SETUP中的
window = [{'script': "python.py"}],改成
console = [{'script': "python.py"}],
終於........
休息了,真好!
星期一, 11月 05, 2012
程式專題之一:Part-1:用python連接資料庫
這次的工作,是要連接local的資料庫,把資料庫中的資料"倒"到網頁的表格中。
有人已經為python寫好資料庫的函式了,那個叫做pyodbc。它可以操作mysql, mssql, excel及MS access。
個人大部份的程式碼抄自於這個地方。另外參考這位大大的論述。其實,pyodbc的主網頁wiki及faq也應該去看看,只是提及MS access的部份實在太少。
其實,我很偷懶的做了一些精省,主要是不想去碰sql語法,以及我要解析的資料庫竟然都用中文當欄位名稱。在python我搞中文搞很久,過一陣子再把我搞中文的心得po出來。不過,這時候只想讓程式可以跑就好,所以就把整個資料拉出來在python中處理了。
有人已經為python寫好資料庫的函式了,那個叫做pyodbc。它可以操作mysql, mssql, excel及MS access。
個人大部份的程式碼抄自於這個地方。另外參考這位大大的論述。其實,pyodbc的主網頁wiki及faq也應該去看看,只是提及MS access的部份實在太少。
其實,我很偷懶的做了一些精省,主要是不想去碰sql語法,以及我要解析的資料庫竟然都用中文當欄位名稱。在python我搞中文搞很久,過一陣子再把我搞中文的心得po出來。不過,這時候只想讓程式可以跑就好,所以就把整個資料拉出來在python中處理了。
星期五, 10月 19, 2012
程式專題之一:Part-1:Python的網頁代登方法
其實,寫程式是一件事,最重要的應該是用程式解決"生 命"中的問題。
嗯,講得太噁心了。
所以,我第一步是要解決某個行政上的事,把它當作我練功的轉案。至於是什麼事,大家看看應該也可以猜出來。
然後咧,第一步要先用程式代為登入內部網頁。所以需要一個代登功能。
這個也是為什麼我要選擇Python的原因之一,因為看來看去,Python是跟著網路一起長大的,它在網路控制、網頁處理的方面之強大不是隨便講的。雖然JAVA和JAVAscript也是,但是它的語法就是有點讓我.......無法理解 [我知道,我很笨] [畫圈圈]
至於要怎麼做,最簡單的是import cookielib, urllib2進來就是了。
詳請可以看這個:

如何,夠簡單的吧!!
嗯,講得太噁心了。
所以,我第一步是要解決某個行政上的事,把它當作我練功的轉案。至於是什麼事,大家看看應該也可以猜出來。
然後咧,第一步要先用程式代為登入內部網頁。所以需要一個代登功能。
這個也是為什麼我要選擇Python的原因之一,因為看來看去,Python是跟著網路一起長大的,它在網路控制、網頁處理的方面之強大不是隨便講的。雖然JAVA和JAVAscript也是,但是它的語法就是有點讓我.......無法理解 [我知道,我很笨] [畫圈圈]
至於要怎麼做,最簡單的是import cookielib, urllib2進來就是了。
詳請可以看這個:
如何,夠簡單的吧!!
星期日, 6月 24, 2012
健保核刪之~~我就是要刪
這是今年(2012)第一季的核刪。難得這次的核刪清單這麼快就出現了,以往,沒拖到你徹底忘記病人長得是圓的扁的,是生過什麼病之前,是不會出現的。
這次核刪的特色,勉強來說,就是把支氣管鏡檢查(Fiberbronchoscopy or Flexiblebronchoscopy)都刪掉了。我們主任收到的,是一名加護病房病患,用支氣管鏡來抽掉濃痰並送檢。只有支氣管鏡被刪了,但是其他送出去的檢體卻沒有。
而我收到的是這一張:

一樣,是刪掉支氣管鏡。清單上說理由後附,不過,我們翻過去:
這次核刪的特色,勉強來說,就是把支氣管鏡檢查(Fiberbronchoscopy or Flexiblebronchoscopy)都刪掉了。我們主任收到的,是一名加護病房病患,用支氣管鏡來抽掉濃痰並送檢。只有支氣管鏡被刪了,但是其他送出去的檢體卻沒有。
而我收到的是這一張:

一樣,是刪掉支氣管鏡。清單上說理由後附,不過,我們翻過去:
星期日, 2月 19, 2012
做過最剌激的支氣管鏡切片
這個是real-time EndoBronchial UltraSound(EBUS) guided TransBronchial Needle Aspiration(TBNA)。只是這次做的是心臟旁的病灶,後面一直在跳的那一沱就是心臟。針進去後只離心臟大約1公分。

做intervension 的人,心臟要夠強。

做intervension 的人,心臟要夠強。
星期五, 12月 23, 2011
陪伴著我們20多年的朋友:螢光透視平台 (Fluoroscopy) -- 拆解篇
要拆解的那一天到了,出動了3位老牌工程師來處理。這台機器似乎也是其中兩位工程師來組裝的,當初,全台好像總共安裝了5台。而我們家這一台應該是最後一台報廢的吧,我不知道他們會不會有我這種不捨的感覺。
▼▼▼▼工程師打開主機,一個個零件、模組拆卸下來

▼▼▼▼工程師打開主機,一個個零件、模組拆卸下來

陪伴著我們20多年的朋友:螢光透視平台 (Fluoroscopy) -- 最後身影
隨著科技的進步,不只開發製造了新東西,也創造了不少的濱臨絕種或已絕種的機器和技術。在我們胸腔科,最明顯的就是所謂的支氣管攝影(bronchogram),在CT發明之後,它的重要性越來越不重要,然後,在10多年前宣告絕跡。
在台灣,因為給付全部來自於"中央健保局" ,給付的高低也造就了不少濱臨絕種的檢查。螢光透視攝影指引的支氣管鏡檢查就是其中一個,因為螢光透視攝影的機器+場地成本高於超音波指引的支氣管鏡檢查,給付又是超音波指引比較高(差了3倍以上),因此,它只剩台北榮總胸腔部有維持著這樣的傳統及設備。
▼▼▼ 這就是陪伴我們20多年的 螢光透視攝影室 (Fluoroscopy) 裏的設備

在台灣,因為給付全部來自於"中央健保局" ,給付的高低也造就了不少濱臨絕種的檢查。螢光透視攝影指引的支氣管鏡檢查就是其中一個,因為螢光透視攝影的機器+場地成本高於超音波指引的支氣管鏡檢查,給付又是超音波指引比較高(差了3倍以上),因此,它只剩台北榮總胸腔部有維持著這樣的傳統及設備。
▼▼▼ 這就是陪伴我們20多年的 螢光透視攝影室 (Fluoroscopy) 裏的設備
星期三, 10月 01, 2008
新.科技防癌美學 – Pentax SAFE-3000 自體螢光支氣管鏡

時間拉回到去年九月的韓國首爾的世界肺癌大會,諾大的Exhibition,除了滿滿的poster外,就是廠商區的promotion。這兒不是台北電腦展或是車展,沒有熱舞的show girl(即使有,在學術氣息充斥的場上也格格不入吧),但是只要是人群聚集的地方,就是科技和學術之所在。在胸腔科的武器,氣管-支氣管鏡,當然也是廠商參展的大宗。
1967年後,隨著日本池田等人研製的光纖支氣管鏡(或稱為軟式支氣管鏡)應用到臨床,我們終於可以用比較簡單的方式,不須要全身麻醉就可以直視氣管內的構造。它可以探查是否有構造上的問題,是否有腫瘤的生長。同時,一些檢查步驟,如經支氣管鏡肺切片(TBLB),支氣管肺泡灌洗(BAL)技術及各種介入性治療工具的出現,支氣管鏡檢查術在臨床上的應用又得到了進一步的普及和提高。近年來,隨著電子零件的縮小化,攝影機也可以做到支氣管鏡中,使得電子式的支氣管鏡逐步在取代光纖支氣管鏡。也因此開發了螢光支氣管鏡的製作。目前,支氣管鏡不僅可被用於診斷和治療氣管支氣管內病變,甚至可以幫助支氣管肺癌的分期,指導治療。
星期三, 9月 24, 2008
自體螢光支氣管鏡--測試照流出
之前提到,全台第一部的SAFE-3000在台裝機了。那,效果如何呢??
今天就丟個兩張測試照上來供大家看看:
(PS. 為了病患隱私,我也無法從照片中辨識出是誰了)。

▲這是一般的白光照片(不是孫燕姿的綠光喔...誤),即所謂的White light bronchoscopy。可以看到氣管內紅紅的、正常的黏膜。在中央部份(綠色箭頭圍起)即是腫瘤組織,有沒有和週邊氣管格格不入的感覺呀?
今天就丟個兩張測試照上來供大家看看:
(PS. 為了病患隱私,我也無法從照片中辨識出是誰了)。
▲這是一般的白光照片(不是孫燕姿的綠光喔...誤),即所謂的White light bronchoscopy。可以看到氣管內紅紅的、正常的黏膜。在中央部份(綠色箭頭圍起)即是腫瘤組織,有沒有和週邊氣管格格不入的感覺呀?
星期日, 5月 11, 2008
PEAK 電漿手術刀
這是我常看的癮科技上介紹的,已完成臨床測試且有不錯評價的 PEAK 電漿手術刀。這把手術刀與傳統的電刀( 如 bovie cutter )不同之處在於它採用脈衝電漿能量來切割組織。電漿的產品不少,常用的如家中的平面電視。而電漿在醫療界的用途也不少,最常用的是內視鏡中用來止血、切割和清除腫瘤。這回,電漿走出陰暗的內視鏡中,到我們平常用的手術上。
18禁 - 展示影片
網站上的介紹影片,傳說相當血淋淋呈現實況的影片。其實看過了之後,我個人覺得還算好,只是那示範影片用的是離體外科練習用的皮膚組織,無論是用什麼刀都沒什麼出血量,沒辦法展現這種刀的優點。不過,光是那個切下去的順暢度和沒有電刀產生的煙,就值得了。
再提一下,剛有提到,電漿本身就可以用來止血,而且它影響組織的深度也相對於電刀和雷射而言是較淺的,相當適合來當手術刀。
美國剛通過使用,台灣的健保會不會給付呢?................當我沒問好了。
引用來源:癮科技
PEAK PlasmaBlade 新聞稿
18禁 - 展示影片
網站上的介紹影片,傳說相當血淋淋呈現實況的影片。其實看過了之後,我個人覺得還算好,只是那示範影片用的是離體外科練習用的皮膚組織,無論是用什麼刀都沒什麼出血量,沒辦法展現這種刀的優點。不過,光是那個切下去的順暢度和沒有電刀產生的煙,就值得了。
再提一下,剛有提到,電漿本身就可以用來止血,而且它影響組織的深度也相對於電刀和雷射而言是較淺的,相當適合來當手術刀。
美國剛通過使用,台灣的健保會不會給付呢?................當我沒問好了。
引用來源:癮科技
PEAK PlasmaBlade 新聞稿
訂閱:
文章 (Atom)