2013年8月9日 星期五

自製一個窮舉法測試的小程式(按鍵精靈)

相較於web介面的系統可以直接用HTTP要求去處理,Window介面的系統似乎只能靠按鍵精靈來處理了

最近有個需求是測試一個輸入框從100000到999999的數值輸入

由於不太想撰寫按鍵精靈的Script,於是爬文找了些文章打算自己寫一個簡單的程式來處理

主要流程就是先用FindWindow找到要測試的視窗/子視窗/Form
接著用SetForegroundWindow取得焦點(因為測試的項目只有一個text控制項沒有focus問題)
最後用SendKeys.SendWait將要輸入的字串填入
建議送出後有一個短暫的暫停,否則在高速的迴圈中發送的要求可能會導致RPC失敗

C#模擬滑鼠鍵盤動作
http://roronoa.pixnet.net/blog/post/25312590-c%23-%3A-%E6%A8%A1%E6%93%AC%E6%BB%91%E9%BC%A0%E9%8D%B5%E7%9B%A4%E5%8B%95%E4%BD%9C

send “spacebar key” using SendKeys.sendwait()
http://stackoverflow.com/questions/3153394/send-spacebar-key-using-sendkeys-sendwait

2013年7月13日 星期六

心電圖資料電子化2

接續上一篇的內容,因為某些原因還是把批次轉換服務寫好了,並且找了dicom receiver測試,結果有些意外,有的可以接收有的會有錯誤,稍微查資料發現DICOM格式除了圖形之外還可以包含文字資料的報告等內容,且各科有已定義的ID(類似LDAP那種GUID分類模式),有的接收器會檢查是否全數的格式都能紀錄才轉換,如果有不認識的就會Reject上載的要求,是一種比較嚴謹的傳輸模式。

另外廠商寄給來的DICOM可以用GIMP開啟(對!就是那套Linux上的繪圖軟體),令人意外的發現,不過使用C# ECG Toolkit轉換的DICOM無法用GIMP開啟,推測裡面包含了一些額外的資料(病例號、機器參數、分析報表....),而廠商寄給來的是已經將這些資料轉換成圖像合併到原有的ECG紀錄上了是一張很單純的影像,所以才會有這種差別。


底下為測試使用的dicom receiver

ITC DICOMpiler
http://itc.wustl.edu/DICOMpiler/index.htm
十分簡易,似乎會過濾掉不認得的內容(接收到的檔案比送出的小)


Conquest DICOM
http://ingenium.home.xs4all.nl/dicom.html
滿完整的,內建Sqlite也可連接MySQL,帶有一個cgi程式可以在網頁中檢索(未測試)



ECG格式會有錯誤需手動調整
http://forum.image-systems.biz/viewtopic.php?f=33&t=13037&p=21124&hilit=ECG




可以在這邊找到更多資訊
http://www.mccauslandcenter.sc.edu/mricro/dicom/

原本想測試PacsOne,但是看起來架構滿龐大的就沒測試了,不過文件資訊很多可以參考PACS要注意哪些
http://www.pacsone.net/conformance.htm


順便補充一下,在C# ECG Toolkit的論壇有人打算製作MFER格式的轉換程式了,然後原作者年初開發了一個Html5介面的ECG Viewer (http://www.vanettinger.info/webecg/)

2013年7月4日 星期四

心電圖資料電子化

因為工作的關係會接觸到醫療資訊的東西,最近遇到一個需求是要將心電圖機的紀錄檔案數位化並上傳至醫院的電子病例系統中,這牽扯到幾個關鍵,首先心電圖機必須有檔案輸出的功能,如果完全無輸出就需要看這篇了。

目前碰到的是FX-8322這款機器,有內建RJ-45的乙太網路接頭可以採用FTP連線上傳檔案(不過V01.04版本韌體的FTP功能是不支援WINDOWS系統的FTP,Bug在工程版已修正),可以輸出的格式為FUKUDA自己的ECG格式、MFER(日系的規格)、FDA XML(美規,某些地方會寫HL7 aECG),因為這幾種輸出格式都是資料數值,而非圖形化的心電圖波形,所以無法直接轉入電子病歷(目前多數醫院的認知:電子病例=紙本掃描,只是將紙本改成顯示在螢幕上而已,與資料再利用或電腦分析無關),所以需要將這些原始數值資料轉換為圖像資訊。

而在醫療領域圖像資訊標準為DICOM,DICOM包含檔案格式與傳輸模式兩個部分,可以利用「C# ECG Toolkit」這工具先將FDA XML轉換成DICOM格式檔案(可用呼叫外部命令的方式),再利用「Fellow Oak DICOM for .NET」將資料上傳至遠端的主機上,因為FX-8322使用FTP上傳檔案,所以必須有一台FTP Server接收這些FDA XML,在利用程式去偵測是否有新的上傳檔案,有的話就轉檔案並作後續的上傳,為了避免人為介入,可以將整個程式寫成背景執行服務來運作。

可使用.net的FileSystemWatcher來偵測目錄內的檔案變動


C# ECG Toolkit
http://sourceforge.net/projects/ecgtoolkit-cs/


Fellow Oak DICOM for .NET
https://github.com/rcd/fo-dicom


Watching Folder Activity in C# .NET
http://www.codeproject.com/Articles/25443/Watching-Folder-Activity-in-C-NET


ITC DICOMpiler
http://itc.wustl.edu/DICOMpiler/index.htm


PACS (醫療影像儲傳系統)
https://zh.wikipedia.org/wiki/%E9%86%AB%E7%99%82%E5%BD%B1%E5%83%8F%E5%84%B2%E5%82%B3%E7%B3%BB%E7%B5%B1


(在此只是提出一個可行的方案的可行性評估,並未實作請不要來要Code)

2013年4月6日 星期六

該放下了嗎?

去年這個時候離開公司進入成大的時候,心裡所想的是「是否還有轉圜的空間」,所以才選擇還留在臺南,到目前看來的結論是「我們有各自的包袱,沒有太多的空間可以去改變」,然而時間依然向前走,市場也一直再改變,我已無心再等待下去。

也許是時候放下了吧!

畢竟嘗試過了,只是結果失敗了。

離開成大

很快的一轉眼又來到四月了,依稀記得去年的這個時候剛離開公司,暫時轉往成大,雖然是專案也遇到不少有趣的人事物,為期九的月的專案如期結束了,也從正職轉為工讀,回到臺中過年後陸續跑了幾次交接與維修,系統也都上了軌道。

這段時間很高興能與團隊共事,雖然大家都不熟絡但氣氛十分融洽,在面對問題時能一起組織、討論、分工去解決,這是第一次參與感覺有團隊模式的工作,受益匪淺。

Blog搬家囉

因為原有的VPS要到期了,回想後卻發現使用率不如預期,所以就不想續租了,至於網頁空間的部份,近期應該沒有機會碰網頁程設(連維護都有點懶了),打算空間也不租了,於是利用四天連假的時間,將WP的資料轉換到Blogger中,不過Blogger沒有私密功能所以有些文章就神隱了~目前文章有270多篇,希望減少一點雜事之後,能有更多時間專心在寫Blog(好像每次搬家都這麼說~

2012年10月17日 星期三

爆料

前天聽了中華電信的雲端推廣會,發現有提到雲端儲存的box服務,感覺似乎是雲端資料櫃,幾個月前朋友有用過告訴我可以同步資料,因為已經使用Dropbox所以就不是很感興趣,前一陣子想到就試用了一下,蒐集了資料看有沒有利用的價值,首先沒有公開的api,要用程式自動執行想必又要分析噁心的html網頁,華碩的webstorage有公開的api(只是授權管很緊),再來就是除了登入頁面之外,內容頁面完全沒有使用ssl,所以當下就放棄了;晚上閒來無事就玩了一下雲端資料櫃的windows client,果然如猜測的,同步檔案時未使用加密連線傳輸內容,client也未自行加密或壓縮,修改檔案也使用完整傳輸也就是說如果在不安全的網路情況下使用,同步的資料是能完整的被還原的(如果使用差異更新,只有變動的部份會傳送)