1. 程式人生 > >醫保實時結算COM元件MedicareCOM.dll的介面解析

醫保實時結算COM元件MedicareCOM.dll的介面解析

本文由Markdown語法編輯器編輯完成。

1. 前言:

本文主要講述如何將首信公司提供的醫保實時結算的COM元件,進行二次封裝,封裝為可被其他應用程式呼叫的dll檔案。

2. 基本步驟:

這裡寫圖片描述

雙擊安裝包,安裝完成後,對軟體進行相應的設定,安裝路徑預設即可。點選路徑C:\Program Files (x86)\Capinfo\BeiJingMediCareClient\1.00.0000下的:RegeditConfig.exe,可以對該核心元件測試端進行設定。
主要設定的是“ICE預設主機地址”,將地址設為:210.75.200.74.

這裡寫圖片描述

這個IP是首信專門為各HIS開發廠商提供的核心元件測試的外網伺服器地址。

這裡寫圖片描述

(2)基於oleview.exe等工具解析核心COM元件;
基於微軟提供的IDE工具中的oleview工具,可以檢視COM元件的介面。
假設本機已經安裝了Visual Studio 2012, 在開始中找到Microsoft Visual Studio 2012->Developer Command Prompt for VS2012。

這裡寫圖片描述

點選後,在開啟的命令快捷介面中,輸入oleview,按回車鍵可以進入檢視本機已經註冊的COM元件。
這裡寫圖片描述

在開啟的OLE/COM Object Viewer視窗中,選擇左側的
Type Libraries->MedicareCOM 1.0 型別庫(Ver 1.0).
這裡寫圖片描述

在左側找到的MedicareCOM 1.0型別庫處,滑鼠點選右鍵,應該能夠看到這個COM元件的詳細描述。

但是,如果是Windows 10等系統,點選右鍵,在右鍵選單中選擇View時可能會彈出如下提示:
這裡寫圖片描述

遇到這個問題時,應該是開啟OLE/COM Object Viewer的許可權不夠,導致無法檢視。

解決這個問題的方法為:直接在計算機硬碟中找到這個工具的exe,然後點選滑鼠右鍵,選擇以管理員身份執行,這樣當再次開啟這個檢視器時,選擇右鍵的View,便可以檢視註冊在本機中的醫保元件的具體描述了。如下所示:

這裡寫圖片描述

此時,選擇左上角選單欄中的File,選擇Save as, 然後選擇將醫保元件的MedicareCom.IDL檔案儲存在本地中。

(3)基於midl編譯IDL為.h和.c檔案;
IDL檔案是無法供其他程式直接呼叫介面的。為了能夠將包含在IDL檔案的COM元件介面解析出來,我們需要藉助VS來編譯出.h和.c檔案。

在Visual Studio 2012中建立一個名稱為MedicareCom的win32 console工程。
這裡寫圖片描述

進入建立的MedicareCom.sln後,在左側開啟的檔案列表中,在Source Files欄目處,點選滑鼠右鍵,選擇載入已有的檔案,載入之前生成的IDL檔案進該工程中。

這裡寫圖片描述

在載入進本專案的MedicareCom.IDL檔案處點選滑鼠右鍵,選擇右鍵此單中的Compile選項,進行編譯。
這裡寫圖片描述

當編譯完成後,便可以在該工程的目錄中,找到根據IDL檔案編譯出的.h和.c檔案。

這裡寫圖片描述

還有一個問題要注意:
由於現在的醫保核心元件是在VS2012上面進行二次封裝的,但是醫院很多醫生的作業系統還停留在了Windows XP 32位系統上,這樣當編譯出來的瀏覽器的exe在XP系統上執行時,會提示:“不是有效的Win32應用程式。”

修改Configuration Properties->Linker->System->
Minimum Required Version: 5.01.
如下圖所示:
這裡寫圖片描述

解決方案二:
修改如下:
Configuration Properties->General->Platform Toolset,
預設值是:Visual Studio 2012 (v110), 將這個設定項修改為:
Visual Studio 2012 - Windows XP (v110_xp)即可解決該問題。
如下圖所示:
這裡寫圖片描述

(4)封裝核心元件介面為新的dll供程式呼叫。

當我們擁有了從IDL檔案編譯出來的.h和.c檔案後,我們就可以根據自己專案的需要,編譯出動態連結庫和靜態連結庫,供我們在需要使用介面的時候呼叫它們了。