SecondaryUse開発日記

データベース参照ツールを開発しています。そのツールの開発、利用方法秘話などなどの紹介

DB参照ツール、SecondaryUse(二次利用)

SecondaryUseとは任意のデータをデータベースからSQLで取得し表示します
SQLをサーバに保存すれば、利用者全員で共有が出来ます。またローカルファイルとして登録すれば端末ごとに任意のSQLを実行することも可能です

表示したデータはエクセルへのエクスポートも簡単にできますし、ワードへの差し込み印刷も可能です

エクセルへのエクスポートでは自動でグラフ表示も可能です

その為、DWHと同様の使い方が出来、DWH専用DBを必要としません

CSVXMLへの出力も可能です

 

SecondaryUseはデータの二次利用を簡単に実現します

 f:id:syskobo:20190422155018j:plain

本来DBBrowserはエディタ上に入力したSQLを実行しデータを表示していましたが、誰でも簡単にデータ抽出出来るようにSQLを外部に保存し実行できるようにしたのがSecondaryUseです

DBBrowser同様、サーバとの通信はSOAPを利用していますので、ORACLEなどはClientのインストールが不要です。

さらに、SSL/TLSプロトコル(https)を使用してインターネット経由でもデータベースとの接続が可能です。

また、ODBCでの接続も出来るのでローカルネットワーク環境ではサーバなしでも利用できます

syskobo.hatenablog.com

http://syskobo.html.xdomain.jp/SecondaryUse_simple_manual.pdf

 

SimpleUse は SecondaryUseと同じですがランチャー起動のアプリを外したバージョンです

MedicalUseSimpleUse に 医療機能を追加したバージョンになります

現在は SecondaryUse としては公開していませんので、MedicalUseSimpleUse を使用してください

 

構築依頼につきましては下記よりお願いいたします

coconala.com

 

環境初期化

環境初期化を実行した場合

ドキュメントフォルダに作成した以下のフォルダを削除します

SQLite、LocalSQL、csvData、OfficeTemplateFile

 

f:id:syskobo:20210830170154p:plain

VersionUPにともない、以下のフォルダのデータもブラッシュアップしています

SQLite、LocalSQL、csvData、OfficeTemplateFile

 

ので、新しいVersionをインストールした場合、初回起動時に 「環境初期化」を実行してください

 

.NETにおける64ビットプロセスと32ビットプロセスについて

Excelインポート時に「‘Microsoft.ACE.OLEDB.12.0’プロバイダーがローカルマシンに登録されていません。」が表示されるとき以下をインストールします www.microsoft.com

64BitOSに32BitのOfficeがインストールされていると、インストールしても解決できません

 

SecondaryUse は Any CPU でビルドしていますので、32ビットへの変更が可能です

 

.NETにおける64ビットプロセスと32ビットプロセスについて

qiita.com

 

64ビットOSのインストール時の状態

f:id:syskobo:20210830152936p:plain

 

32ビッド動作に変更(32ビットで動作中のときメニューは表示しません)

f:id:syskobo:20210830151208p:plain

 

バッチ処理でCorFlags.exeを実行

f:id:syskobo:20210830153947p:plain

 

状態確認

f:id:syskobo:20210830153139p:plain

 

これで、64ビットOSに32ビットOffice時でも動作可能と思います

64ビット動作環境に戻すにはアンインストール後、再度インストールしてください

 

当機能は Version 4.21.8.3 より利用可能です

MedicalUseでの看護必要度集計のワンポイントアドバイス

ー年前に、MedicalUse で行う看護必要度集計を紹介しましたが、環境が作成できず断念している方がいらっしゃるようです

 

syskobo.hatenablog.com

syskobo.hatenablog.com

基本的な事は下記の資料の通りなのですが、SQLITEのインポートテーブルの確認方法を紹介します

http://syskobo.html.xdomain.jp/MedicalUse_Nursing_need.pdf

 

1.「LocalSQL.ini」を編集

下記の内容を「LocalSQL.ini」に追加し、ローカルSQLで使える様にします

[DataSource5]
DBtype=5
ConnectType=3
Database=@ReplacePersonal@\SQLite\DPC.sqlite3
Pwd=DPC

 

2.SQLファイルの追加

以下のSQLファイルをドキュメント\MedicalUse\LocalSQLに作成します

ファイル名は「5.01.テーブル一覧.sql

select * from sqlite_master where type='table'

 

3.インポートデータの確認

V_MASTER  :看護必要度電算コード
WARD    :病棟
DEPARTMENT :診療科データ
DATADEV   :データ区分

f:id:syskobo:20210825110848p:plain

があれば大丈夫と思います

 

「レセプト電算処理システム用コードマスタ」v_master_XXXXXXXXXXX.xlsx

の取込ですが

「‘Microsoft.ACE.OLEDB.12.0’プロバイダーがローカルマシンに登録されていません。」

が表示されるときは、CSVファイルへ変換しCSVファイルをインポートしてください

Excelでインポートする場合は以下をインストールしてください

www.microsoft.com

但し、OSが64ビットでOfficeが32ビットの場合も「‘Microsoft.ACE.OLEDB.12.0’プロバイダーがローカルマシンに登録されていません。」が表示されますので、「MedicalUse」を32ビット動作に変更して実行ください

変更方法は以下を参照してください

syskobo.hatenablog.com

あとは、EFファイルとHファイルをインポートしてください

Version 4.21.8.3 から標準搭載します

 

 

SQLの学習に最適なSimpleUse

SQLを学ぶのにSQLを実行するDBが必要です
SQliteはファイル形式で実行可能なため簡単に環境が整えられます
SimpleUseではインストール後すぐに使えます
しかし実行するためのサンプルデータの作成が面倒です
でも今どきは新型コロナデータがたくさんありますので、これを使って学ぶこととします

 

www3.nhk.or.jp

今回はNHKの「都道府県ごとの感染者数の推移」データを使用します
都道府県ごとの感染者数の推移グラフのところにCSVデータへのリンクがありますのでここからダウンロードします

ダウンロードファイル名:nhk_news_covid19_prefectures_daily_data.csv

 

f:id:syskobo:20210801155323p:plain エクセルで開いたとき

 

f:id:syskobo:20210801155805p:plain SimpleUseで開いたとき

※エクセルでは日付変換、数値変換を自動で行いますが、 SimpleUseは文字列のままになります

 

ダウンロードしたら、SQLを実行するためのデータをインポートします

「ランチャー」から「ローカルSQL」を起動して「インポート」ボタンをクリック

f:id:syskobo:20210801160320p:plain f:id:syskobo:20210801160347p:plain

インポートファイル:ダウンロードした[nhk_news_covid19_prefectures_daily_data.csv]

出力先SQLファイル:サンプルの \Documents\SimpleUse\SQLite\LocalDB.sqlite3

f:id:syskobo:20210801160147p:plain

テーブル名が自動的にCSVファイル名になります
もっと短いテーブル名にしたいので、CSVファイル名を「COVID19.CSV」に変更して再度インポートします

インポートが終了したら、本当にインポートされているか確認します

「0.01.テーブル一覧.sql」で「LocalDB.sqlite3」に登録してあるテーブルを確認できます

f:id:syskobo:20210801161752p:plain

ショートカットメニューから、データ一覧、データ件数が確認できます

f:id:syskobo:20210801161015p:plain

 

データの確認が出来ましたら、SQLの実行ファイルを作成します

ここでは(SimpleUse)では \Documents\SimpleUse\LocalSQL フォルダに

ファイル名が「0.10.都道府県の集計.sql」のテキストファイルを作成します

f:id:syskobo:20210801162213p:plain

SQLの実行は、「DB再検索」で行います
実行時に「0.10.都道府県の集計.sql」を読込ますのでプログラムの再起動は不要です

但し、SQLの実行ファイルの追加をした場合は再起動が必要です

f:id:syskobo:20210801173120p:plain

 

都道府県の集計

select

都道府県コード
,都道府県名
,sum(各地の感染者数_1日ごとの発表数) 各地の感染者数_1日ごとの発表数

from COVID19

group by 都道府県コード , 都道府県名

order by 都道府県コード

↓↓↓↓↓ sum の使い方 ↓↓↓↓↓

https://www.google.com/search?q=SQLite+SUM

↓↓↓↓↓ group by の使い方 ↓↓↓↓↓

https://www.google.com/search?q=sql+group+by

 

感染者の多い順に並べ替えるには以下のorder by句を使います

select

都道府県コード
,都道府県名
,sum(各地の感染者数_1日ごとの発表数) 各地の感染者数_1日ごとの発表数

from COVID19

group by 都道府県コード , 都道府県名

order by sum(各地の感染者数_1日ごとの発表数) desc

↓↓↓↓↓ order by の使い方 ↓↓↓↓↓

https://www.google.com/search?q=sql+order+by

 

日付毎の患者数一覧をは以下の様にします

select

日付
,sum(各地の感染者数_1日ごとの発表数) 各地の感染者数_1日ごとの発表数

from COVID19

group by 日付

order by  日付 

 

order by  日付 を指定しましたが、正しく並ばない様です
これは、日付が文字列として登録したため、文字列の小さい方から並べて表示されています

f:id:syskobo:20210801164332p:plain

これを正しく並べるには、日付を文字列から日付型に変換します

select

日付
,substr(日付, 1, 4) YYYY
,replace(substr(日付, 6, 2),'/','') MM
,replace(substr(日付, 8, 3),'/','') DD

,date( substr(日付, 1, 4) || '-' ||
case length(replace(substr(日付, 6, 2),'/',''))
when 1 then '0'||replace(substr(日付, 6, 2),'/','')
else replace(substr(日付, 6, 2),'/','')
end
|| '-' ||
case length(replace(substr(日付, 8, 3),'/',''))
when 1 then '0'||replace(substr(日付, 8, 3),'/','')
else replace(substr(日付, 8, 3),'/','')
end
) 日付型

,sum(各地の感染者数_1日ごとの発表数) 各地の感染者数_1日ごとの発表数

from COVID19
group by 日付
order by 日付型 

YYYY、MM、DD は文字列の日付を解体したときの値です
SQLiteの日付型文字列は”YYYY-MM-DD”で"YYYY/MM/DD"や”YYYY-M-D”は使用できません    

substr、replace、case、date句については各々調べてください
自分で調べて、試さないと身になりませんよ 

dsoframer.ocxを変更?

dsoframer.ocxの64-bit (x64)との内容でしたので、ダウンロードして試したのですが

64-bitでは動作させることが出来ませんでした

f:id:syskobo:20210721125252p:plain

 

32-bitでは動きましたので、windows10対応と云う事でdsoframer.ocxを置き換えましたが、院内システムでは以前のdsoframer.ocxを利用していますので結局戻しました

f:id:syskobo:20210715155422p:plain

小生が試した内容ではどちらも問題なく使えるようです

f:id:syskobo:20210715155444p:plain