張碩瑞,許東來
(北京工業(yè)大學(xué) 機械工程與應(yīng)用電子技術(shù)學(xué)院,北京 100124)
我國超過50%的人治病時服用中藥;患病就醫(yī)時,首選中藥治療者占24%;幾乎所有人在一生中都使用過中藥[1]。中藥能提高人體的免疫力,有利于病人恢復(fù)健康;中藥毒副作用小,方劑配方復(fù)雜,病毒不容易產(chǎn)生耐藥性;中藥價格低廉,生產(chǎn)工藝簡單,病人容易接受[2]。隨著西藥的廣泛使用,病原體往往產(chǎn)生了抗藥性,中藥的作用逐漸凸顯出來。
針對傳統(tǒng)的中醫(yī)臨床用藥的劑型主要是中藥湯劑,但中藥湯劑熬制過程比較復(fù)雜、不便于攜帶、味道較苦。中藥界近年來在中藥湯劑的基礎(chǔ)上逐漸發(fā)展出了中藥配方顆粒劑,中藥配方顆粒劑性能穩(wěn)定、易于吸收、安全性高[3]。幾年來,我國已陸續(xù)制訂了多種有關(guān)中藥配方顆粒的工藝規(guī)程和質(zhì)量標(biāo)準(zhǔn),隨著中藥配方顆粒劑應(yīng)用的普及發(fā)展,對于中藥配方顆粒劑配藥系統(tǒng)的需求也不斷顯現(xiàn)出來,而醫(yī)院藥房服務(wù)向電子化、網(wǎng)絡(luò)化發(fā)展的趨勢使得中藥配方顆粒自動配藥系統(tǒng)的功能有了愈加廣闊的拓展空間。目前中藥配方顆粒藥劑已逐步形成強大的推廣態(tài)勢,許多中藥配方顆粒生產(chǎn)廠商開始主動為醫(yī)院中藥房配備低成本的半自動中藥配方顆粒配藥設(shè)備,為患者提供了配方顆粒中藥藥劑的新型服務(wù)[4,5]。鑒于中藥顆粒劑的不斷發(fā)展,中藥顆粒自動化藥房的社會需求也愈發(fā)突出,當(dāng)今社會人們對醫(yī)藥行業(yè)的規(guī)劃化、標(biāo)準(zhǔn)化、科學(xué)化有著較高的要求,這對中藥自動配藥產(chǎn)業(yè)的發(fā)展是一種嚴(yán)格的挑戰(zhàn),也是社會發(fā)展的必然趨勢[6]。由此,本文提出的基于分群迭代算法的中藥顆粒配藥系統(tǒng)藥罐動態(tài)預(yù)編組方法就是對中藥顆粒自動配藥系統(tǒng)發(fā)展方向的一種探索思路。
通過對北京市多家大型醫(yī)院和中西藥藥房的實地走訪和調(diào)查了解得知,目前大部分醫(yī)院及藥房的配藥流程均由人工完成,即通過藥劑師查看藥方,再步行往返藥柜和出藥窗口之間為患者配藥,即使有小部分醫(yī)院采用了半自動化配藥系統(tǒng),其調(diào)配系統(tǒng)整體水平也都不太高,沒有根本擺脫人工配藥方式的思維定式的影響,由于藥庫落地固定、藥瓶或藥盒由人工行走拿取、大多單通道串行配藥,造成配藥用時漫長、效率低下、占地偏大、出錯率高等問題,患者因拿藥而排長隊的現(xiàn)象屢見不鮮。
針對人工配藥或者半自動配藥系統(tǒng)存在的問題,則提高配藥系統(tǒng)的自動化程度是關(guān)鍵,但如果只是簡單堆砌自動裝置而不徹底擺脫人工配藥方式的思維定式也將難以有所突破,必須在充分分析實際需求的基礎(chǔ)上,借鑒其他行業(yè)的成功設(shè)計經(jīng)驗(如物聯(lián)網(wǎng)、立體倉儲、快遞分揀、列車編組、柔性并行生產(chǎn)線、高速食品生產(chǎn)線等),并在設(shè)計理論的指導(dǎo)下,融合機電一體化設(shè)計技術(shù)深入分析與其發(fā)展相關(guān)聯(lián)的科學(xué)問題,在此基礎(chǔ)上開展配藥系統(tǒng)的創(chuàng)新性設(shè)計,把高效、密集、并行的設(shè)計理念充分體現(xiàn)到構(gòu)成新系統(tǒng)的創(chuàng)新設(shè)計之中,才能根本上實現(xiàn)配藥系統(tǒng)的技術(shù)創(chuàng)新與變革。
本文算法樣本數(shù)據(jù)采集自某同仁堂大藥房,通過對中藥藥理和藥方功用的學(xué)習(xí)了解與分析,完成了對藥房所提供原始數(shù)據(jù)的整理與再編組,并匯總成EXCEL表格,其分為全年1~12月共12個子工作簿,每個工作簿行向量為藥方名稱,并以解表、泄下、清熱、補益、固澀、安神、開竅、理氣、理血、治風(fēng)、治燥、祛濕、祛痰、消食、驅(qū)蟲、涌吐、治殤共17個中藥基本功用分類為分組依據(jù),工作簿列向量為藥方開藥量及其組成的基本成分(例如,解表方的麻黃湯由麻黃、桂枝、杏仁、甘草調(diào)配煎制而成),由于涉及商業(yè)機密,詳細(xì)藥方成分用量及出藥量不在本文列出討論。
隨著國內(nèi)外機械與自動化技術(shù)的不斷發(fā)展,目前中藥顆粒配藥系統(tǒng)方面已取得一些研究成果。例如北京工業(yè)大學(xué)的萬夢等人提出了垂直旋轉(zhuǎn)藥柜[7]的新思路,其工作原理是藥罐排架通過拉桿鉸接在傳動鏈條的鏈節(jié)上,排架之上放置有儲藥罐,整個排架通過置于側(cè)邊的平衡導(dǎo)軌以支撐保持水平。藥柜運行時,上位機通過分析藥方得到藥品所在排架后發(fā)出指令發(fā)送給下位機,下位機驅(qū)動伺服電機,帶動驅(qū)動軸鏈輪轉(zhuǎn)動,排架隨鏈條轉(zhuǎn)動到指定位置后,完成垂直方向定位。上藥時,藥師通過手動控制指定排架轉(zhuǎn)到藥柜背面后從藥罐上藥口處進(jìn)行上藥。如圖1所示。其由:1.支撐軸,2.鋼架,3.減速箱,4.驅(qū)動軸,5.安全柵,6.平衡導(dǎo)軌,7.驅(qū)動軸軸承座,8.拉桿,9.鏈條張緊裝置,10.固定排架,11.滑動排架,12.儲藥罐,13.鏈輪,14.鏈條,15.支撐軸軸承座構(gòu)成。
圖1 垂直旋轉(zhuǎn)藥柜結(jié)構(gòu)示意圖
為進(jìn)一步提高出藥速度,系統(tǒng)設(shè)置25個通道用于并行密集出藥,即出藥區(qū)為每個藥品罐位一對一配置25個出藥驅(qū)動裝置,每個出藥裝置都具有同時獨立為用戶藥盒出藥的能力,并且每個藥盒又隔離成6個小倉位,每個倉位對應(yīng)1貼方劑藥,有效提高了出藥的密集度,使系統(tǒng)具有同時調(diào)配25盒顆粒方劑的極限能力。出藥機構(gòu)示意圖如下圖2所示,其由:1.伺服電機,2.齒形帶,3.驅(qū)動電機,4.升降電機,5.稱重傳感器,6.藥盒,7.儲藥箱,8.外圍托架構(gòu)成。
圖2 出藥機構(gòu)示意圖
出藥機構(gòu)中的盤式多通道出藥也是該藥柜的創(chuàng)新點之一,在出藥過程中,藥盒底部配有驅(qū)動電機進(jìn)行對接,驅(qū)動藥箱下藥口旋轉(zhuǎn)一定的角度,對藥盒的六個儲藥格進(jìn)行下藥,然后盤式調(diào)劑機構(gòu)旋轉(zhuǎn)60°,進(jìn)行第二個藥盒的出藥。該機構(gòu)屬于串行多通道的出藥方式,在很大程度上提高了出藥的效率。盤式出藥機構(gòu)三維示意圖和藥盒如圖3和圖4所示。
圖3 盤式出藥機構(gòu)三維圖
圖4 藥盒實物圖
綜上,本文以該垂直旋轉(zhuǎn)藥柜為基礎(chǔ),應(yīng)用機器學(xué)習(xí)領(lǐng)域的分群算法和迭代算法實現(xiàn)了中藥顆粒藥罐的動態(tài)預(yù)編組,可進(jìn)一步加快該裝置的配藥速度,提高其配藥效率。
如何實現(xiàn)進(jìn)一步提高現(xiàn)有配藥系統(tǒng)配藥效率的目標(biāo),達(dá)到取藥路徑最優(yōu)化是關(guān)鍵,目的是使當(dāng)前任務(wù)配方對應(yīng)的藥品以最小的時間成本均編入進(jìn)同一編組中,但前提是現(xiàn)有的組里存在與任務(wù)配方十分相近的藥品罐組。藥品儲料罐的動態(tài)編組屬運籌學(xué)及路徑優(yōu)化問題,只有系統(tǒng)根據(jù)既往藥方迭代計算得當(dāng),所獲分組才更有代表性,才能使已排在隊列中的藥方在現(xiàn)存藥品分組中找到非常接近的藥品罐組,才能以最少量的調(diào)換步驟快速實現(xiàn)動態(tài)編組,實現(xiàn)藥盒取藥路徑最優(yōu)。如何合理的分配藥品到各組形成合理的組合搭配是該問題的核心。具體要選擇適合的算法及合適的步長等參數(shù),使各組的藥品搭配自動跟隨藥方的變化趨勢,進(jìn)而為動態(tài)編組奠定有利的基礎(chǔ)。
本文藥罐分群主要采用了k-means算法。k-means算法是一種基于劃分的聚類算法,即依據(jù)相似性原則,把具有較高相似度的數(shù)據(jù)對象劃分到同一類簇中,把具有較高相異度的數(shù)據(jù)對象劃分到不同類簇中。
k-means算法又被稱為k均值算法。其中的k代表類簇的個數(shù),而means代表類簇內(nèi)數(shù)據(jù)對象的均值,該均值是一種對類簇中心的量度。k-means算法將距離視作數(shù)據(jù)對象間相似度判定的標(biāo)準(zhǔn),即如果數(shù)據(jù)對象間的距離越小,則它們的相似度就越高,進(jìn)而它們在同一個類簇的可能性就越大。其核心思想為:先把樣本全集中隨機選出的k個樣本作為假定的簇中心,并由此計算出其他所有樣本與該k個假定簇中心的距離,然后針對每個樣本,把其劃分到與之距離最近的假定簇中心所處的簇中,然后對新生成的簇計算各個簇的新簇中心。樣本數(shù)據(jù)對象彼此之間的距離有很多種計算方式,如給定樣本其中i,j=1,2,…,m表示樣本數(shù),n表示特征數(shù),由于樣本總體為藥品集為無序?qū)傩?,則樣本間距的度量方法為無序?qū)傩跃嚯x度量VDM:
在機器學(xué)習(xí)領(lǐng)域,k-means算法可由多種軟件和計算機編程語言實現(xiàn),本文中藥罐動態(tài)編組過程采用的k-means算法基于Python語言,利用Anaconda軟件平臺實現(xiàn)。k-means算法聚類過程如圖5所示。
圖5 k-means算法聚類過程
根據(jù)從中藥藥房得到的全年中藥方劑出藥量數(shù)據(jù),可經(jīng)數(shù)據(jù)處理以設(shè)計出垂直旋轉(zhuǎn)藥柜的藥罐動態(tài)預(yù)編組策略:以藥房全年出藥量數(shù)據(jù)中每個方劑的成分為一個特征,方劑根據(jù)擁有的成分,形成一個特征向量;利用k-means算法,根據(jù)方劑的特征,計算不同方劑之間的相似度;根據(jù)方劑之間的相似度,將具有較相似的特征的方劑分為一個群,以此分出20個群(即20個藥罐組);根據(jù)屬于同個群下的所有方劑各個成分的出現(xiàn)頻率進(jìn)行排序,選擇頻率最高的20個成分作為代表該群的基本成分,其余低頻的方劑成分和在其他群下出現(xiàn)但未在本群出現(xiàn)的方劑成分作為補充成分;當(dāng)患者出示藥方進(jìn)行抓藥時,根據(jù)藥方所需要的方劑成分,轉(zhuǎn)成特征向量;計算代表藥方的特征向量與不同群基本成分之間的相似度,尋找最匹配的群;從匹配到的群中提取患者所需方劑的主要成分;患者所需方劑的剩余成分從補充成分中抓取。具體操作如下:
運行得到包含所有藥劑成分的分群結(jié)果共20組,包含藥方數(shù)據(jù)庫中全部的藥品種類,同時在Windows資源管理器中自動生成9個文件夾:
000 basic_data 基礎(chǔ)訓(xùn)練藥方數(shù)量資料表
001 added_data 系統(tǒng)每日新增的配藥數(shù)據(jù),用來作為迭代學(xué)習(xí)的資料數(shù)據(jù)
002 test_data 配藥系統(tǒng)平時運行維護所用的測試資料
003 processed_data 配藥過程中處理好的中間數(shù)據(jù),用以查詢配藥記錄
004 diagram_data 配藥系統(tǒng)存放的中間統(tǒng)計圖表,包含柱狀圖、頻率分布表等
005 dictionary_data 分群的字典,算法的中間數(shù)據(jù)
006 result_data 每日配藥系統(tǒng)運行的結(jié)果記錄
007 for_reference 配藥過程中緩存的有關(guān)說明和記錄文件
008 run_result.html 配藥系統(tǒng)輸出的用以導(dǎo)出的每日配藥結(jié)果文件
配藥系統(tǒng)輸出的部分藥劑群成分頻數(shù)直方圖如圖6所示。
圖6 部分藥劑成分頻數(shù)圖示例
算法的評價方式為得分制,即患者單次取藥的得分=(患者藥方所需成分從族群的基本成分中獲取的數(shù)量)/(患者藥方所需成分從族群的補充成分中獲取的數(shù)量),且算法得分與迭代次數(shù)成正相關(guān)。藥罐預(yù)編組抓藥流程圖如圖7所示。
由于存在季節(jié)變化、流行性疾病傳播等因素,患者抓藥所提供的藥方存在很大的動態(tài)性,故由上述分群算法計算重組出的藥罐群組也應(yīng)具有動態(tài)性,能跟蹤患者抓藥藥方的規(guī)律性變化,及時地、不斷地、智能地優(yōu)化自身的編組序列,以更快更好地適應(yīng)患者的抓藥需求。
圖7 藥罐預(yù)編組抓藥策略流程圖
故本文將機器學(xué)習(xí)領(lǐng)域的迭代算法引入藥罐動態(tài)預(yù)編組系統(tǒng),使系統(tǒng)記錄每次配藥的輸出結(jié)果并周期性自行訓(xùn)練,迭代學(xué)習(xí)和藥罐分群編組抓藥過程組成閉環(huán)系統(tǒng)。患者每次抓藥完畢,系統(tǒng)都會將出藥數(shù)據(jù)轉(zhuǎn)存到既往藥方數(shù)據(jù)中,再次運行分群算法,不斷迭代,從而不斷優(yōu)化藥罐編組序列,使下次出藥更加精確、迅速。具體操作如下:
綜上,結(jié)合了k-means分群和迭代算法的藥罐動態(tài)預(yù)編組抓藥完整過程如圖8所示。
圖8 藥罐動態(tài)預(yù)編組閉環(huán)抓藥過程
最后在出藥部分樣機搭建和模擬出藥實驗環(huán)節(jié)中,進(jìn)行了出藥速度的測定。上位機的硬件平臺選用工控機和觸摸屏,工控機型號ARB-8900,主要配置為:Intel? Core?2 Duo處理器,支持最大4GB的內(nèi)存擴展,2個標(biāo)準(zhǔn)PCI槽擴展,1個miniPCI槽擴展,1個TypeII CF擴展,2個千兆以太網(wǎng)口、5個串口、4個USB2.0接口、2個SATA接口,12V直流電壓輸入。觸摸屏型號為TPC1061TX,主要配置為:額定電壓24V,額定功率5.5w,內(nèi)存128M,支持RS232和RS485串口通訊。下位機的硬件平臺選用西門子PLC系列S7-200 smart,其CPU模塊本體集成了三軸100kHz高速脈沖輸出,支持PWM(脈寬調(diào)制)和PTO脈沖輸出,1個以太網(wǎng)接口和1個RS485/232接口,通過擴展CM01信號板,其通信端口數(shù)量最多可增至3個,支持TCP/IP協(xié)議與串口通訊,串口支持Modbus-RTU和PPI協(xié)議,CPU ST30模塊本身具有24路輸入、12路輸出共計36個數(shù)字量I/O點。由于本系統(tǒng)的盤式出藥對于24貼藥只需出4盒方劑藥,假設(shè)患者所持藥方具有15個藥品,由秒表測得出藥系統(tǒng)對每貼藥品出藥時間10次算數(shù)平均值約為5秒,藥盒換位間隔時間10次算數(shù)平均值約為5秒,則由此計算4盒藥只需約(15+3)×5=90秒,折合每貼藥出藥用時約90/24=3.75秒,與人工配藥模擬測時結(jié)果每貼120秒相比,速度提高約120/3.75=32倍。實驗實況如圖9所示。
圖9 出藥樣機實驗圖
本文以一種全新的思維優(yōu)化改進(jìn)了現(xiàn)有的中藥顆粒配藥技術(shù),將機器學(xué)習(xí)領(lǐng)域的分群算法及迭代算法引入到現(xiàn)有的中藥顆粒配藥系統(tǒng)中來,由于國內(nèi)的相關(guān)研究還沒有較多的技術(shù)積累,現(xiàn)有設(shè)備自動化程度和出藥效率還不高,沒有吸引到產(chǎn)業(yè)鏈的重視,也沒有較大規(guī)模的商業(yè)應(yīng)用,本文恰好可以豐富我國在該方面的技術(shù)積累與儲備,有利于中藥配藥系統(tǒng)的自動化和高速化發(fā)展,提高配藥效率,提升廣大中藥消費者的取藥體驗,未來應(yīng)用前景十分廣闊。