SecondaryUse開発日記

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

DB参照ツール、SecondaryUse(二次利用) DWHと帳票印刷を兼ね備える便利ツール

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/pamphlet_SecondaryUse.pdf

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

http://syskobo.html.xdomain.jp/DWH-like_usage_by_SimpleUse_on-premises.pdf

 

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

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

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

 

OracleのデータをSQLiteへエクスポートする

Oracleバックアップ用、システム構築、移行が安易に出来るように、OracleのデータをSQLiteへエクスポートする

 

1)SecondaryUseで定義しているOracleスキーマをコンボボックスから選びます

2)適当に出力先SQLiteファイルを設定します

3)エクスポートボタンをクリック

4)Oracleのテーブル一覧を取得し、SQLiteにテーブルをCreateしながらデータをInsertします

 

今のところ、OracleSQLiteしか作成していませんが、必要になったら増やしていこうと思います

 

 

また障害発生時、必要なマスタをSQLiteへエクスポートしておけば、Accessを使用しなくとも紙伝票システムが利用できるようにします

simpleuse.hateblo.jp

・紙伝票システムで使用するマスタテーブル一覧を定義しておく

・夜間バッチ処理で上記のマスタテーブル一覧のOracleSQLiteを実行する

・Client端末起動時、上記で作成したSQLiteをClient端末にコピーする

 

これにより、紙伝票システムが色々なカルテで利用できるかもです

 

SecondaryUseは【ユーザーカスタマイズ】が簡単に行えます 宛先印刷編

MedicalUseには診療情報提供書のテスト用の患者一覧データを同梱してますので、これを使って宛先印刷を行います

 

環境設定で【郵便番号、住所1、住所2、患者氏名、備考】を定義しました

ドキュメント > MedicalOra > UOTF のフォルダに「宛先印刷.xlsx」を作成します

 

Sheet1にはがきサイズのレイアウトを作成します

 

次にSheet2に長型3号サイズのレイアウトを作成します

そのSheetを先頭に移動しエクセルを保存します

長型3号サイズになります

 

一つのエクセルファイルでSheet毎に色々レイアウトを作成できます

もちろん、わかりやすいシート名を付けても大丈夫です


エクセルへの差し込み印刷


CSVファイル、テンプレートの作成は【伝票印刷編】を参照ください

syskobo.hatenablog.com

 

SecondaryUseは【ユーザーカスタマイズ】が簡単に行えます 伝票印刷編

本来、DBより取得したデータを印刷するのですが、CSVデータの印刷も可能です

ここでは「鉄道事業者」のデータを利用し説明します

 

①「Q10.鉄道事業者」を表示します

 

②上記のCSVデータを作成

 ショートカットメニュー → エクスポート → CSVへ出力

 ここでは「sample1.csv」として出力します

 

③sample1.csvファイルを開いてヘッダタイトルを変更します

"事業者コード","鉄道コード","事業者名","事業者名カナ","事業者名正式名称","事業者名略称","webサイト","事業者区分","状態","並び順"

→ 

"COL1","COL2","COL3","COL4","COL5","COL6","COL7","COL8","COL9","COL10"

※データ項目数が10個以下のときでも、"COL10"まで定義してください

 

④エクセルテンプレートの作成

ドキュメント > MedicalOra > UOTF のフォルダに「ユーザー印刷1.xlsx」を作成します

置換セルに <<COL1>> ~ <<COL10>> を入力します

※ エクセルファイル名「ユーザー印刷1.xlsx」と 置換セルの<<COL1>>~<<COL10>>は環境設定ですのでその様に入力してください

※ <<COL1>>~<<COL10>>は必要な項目のみの定義で大丈夫です

 

⑤ショートカットメニュー表示の確認

CSVファイルを開く」から「sample1.csv」を開きます

 

「ユーザー印刷1」のメニュー項目が表示されることを確認します

表示されないときは、COL1~COL10のタイトルがあるか確認してください

 

⑥プレビュー表示の確認

※表示出来ましたら<<COL1>>~<<COL10>>を色々なセルに定義してみましょう

 

⑦エクセルテンプレート2の作成

ドキュメント > MedicalOra > UOTF のフォルダに「ユーザー印刷2.xlsx」を作成します

置換セルに <<DAT1>> ~ <<DAT10>> を入力します

「smple1.CSV」をコピーし「smple2.CSV」を作成します

sample2.csvファイルを開いてヘッダタイトルを変更します

"COL1","COL2","COL3","COL4","COL5","COL6","COL7","COL8","COL9","COL10"

"DAT1","DAT2","DAT3","DAT4","DAT5","DAT6","DAT7","DAT8","DAT9","DAT10"

 

CSVファイルを開く」から「sample2.csv」を開き、「ユーザー印刷2」のメニュー項目が表示されることを確認します

タイトルにより選択できる帳票テンプレートを決定します

 

⑧エクセルテンプレート3の作成

ドキュメント > MedicalOra > UOTF のフォルダに「ユーザー印刷3.xlsx」を作成します

(「ユーザー印刷2.xlsx」をコピーして作成 )

適当な位置に結合セルを作成し <<QR_CODE>> を定義します

 

sample2.csvファイルを開いてヘッダタイトルを変更します

DAT7 の位置に QR_CODE を挿入し 鉄道事業者 の webサイトURL のタイトルを QR_CODE にします

 

"DAT1","DAT2","DAT3","DAT4","DAT5","DAT6","DAT7","DAT8","DAT9","DAT10"

"DAT1","DAT2","DAT3","DAT4","DAT5","DAT6","QR_CODE","DAT7","DAT8","DAT9","DAT10"

 

CSVファイルを開く」から「sample2.csv」を開きなおし、「ユーザー印刷3」のメニュー項目が表示されることを確認します

 

 

上記内容をベースに任意のCSVファイルのタイトルをCOLまたはDATに変更すれば色々な印刷帳表が作成できますし、複数行選択すれば連続印刷も可能です

 

計算式が必要な帳票はSheet1にデータを出力し、それを元にSheet2に帳票イメージを作成することもできます

予め印刷された用紙に印刷するときは比較的EXCELは便利です

下記のように行サイズや列サイズ、フォントを調整し印刷します

また、印刷処理を行った帳表はPDFとして保存されます

 

今回でCSVタイトルとエクセル置換文字の関係がお解り頂けたと思います

もし、エクセルで作成した帳票を使っているときは移行も簡単です

 

上記内容はエクセルに対する【差し込み印刷】ですがワードに対しても可能です

 

毎回タイトルを変更するのは面倒という方はご連絡いただければ定義します

MedicalOraはクラウドDBを使用していますので環境設定のみで対応できます

 

 

バーコードフォントの利用

Excelでバーコードを使用する場合、幾つかの方法があります

 

1)Microsoft BarCode Control 16.0 を使用する

 参照先のセルの結果値をバーコードにしてくれる

 コントロールなのでチョット重い

 

2)バーコードフォント(CODE39,CODE128,NW-7) を使用する

 当該セルが数式(関数)のとき計算結果ではなく数式そのものをバーコードにする

 ※計算後の値をバーコードにする方法を教えてください

 フォントなので動作が軽い

 

3)バーコード 画像データを作成し 貼り付ける

 マクロが必要

 

何をしたいかで使い分けるのが良いと思われます

 

MedicalOraの診療情報提供書から印刷する「お薬添付用紙」は確認作業を容易にするため患者番号のバーコードを印字する様にしています

MedicalOraでは当該セルにバーコード文字列を直接挿入するためフォントでも問題なく利用できます



 

SecondaryUseは【ユーザーカスタマイズ】が簡単に行えます SQL環境編

MedicalUseをベースに説明しますと、【医薬品データ照会】、【駅データ】、【サンプルデータ】への接続はシステム設定のため変更できませんが、【ローカルSQL】はINIファイルとSQLコマンドテキストファイルで構成していますので【ユーザーカスタマイズ】が可能です

 

【ローカルSQL環境設定】 → ローカルSQLの設定用INIファイルを開きます

【ローカルSQKフォルダー】→ SQLコマンドテキストファイルのフォルダを開きます

 

■接続番号の指定

SQLコマンドファイル名称の先頭文字がDB接続番号になります

先頭1文字が【0】で始まるSQLコマンドファイルは

[DataSource0]

DBtype=5
ConnectType=3
Database=@ReplacePersonal@\SQLite\LocalDB.sqlite3 

セクション名[DataSource0]の末尾1文字と関係を持ち、実行時のDBは[DataSource0]のパラメータを使用して接続します

 

DBがWebServiceOracleのときの例

[DataSource2]
DBtype=2
ConnectType=0
Database=
UID=
PWD=
Url=

 

DBがWebServicePostgreSQLのときの例

[DataSource9]
DBtype=3
ConnectType=0
Database=
UID=
PWD=
Url=

 

DBがODBCSQL Serverのときの例

[DataSource4]
DBtype=4
ConnectType=2
Database=
UID=
PWD=
Driver=ODBC Driver 17 for SQL Server
Server= xxx.xxx.xxx.xxx

 

DBがODBCSQLiteのときの例

[DataSourceO]
DBtype=5
ConnectType=2
Driver=SQLite3 ODBC Driver
Database=@ReplacePersonal@\SQLite\LocalDB.sqlite3

ODBCSQLiteを利用するとき、Password付きのSQLiteを開けませんでした

 ご存じの方お教えください

 

御社システムのDBの接続情報をINIファイルに定義します

以下はODBCOracleを想定しました

[DataSource3]
DBtype=5
ConnectType=2
Driver=Oracle in OraClient19Home1_32bit
Database=
UID=
PWD=

あとは【3.01.SQLコマンドファイル.sql】でテキストファイルを作成し、適当なSQLを実行してください