[[PrimeKarte]] > [[PkBase]] > ForwardFileTool
#contents
*概要 [#lc77eb3a]
ファイル転送クラス~
オーダに付随する画像やXMLデータをファイルサーバに転送します。~
ジャーナルへはZIPファイルとして転送。
そこから発行データとしてもZIPファイル、カルテ参照用には展開して特定ファイル((png,txt,pdf,bmp))のみを転送。
*関数一覧 [#sd281f14]
|[[ConvRelativePathName>#ConvRelativePathName]]|相対パスリストを取得|
|[[CopyDirectory>#CopyDirectory]]|フォルダごとコピー(サブフォルダ含む)|
|[[CreateDirectory>#CreateDirectory]]|フォルダ作成|
|[[DeleteDirectory>#DeleteDirectory]]|フォルダごと削除|
|[[Execute>#Execute]]|転送処理開始|
|[[FileCopy>#FileCopy]]|ファイルをコピー|
|[[FileFromArchive>#FileFromArchive]]|書庫ファイルを指定フォルダに展開|
|[[FilePathAddBackslash>#FilePathAddBackslash]]|パス文字列の最後にバックスラッシュ付与。既にある場合は何もしない|
|[[FileToArchive>#FileToArchive]]|書庫ファイルを作成|
|[[FileToServer>#FileToServer]]|ジャーナルに転送|
|[[GetDirectoryLastName>#GetDirectoryLastName]]|フォルダの最後の階層の文字列を取得|
|[[GetFileIdStr>#GetFileIdStr]]|ファイル識別文字列の取得|
|[[GetFileServerPath>#GetFileServerPath]]|ファイル転送先パスの取得|
|[[GetForwardFileName>#GetForwardFileName]]|ファイル保存先フォルダ名を取得|
|[[GetForwardFilePath>#GetForwardFilePath]]|ファイル保存先パスを取得|
|[[GetKanjaIdFolder>#GetKanjaIdFolder]]&aname(GetKanjaIdFolder);|患者IDを15桁ゼロ詰めし、&br;先頭から3桁ずつの4階層のフォルダ文字列を取得。&br;例)KANJA_ID:1234567⇒000\000\001\234|
|[[GetStringFromStrArray>#GetStringFromStrArray]]|OrderBaseのStrListより取得|
|[[OutPutLog>#OutPutLog]]|ログ出力|
|[[ToDateTime>#ToDateTime]]|日付オブジェクトへの変換|
|[[ToDouble>#ToDouble]]|double値への変換|
|[[ToInt>#ToInt]]|int値への変換|
|[[ToStr>#ToStr]]|stringへの変換|
*使い方 [#ia439b69]
&color(red){※解説の中には、現在実装中のメソッドも含みます};
**[[FileFromArchive>#FileFromArchive]] [#FileFromArchive]
ファイルサーバ上のZIPファイルを展開しつつ、ローカルにコピー
|型|変数名|詳細|h
|OrderBase|orderBase|転送対象のオーダ情報|
|string|destPath|展開先パス⇒[[GetForwardFilePath>#GetForwardFilePath]]で取得|
|ForwardFileKind|flg|解凍対象となるファイルタイプ|
+orderBaseに最低限必要なパラメータ
++[[OrFilePath>OR_MAIN#OR_FILE_PATH]]
++[[OrFileName>OR_MAIN#OR_FILE_NAME]]
**[[GetFileServerPath>#GetFileServerPath]] [#GetFileServerPath]
サーバへの転送先ファイル名を取得
|型|変数名|詳細|h
|SortedList<int, object>|filepathDocList|[[FilepathDoc]]のリスト。中身が無ければ関数内で読み込みます|
|ForwardFile|ff|転送情報、取得するための情報を設定しておく|
|[[ForwardFileUseKind]]|useKind|取得したいものの種別|
+ffの設定内容
++セットの転送先を取得したい場合
+++ff.HakkouDate = DateTime.Today;
+++ff.OrderKindCodeStr = 対応したオーダ種コード
**[[GetForwardFileName>#GetForwardFileName]] [#GetForwardFileName]
保存先フォルダ名を取得
|型|変数名|詳細|h
|OrderBase|orderBase|オーダ情報オブジェクト|
|[[ForwardFileFileKind]]|fileKind|種別|
**[[GetForwardFilePath>#GetForwardFilePath]] [#GetForwardFilePath]
保存先パス名を取得
|型|変数名|詳細|h
|PkOrderKind|orderKind|オーダ種コード|
|ForwardFilePathType|pathType|種別|
**マスタ設定 [#m680d136]
[[FilepathDoc]]を参照して、転送先マスタを設定
**[[記録系>PkKarte]] [#o288f2ef]
+[[KarteCommonTool]]を用いた方法で実装済みなので、とりあえず説明は割愛~
ただし、基本は通常オーダ系と同じで、記録系は常にオーダ単位で処理が発生するが、通常オーダ系では、編集中のオーダ全てを処理するかの違いがあるだけです(たぶん)~
っていうか、記録系を解読しながら書いてるので、ほとんど同じなのは当たり前...
**通常オーダ系 [#t0823e4c]
+ジャーナルへ保存(OI_Save等でのジャーナル保存時)
++オーダNo未確定の場合は、OrderJournalDB.[[GetOrderNoList>OrderJournalDB]]よりオーダNoを取得
++転送したいファイルを指定フォルダにコピー
+++PkBase.ForwardFileTool.[[GetForwardFilePath>ForwardFileTool]]によりパスを取得~
ジャーナル保存時はForwardFilePathType:[[New>ForwardFilePathType]]~
⇒伝票行のOrderBase.[[OrFilePath>OrderBase]]にセット
+++PkBase.ForwardFileTool.[[GetForwardFileName>ForwardFileTool]]により、フォルダ名を取得~
ForwardFileFileKind:[[GlobalFileName>ForwardFileFileKind]]~
⇒伝票行のOrderBase.[[OrFileName>OrderBase]]にセット~
⇒転送ファイル名の基本部分になります~
ファイル名の命名規則⇒[[OR_MAIN]].PAGE_INFO
+++上記で取得したものを繋げたフォルダ名をコピー先に指定してフォルダコピー~
⇒PkBase.ForwardFileTool.[[CopyDirectory>ForwardFileTool]]~
%%※転送処理は、フォルダ単位で行われるため、その中のファイルの命名に関しては各々が判別できるように自由で%%~
⇒&color(red){カルテ参照や、レポート参照でも使用するため、ファイル名も規則に従って作成する必要があります};
++PkBase.ForwardFileTool.[[FileToServer>ForwardFileTool]](下記の処理が自動で行われます)~
+++%%zipFlg:trueで、ZIPに圧縮%%~
⇒&color(red){他と動作を合わせるため、ジャーナルおよび、発行用データはZIP圧縮します};
+++ジャーナル用フォルダに転送
+++渡したOrderBaseの[[OrFilePath>OrderBase]]/[[OrFileName>OrderBase]]が転送先情報に書き換わります
+++New内の転送元データをフォルダごと削除~
⇒PkBase.ForwardFileTool.[[DeleteFolder>ForwardFileTool]]
+ジャーナルからの読み込み
++ジャーナルからオーダデータ読み込み時に、編集用にローカルにデータをコピー~
⇒PkBase.ForwardFileTool.[[FileFromArchive>ForwardFileTool]]~
OrderBase:orderBase~
destPath:WORK用パス~
ForwardFileKind:[[AllComplete>ForwardFileKind]]~
%%⇒PkBase.ForwardFileTool.[[CopyDirectory>ForwardFileTool]]%%~
%%※コピー元:OrderBase.[[OrFilePath>OrderBase]] + OrderBase.[[OrFileName>OrderBase]]%%~
%% コピー先:WORK用%%
+発行(ここは、アプリからの制御)
++ファイル転送対象オーダチェック
+++文書系:ForwardFileGroup.Doc
+++記録系:ForwardFileGroup.Karte
+++上記2つとも:ForwardFileGroup.All~
⇒画像検査ならカルテと同じ転送モードってことにするか?
++対象オーダがあれば、ForwardFileTool.[[Execute>ForwardFileTool]]実行⇒下記の処理が流れます
+++転送対象オーダ情報取得~
+++カルテ参照転送/アーカイブ転送は、どっかの設定から~
⇒[[AppXmlProf>PkAppProf]].Instance.[[GetForwardFileConfig()>PkAppProf]]._forwardKind
+++BUMON_DENSO_FLG_05⇒「転送中」に