(57)【要約】【課題】秘匿するべき文字列を元ファイルから削除して、解析に適したファイルを作成する情報処理装置等を提供すること。【解決手段】プログラムは、取得したデータから変換処理対象の第１文字列を検出し、検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する処理をコンピュータに実行させる。【選択図】図５
2017162114.tif 000002
【特許請求の範囲】
【請求項１】
取得したデータから変換処理対象の第１文字列を検出し、
検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する
処理をコンピュータに実行させるプログラム。
【請求項２】
文字列と該文字列の属性とを含む文字列リストを参照して、前記データから前記文字列リスト内の文字列に一致する第１文字列を検出する
請求項１に記載のプログラム。
【請求項３】
文字列と、該文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記文字列と同一の文字数を有する第２文字列とを含む文字列リストを参照して、前記データから前記文字列リスト内の文字列に一致する第１文字列を検出し、
前記第１文字列を、前記文字列リスト内の前記第１文字列に対応する第２文字列に変換する
請求項１に記載のプログラム。
【請求項４】
検出した前記第１文字列を、前記属性または前記関連文字と、数字と、記号とを組み合わせた前記第２文字列に変換する
請求項１から請求項３のいずれか一つに記載のプログラム。
【請求項５】
前記数字は、前記第１文字列に付与された番号である
請求項４に記載のプログラム。
【請求項６】
前記数字は、所定の範囲で循環する
請求項４または請求項５に記載のプログラム。
【請求項７】
前記データから前記第１文字列を複数検出した場合に、検出したすべての前記第１文字列を同一の前記第２文字列に変換する
請求項２から請求項６のいずれか一つに記載のプログラム。
【請求項８】
取得したデータから変換処理対象の第１文字列を検出し、
検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する
処理をコンピュータに実行させる情報処理方法。
【請求項９】
取得したデータから変換処理対象の第１文字列を検出する検出部と、
前記検出部が検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する変換部と
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理方法および情報処理装置に関する。
【背景技術】
【０００２】
営業日報等の自然言語を使用した活動記録の分析を第三者に依頼する際に、活動記録中に含まれる顧客名等を秘匿化する情報提供装置が提案されている（特許文献１）。音声認識用の統計的言語モデルを作成する際に、顧客名等を削除する処理装置が提案されている（特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３５０１３９号公報
【特許文献２】特開２００３−２０２８９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
情報処理システムのサポートセンタが、ユーザからの問い合わせに対応する際に、情報処理システムの動作を記録したいわゆるログファイル等のファイルの提出を求める場合がある。このファイルには、情報処理システムで扱った顧客の氏名および住所等の、外部への流出を避けるべき文字列が記録されている場合がある。
【０００５】
サポートセンタでファイルを解析する際には、顧客の氏名および住所等の具体的な内容を知る必要性は低い。その一方、ファイルの当該位置に氏名が記録されているのか、それとも住所が記録されているのか等を判別できることは、解析を行う際に有用である。
【０００６】
特許文献１に開示されている装置を用いてファイルを処理する場合には、秘匿化した文字列が氏名であるのか、住所であるのか等を判別することはできない。したがって、特許文献１に開示されている装置では、サポートセンタでの解析に適したファイルを出力することができない。特許文献２に開示されている装置は、統計学的言語モデルを作成する装置であり、特定のファイル中の顧客名等を秘匿する処理を行うことはできない。
【０００７】
一つの側面では、秘匿するべき文字列を元ファイルから削除して、解析に適したファイルを作成する情報処理装置等を提供することを目的とする。
【課題を解決するための手段】
【０００８】
プログラムは、取得したデータから変換処理対象の第１文字列を検出し、検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する処理をコンピュータに実行させる。
【発明の効果】
【０００９】
一つの側面では、秘匿するべき文字列を元ファイルから削除して、解析に適したファイルを作成する情報処理装置等を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置の構成を示す説明図である。
【図２】ログＤＢのレコードレイアウトを示す説明図である。
【図３】変換元ファイルの例を示す説明図である。
【図４】文字列リストＤＢのレコードレイアウトを示す説明図である。
【図５】変換後ファイルの例を示す説明図である。
【図６】プログラムの処理の流れを示すフローチャートである。
【図７】変換後文字列作成のサブルーチンの処理の流れを示すフローチャートである。
【図８】実施の形態２の情報処理システムの構成を示す説明図である。
【図９】実施の形態２の利用者ＤＢのレコードレイアウトを示す説明図である。
【図１０】実施の形態２の患者ＤＢのレコードレイアウトを示す説明図である。
【図１１】実施の形態２の病名ＤＢのレコードレイアウトを示す説明図である。
【図１２】実施の形態２の属性情報ＤＢのレコードレイアウトを示す説明図である。
【図１３】実施の形態２の利用者名変換ＤＢのレコードレイアウトを示す説明図である。
【図１４】実施の形態２の患者名変換ＤＢのレコードレイアウトを示す説明図である。
【図１５】実施の形態２の住所変換ＤＢのレコードレイアウトを示す説明図である。
【図１６】実施の形態２の病名変換ＤＢのレコードレイアウトを示す説明図である。
【図１７】実施の形態２の変換後ファイルの例を示す説明図である。
【図１８】実施の形態２のプログラムの処理の流れを示すフローチャートである。
【図１９】実施の形態２の変換ＤＢ作成のサブルーチンの処理の流れを示すフローチャートである。
【図２０】実施の形態２の変換後文字列作成−２のサブルーチンの処理の流れを示すフローチャートである。
【図２１】実施の形態３の属性情報ＤＢのレコードレイアウトを示す説明図である。
【図２２】実施の形態３の変換ＤＢのレコードレイアウトを示す説明図である。
【図２３】実施の形態３のプログラムの処理の流れを示すフローチャートである。
【図２４】実施の形態３の元文字列リスト作成のサブルーチンの処理の流れを示すフローチャートである。
【図２５】実施の形態３の変換ＤＢ追記のサブルーチンの処理の流れを示すフローチャートである。
【図２６】実施の形態４の関連文字ＤＢのレコードレイアウトを示す説明図である。
【図２７】実施の形態４の変換ＤＢのレコードレイアウトを示す説明図である。
【図２８】実施の形態４のプログラムの処理の流れを示すフローチャートである。
【図２９】実施の形態４の文字列リスト変換のサブルーチンの処理の流れを示すフローチャートである。
【図３０】実施の形態４の変換後文字列作成−３のサブルーチンの処理の流れを示すフローチャートである。
【図３１】実施の形態５の変換ＤＢのレコードレイアウトを示す説明図である。
【図３２】実施の形態６の変換ＤＢのレコードレイアウトを示す説明図である。
【図３３】実施の形態７の情報処理装置の動作を示す機能ブロック図である。
【図３４】実施の形態８の情報処理装置の構成を示す説明図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
図１は、情報処理装置１１の構成を示す説明図である。本実施の形態の情報処理装置１１は、医療施設内で電子カルテ、職員の勤怠記録および診断機器が生成した医療データ等を管理する院内情報処理装置である。
【００１２】
情報処理装置１１は、ＣＰＵ（Central Processing Unit）１２、主記憶装置１３、補助記憶装置１４、入力部１５、表示部１６、通信部１７、読取部１８およびバスを備える。本実施の形態の情報処理装置１１は、汎用のパーソナルコンピューター、タブレット、大型計算機等の情報機器等である。また、本実施の形態の情報処理装置１１は、大型計算機上で動作する仮想マシンでも良い。
【００１３】
ＣＰＵ１２は、本実施の形態に係るプログラムを実行する演算制御装置である。ＣＰＵ１２には、一または複数のＣＰＵまたはマルチコアＣＰＵ等が使用される。ＣＰＵ１２は、バスを介して情報処理装置１１を構成するハードウェア各部と接続されている。
【００１４】
主記憶装置１３は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等の記憶装置である。主記憶装置１３には、ＣＰＵ１２が行う処理の途中で必要な情報およびＣＰＵ１２で実行中のプログラムが一時的に保存される。
【００１５】
補助記憶装置１４は、ＳＲＡＭ、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置１４には、ＣＰＵ１２に実行させるプログラム、変換元ファイル３１、変換後ファイル３２、ログＤＢ（DataBase）４１、文字列リストＤＢ４２、およびプログラムの実行に必要な各種情報が保存される。
【００１６】
入力部１５は、マウス、キーボード、タッチパネル、ペンタブレット、マイク等の機器であり、ユーザによる操作をＣＰＵ１２が受け付ける際に使用する。表示部１６は、ディスプレイ、プリンタ、プロッタ等の機器であり、ＣＰＵ１２がユーザに提示する情報を表示する。通信部１７は、図示しないネットワークとの通信を行うインターフェイスである。
【００１７】
読取部１８は、後述する可搬型記録媒体７２（図３４参照）を読み取る装置であり、具体的にはたとえばＳＤ（Secure Digital）カードスロット、光学ディスクドライブまたはＵＳＢ（Universal Serial Bus）ポート等である。
【００１８】
図２は、ログＤＢ４１のレコードレイアウトを示す説明図である。ログＤＢ４１は、情報処理装置１１の動作を記録したログファイルと記録開始時刻とを関連づけるＤＢである。ログＤＢ４１は、開始時刻フィールドとファイルフィールドとを有する。
【００１９】
開始時刻フィールドには、各ログファイルへの記録を開始した時刻が記録されている。ファイルフィールドには、ログファイルが記録されている。本実施の形態においては、ＣＰＵ１２は１時間ごとに新たなログファイルを生成し、ログＤＢ４１に蓄積する。ログＤＢ４１は、１個のログファイルについて１つのレコードを有する。
【００２０】
図３は、変換元ファイル３１の例を示す説明図である。変換元ファイル３１は、ログＤＢ４１に記録されたログファイルを補助記憶装置１４に複写したファイルである。
【００２１】
変換元ファイル３１には、ＡからＦの囲みで示すように氏名、住所、病名等の情報が記録されている。これらの情報は、サポートセンタでの解析には不要な情報であり、秘匿することが望ましい。変換元ファイル３１は、本実施の形態のデータの一例である。
【００２２】
図４は、文字列リストＤＢ４２のレコードレイアウトを示す説明図である。文字列リストＤＢ４２は、ログＤＢ４１に記録される可能性がある情報のうち、秘匿するべき文字列と属性とを関連づけるＤＢである。文字列リストＤＢ４２は、属性フィールドと元文字列フィールドとを有する。秘匿するべき文字列は、本実施の形態の第１文字列の一例である。文字列リストＤＢ４２は、本実施の形態の文字列リストを記録したＤＢの一例である。
【００２３】
元文字列フィールドには、秘匿するべき文字列のリストが記録されている。属性フィールドには、元文字列の属性が記録されている。たとえば、属性フィールドに「患者」と記録されているレコードの元文字列フィールドには、患者の氏名が記録されている。属性フィールドに「利用」と記録されているレコードの元文字列フィールドには、情報処理装置１１の利用者の氏名が記録されている。利用者は、たとえば医師、看護師、薬剤師等の情報処理装置１１を利用する施設のスタッフである。
【００２４】
属性フィールドに「住所」と記録されているレコードの元文字列フィールドには、患者または利用者の住所が記録されている。属性フィールドに「病名」と記録されているレコードの元文字列フィールドには、病名が記録されている。文字列リストＤＢ４２は、秘匿するべき１つの文字列について１つのレコードを有する。
【００２５】
文字列リストＤＢ４２は、たとえば情報処理装置１１が取り扱う電子カルテ等で使用する項目を集積したマスターファイルである。また、ＣＰＵ１１は、あらかじめ利用者による秘匿するべき情報の入力を受け付けて、文字列リストＤＢ４２に記録しても良い。
【００２６】
図５は、変換後ファイル３２の例を示す説明図である。変換後ファイル３２は、図３を使用して説明した変換元ファイル３１に含まれる氏名、住所、病名等の情報を秘匿したファイルである。変換後ファイル３２は、ネットワークまたはＵＳＢメモリ等の可搬型記憶媒体を介してサポートセンタ等に提供されるファイルである。
【００２７】
図３から図５を使用して、情報の秘匿について具体的に説明する。ＣＰＵ１２は、変換元ファイル３１を１行読み込む。ＣＰＵ１２は、文字列リストＤＢ４２の元文字列フィールドに記録された文字が変換元ファイル３１に含まれるか否かを判定する。
【００２８】
図３のＥ部に示すように、変換元ファイル３１の４行目には「インフルエンザ」という文字列が含まれている。ＣＰＵ１２は、文字列リストＤＢ４２の元文字列フィールドに記録された「インフルエンザ」が、変換元ファイル３１の４行目に含まれていると判定する。図４に示すように、「インフルエンザ」の属性は「病名」である。「インフルエンザ」の文字数は７文字である。
【００２９】
ＣＰＵ１２は、属性を示す文字列「病名」の後ろに「○」を５個付加して全部で７文字にした変換後文字列「病名○○○○○」を生成する。図５のＫ部に示すように、ＣＰＵ１２は、変換元ファイル３１の「インフルエンザ」を変換後文字列「病名○○○○○」で置換する。以上により、ＣＰＵ１２は、変換元ファイル３１の４行目に含まれる「インフルエンザ」の文字列を秘匿する。
【００３０】
同様に、図３のＡ部に示すように変換元ファイルの５行目には「鈴木  花子」という文字列が含まれている。ＣＰＵ１２は、文字列リストＤＢ４２の元文字列フィールドに記録された「鈴木  花子」が、変換元ファイル３１の５行目に含まれていると判定する。図４に示すように「鈴木  花子」の属性は「患者」である。「鈴木  花子」の文字数は、姓と名との間の空白文字を含めて５文字である。
【００３１】
ＣＰＵ１２は、属性を示す文字列「患者」の後ろに「○」を３個付加して全部で５文字にした変換後文字列「患者○○○」を生成する。図５のＧ部に示すように、ＣＰＵ１２は、変換元ファイル３１の「鈴木  花子」を変換後文字列「患者○○○」で置換する。以上により、ＣＰＵ１２は、変換元ファイル３１の５行目に含まれる「鈴木  花子」の文字列を秘匿する。
【００３２】
ＣＰＵ１２は、変換元ファイル３１の各行に対して上述の処理を繰り返し、文字列リストＤＢ４２の元文字列フィールドに含まれている各文字列を、変換後文字列で置換した変換後ファイル３２を作成する。
【００３３】
変換後ファイル３２について説明する。図３のＡ部からＦ部に示す氏名、住所、病名等の秘匿するべき文字列は、図５のＧ部からＬ部に示す変換後文字列で置換されている。変換後文字列は、元文字列の属性を示す文字列の後ろに「○」を付加して元の文字列と同一の文字数にした文字列である。変換後文字列は、本実施の形態の第２文字列の一例である。
【００３４】
変換後ファイル３２には、秘匿するべき文字列は含まれないが、ログファイルの解析に必要な情報は維持されている。したがって、サポートセンタでは変換後ファイル３２を解析することにより、情報処理装置１１のトラブル対策等のサポートを行うことができる。
【００３５】
なお、上記の説明および以後の説明では、たとえばＵｎｉｃｏｄｅ等の文字コードに対応する文字を１文字として文字数を定義する。文字には、英数字、カタカナ、ひらがな、漢字、記号等を含む。また、文字には全角文字および半角文字を含む。
【００３６】
属性を示す文字列は、複数の文字の組合せに限定しない。以後の説明においては、属性を示す文字列には、属性を示す単一の文字も含む。
【００３７】
図６は、プログラムの処理の流れを示すフローチャートである。図６を使用して、プログラムの処理の流れを説明する。
【００３８】
ＣＰＵ１２は、入力部１５または通信部１７を介してログファイルが必要な日時を取得する（ステップＳ５０１）。ログファイルが必要な日時は、たとえば情報処理装置１１にトラブルが生じた可能性がある日時である。
【００３９】
ＣＰＵ１２は、変換元ファイル３１を取得する（ステップＳ５０２）。具体的には、ＣＰＵ１２は、ステップＳ５０１で取得した日時をキーとしてログＤＢ４１の開始日時フィールドを検索して必要なログファイルが記録されたレコードを抽出する。ＣＰＵ１２は、抽出されたレコードに記録されたログファイルを補助記憶装置１４に複写する。複写したログファイルが、変換元ファイル３１である。
【００４０】
ＣＰＵ１２は、変換後ファイル３２を初期化する（ステップＳ５０３）。具体的には、ＣＰＵ１２は補助記憶装置１４にデータが記録されていない変換後ファイル３２を作成する。
【００４１】
ＣＰＵ１２は、カウンタＩを初期値１に設定する（ステップＳ５０４）。ＣＰＵ１２は、変換元ファイル３１のＩ行目を読み込む。以後、ＣＰＵ１２は変換元ファイルのＩ行目を処理対象とする（ステップＳ５０５）。
【００４２】
ＣＰＵ１２は、カウンタＪを初期値１に設定する（ステップＳ５０６）。ＣＰＵ１２は、文字列リストＤＢ４２のＪ番目のレコードの元文字列フィールドに記録された元文字列を取得する（ステップＳ５０７）。
【００４３】
ＣＰＵ１２は、ステップＳ５０５で処理対象とした文字列が、ステップＳ５０７で取得した元文字列を含むか否かを判定する（ステップＳ５０８）。元文字列を含むと判定した場合（ステップＳ５０８でＹＥＳ）、ＣＰＵ１２は変換後文字列作成のサブルーチンを起動する（ステップＳ５０９）。変換後文字列作成のサブルーチンは、元文字列と同一の文字数を有し、元文字列の属性示す文字を含む変換後文字列を作成するサブルーチンである。変換後文字列作成のサブルーチンの処理の流れは後述する。
【００４４】
ＣＰＵ１２は、ステップＳ５０５で処理対象とした文字列のうち、ステップＳ５０７で取得した元文字列の部分を、ステップＳ５０９で作成した変換後文字列で置換する（ステップＳ５１０）。ステップＳ５１０の終了後および元文字列を含まないと判定した場合（ステップＳ５０８でＮＯ）、ＣＰＵ１２は、処理対象の文字列を変換後ファイル３２に記録する（ステップＳ５１１）。
【００４５】
ＣＰＵ１２は、文字列リストＤＢ４２に記録されたすべての元文字列の処理が終了したか否かを判定する（ステップＳ５１２）。終了していないと判定した場合（ステップＳ５１２でＮＯ）、ＣＰＵ１２はカウンタＪに１を加算する（ステップＳ５１３）。その後、ＣＰＵ１２は、ステップＳ５０８に戻る。
【００４６】
終了したと判定した場合（ステップＳ５１２でＹＥＳ）、ＣＰＵ１２は、変換元ファイル３１のすべての行の処理を終了したか否かを判定する（ステップＳ５１４）。終了していないと判定した場合（ステップＳ５１４でＮＯ）、ＣＰＵ１２はカウンタＩに１を加算する（ステップＳ５１５）。その後、ＣＰＵ１２はステップＳ５０５に戻る。
【００４７】
終了したと判定した場合（ステップＳ５１４でＹＥＳ）、ＣＰＵ１２は補助記憶装置１４から変換元ファイル３１を削除する（ステップＳ５１６）。ＣＰＵ１２は、その後処理を終了する。
【００４８】
図７は、変換後文字列作成のサブルーチンの処理の流れを示すフローチャートである。変換後文字列作成のサブルーチンは、元文字列と同一の文字数を有し、元文字列の属性示す文字を含む変換後文字列を作成するサブルーチンである。図７を使用して、変換後文字列作成のサブルーチンの処理の流れを説明する。
【００４９】
ＣＰＵ１２は、元文字列の文字数を取得する（ステップＳ５２１）。文字数は、たとえば文字列から文字数を算出する関数に元文字列を入力することにより取得することができる。文字数を算出する関数は公知であるので説明を省略する。
【００５０】
ＣＰＵ１２は、文字列変数である変換後文字列を、元文字列の属性を示す文字列に設定する（ステップＳ５２２）。ＣＰＵ１２は、変換後文字列の文字数が元文字列の文字数より少ないか否かを判定する（ステップＳ５２３）。
【００５１】
少ないと判定した場合（ステップＳ５２３でＹＥＳ）、ＣＰＵ１２は変換後文字列の末尾に「○」を追加する（ステップＳ５２４）。その後、ＣＰＵ１２はステップＳ５２３に戻る。少なくないと判定した場合（ステップＳ５２３でＮＯ）。ＣＰＵ１２は処理を終了する。
【００５２】
本実施の形態によると、文字列リストＤＢ４２の元文字列フィールドに記録された秘匿するべき文字列を変換元ファイル３１から削除して、サポートセンタ等での解析に適した変換後ファイル３２を作成することができる。
【００５３】
変換後ファイル３２には、秘匿した文字列の属性および文字数が記録されているため、サポートセンタでの解析を支障なく実施することができる。複雑なトラブルが発生しておりサポートセンタでは解析困難である場合には、情報処理装置１１のメーカ等の高度な解析力を有する機関に変換後ファイル３２を転送しても、情報漏洩等の問題が生じない。
【００５４】
秘匿した文字列は「○」の連続で示されているので、サポートセンタの解析担当者が実際のログ情報と混同せず、正しく解析を行うことができる。なお、ステップＳ５２４で追加する「○」は例示である。「○」の代わりに任意の文字を使用することができる。
【００５５】
属性に関連づけられた関連文字を、属性を示す文字列に使用しても良い。複数の関連文字を組み合わせて、属性を示す文字列に使用しても良い。関連文字には、たとえば属性の１文字目を取り出して使用しても良い。図４等に示した例よりも長い属性を使用する場合には、属性の最初の２文字程度を関連文字に使用しても良い。「Ａ」「Ｂ」「Ｃ」などの属性とは異なる文字を、属性に関連づけて関連文字に使用しても良い。
【００５６】
秘匿した文字列は「○」の連続で示されているので、サポートセンタの解析担当者が実際のログ情報と混同せずに、正しく解析を行うことができる。なお、ステップＳ５２４で追加する「○」は例示である。「○」の代わりに任意の文字を使用することができる。
【００５７】
変換後文字列の末尾に、属性を示す文字列を配置しても良い。具体的には、たとえば図５のＧ部を「○○○患者」としても良い。また、属性を示す文字列を変換後文字列の中央部に配置しても良い。具体的には、たとえば図５のＧ部を「○患者○○」としても良い。
【００５８】
情報処理装置１１は、院内情報処理装置に限定しない。たとえば学校または企業等で使用する情報処理装置であっても良い。情報処理装置１１は、家庭内で使用するパソコン等でも良い。文字列リストＤＢ４２には、情報処理装置１１が扱う情報に応じて任意の属性および元文字列を記録することができる。
【００５９】
［実施の形態２］
本実施の形態は、変換後文字列に番号を含む情報処理装置１１に関する。さらに、本実施の形態は、電子カルテ等の情報を管理するサーバ２１と、変換元ファイルに含まれる文字列を変換する情報処理装置１１とを組み合わせた情報処理システム１０に関する。実施の形態１と共通する部分については、説明を省略する。本実施の形態の情報処理システム１０は、医療施設内で電子カルテ、職員の勤怠記録および診断機器が生成した医療データ等を管理する院内情報処理システムである。
【００６０】
図８は、実施の形態２の情報処理システム１０の構成を示す説明図である。情報処理システム１０は、情報処理装置１１およびサーバ２１を備える。情報処理装置１１およびサーバ２１は、ネットワーク２９を介して接続されている。
【００６１】
情報処理装置１１は、ＣＰＵ１２、主記憶装置１３、補助記憶装置１４、入力部１５、表示部１６、通信部１７、読取部１８およびバスを備える。補助記憶装置１４には、ＣＰＵ１２に実行させるプログラム、変換元ファイル３１、変換後ファイル３２、利用者名変換ＤＢ３３１、患者名変換ＤＢ３３２、住所変換ＤＢ３３３、病名変換ＤＢ３３４、属性情報ＤＢ３７およびプログラムの実行に必要な各種情報が保存される。以下の説明では、利用者名変換ＤＢ３３１、患者名変換ＤＢ３３２、住所変換ＤＢ３３３および病名変換ＤＢ３３４を総称して、変換ＤＢ３３と記載する場合がある。変換ＤＢ３３は、本実施の形態の文字列リストを記録したＤＢの一例である。
【００６２】
通信部１７は、ネットワーク２９および図示しない外部のネットワークとの通信を行うインターフェイスである。
【００６３】
サーバ２１は、サーバＣＰＵ２２、主記憶装置２３、サーバ補助記憶装置２４、通信部２８およびバスを備える。本実施の形態のサーバ２１は、電子カルテ、職員の勤怠記録および診断機器が生成した医療データ等を管理する情報処理装置である。本実施の形態のサーバ２１は、汎用のパーソナルコンピューター、大型計算機等の情報機器等である。また、本実施の形態のサーバ２１は、大型計算機上で動作する仮想マシンでも良い。
【００６４】
サーバＣＰＵ２２は、サーバ２１を制御する演算制御装置である。サーバＣＰＵ２２には、一または複数のＣＰＵまたはマルチコアＣＰＵ等が使用される。サーバＣＰＵ２２は、バスを介してサーバ２１を構成するハードウェア各部と接続されている。
【００６５】
主記憶装置２３は、ＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ等の記憶装置である。主記憶装置２３には、サーバＣＰＵ２２が行う処理の途中で必要な情報およびサーバＣＰＵ２２で実行中のプログラムが一時的に保存される。
【００６６】
サーバ補助記憶装置２４は、ＳＲＡＭ、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。サーバ補助記憶装置２４には、サーバＣＰＵ２２に実行させるプログラム、ログＤＢ４１、利用者ＤＢ４３、患者ＤＢ４４、病名ＤＢ４６およびプログラムの実行に必要な各種情報が保存される。通信部２８は、ネットワーク２９との通信を行うインターフェイスである。
【００６７】
ネットワーク２９は、医療情報システム１０に含まれる情報機器同士を接続する院内ネットワークである。ネットワーク２９には、図示しない多数のクライアントが接続されている。
【００６８】
図９は、実施の形態２の利用者ＤＢ４３のレコードレイアウトを示す説明図である。利用者ＤＢ４３は、利用者ＩＤ（IDentification）、利用者名および利用者の住所を関連づけるＤＢである。利用者ＤＢ４３は、利用者ＩＤフィールド、利用者名フィールドおよび住所フィールドを有する。利用者ＤＢ４３は一人の利用者について１つのレコードを有する。
【００６９】
利用者ＩＤフィールドには、利用者を識別するＩＤが記録されている。利用者名フィールドには、利用者ＩＤフィールドに対応する利用者の氏名が記録されている。住所フィールドには、利用者ＩＤフィールドに対応する利用者の住所が記録されている。なお、利用者ＤＢ４３は、さらに利用者の生年月日、所属部署等を記録するフィールドを有しても良い。
【００７０】
図１０は、実施の形態２の患者ＤＢ４４のレコードレイアウトを示す説明図である。患者ＤＢ４４は、患者ＩＤ、患者名および患者の住所を関連づけるＤＢである。患者ＤＢ４４は、患者ＩＤフィールド、患者名フィールドおよび住所フィールドを有する。患者ＤＢ４４は、一人の患者について１つのレコードを有する。
【００７１】
患者ＩＤフィールドには、患者を識別するＩＤが記録されている。患者名フィールドには、患者ＩＤフィールドに対応する患者の氏名が記録されている。住所フィールドには、患者ＩＤフィールドに対応する患者の住所が記録されている。なお、患者ＤＢ４４は、さらに患者の生年月日、保険証番号等を記録するフィールドを有しても良い。
【００７２】
図１１は、実施の形態２の病名ＤＢ４６のレコードレイアウトを示す説明図である。病名ＤＢ４６は、病名コードと病名とを関連づけるＤＢである。病名ＤＢ４６は、病名コードフィールド、および病名フィールドを有する。病名ＤＢ４６は、１つの病名コードについて１つのレコードを有する。
【００７３】
病名コードフィールドには、病名を識別するコードが記録されている。病名フィールドには、病名コードフィールドに対応する病気の名称が記録されている。
【００７４】
図１２は、実施の形態２の属性情報ＤＢ３７のレコードレイアウトを示す説明図である。属性情報ＤＢ３７は、元ＤＢ名、フィールド名、変換ＤＢ名および属性を関連づけるＤＢである。属性情報ＤＢ３７は、元ＤＢ名フィールド、フィールド名フィールド、変換ＤＢ名フィールドおよび属性フィールドを有する。
【００７５】
元ＤＢ名フィールドには、秘匿するべき文字列のリストが記録されたＤＢの名称が記録されている。フィールド名フィールドには、秘匿するべき元文字列のリストが記録されたフィールドの名称が記録されている。変換ＤＢ名フィールドには、元文字列および変換後文字列を記録する変換ＤＢ３３の名称が記録されている。属性フィールドには秘匿するべき文字列の属性が記録されている。属性情報ＤＢ３７は、１つの元文字列のリストについて１つのレコードを有する。
【００７６】
図１３は、実施の形態２の利用者名変換ＤＢ３３１のレコードレイアウトを示す説明図である。利用者名変換ＤＢ３３１は、元文字列である利用者名と、これを変換した変換後利用者名とを関連づけるＤＢである。利用者名変換ＤＢ３３１は、利用者名フィールドと変換後利用者名フィールドとを有する。利用者名フィールドには、元文字列である利用者名が記録されている。変換後利用者名フィールドには、利用者名を変換した文字列が記録されている。利用者名変換ＤＢ３３１は一人の利用者名について１つのレコードを有する。ＣＰＵ１２は、利用者ＤＢ４３に基づいて利用者名変換ＤＢ３３１を作成する。
【００７７】
利用者名の文字列の変換について説明する。変換前の文字列の文字数と、変換後の文字列の文字数とは同一である。変換前の文字列が５文字以上である場合には、変換後の文字列は、変換前の文字列の属性を示す文字列「利用者」の後ろに１桁の数字および「○」を付加した文字列である。変換前の文字列が４文字以下である場合には、変換後の文字列は「利用者」の先頭の文字である「利」の後ろに１桁の数字および「○」を付加した文字列である。
【００７８】
図１４は、実施の形態２の患者名変換ＤＢ３３２のレコードレイアウトを示す説明図である。患者名変換ＤＢ３３２は、元文字列である患者名と、これを変換した変換後患者名とを関連づけるＤＢである。患者名変換ＤＢ３３２は、患者名フィールドと変換後患者名フィールドとを有する。患者名フィールドには、元文字列である患者名が記録されている。変換後患者名フィールドには、患者名を変換した文字列が記録されている。患者名変換ＤＢ３３２は一人の患者名について一つのレコードを有する。ＣＰＵ１２は、患者ＤＢ４４に基づいて患者名変換ＤＢ３３２を作成する。
【００７９】
患者名の文字列の変換について説明する。変換前の文字列の文字数と、変換後の文字列の文字数とは同一である。変換前の文字列が４文字以上である場合には、変換後の文字列は、変換前の文字列の属性を示す文字列「患者」の後ろに１桁の数字および「○」を付加した文字列である。図１４には含まれていないが、変換前の文字列が３文字以下である場合には、変換後の文字列は「患者」の先頭の文字である「患」の後ろに１桁の数字および「○」を付加した文字列である。
【００８０】
図１５は、実施の形態２の住所変換ＤＢ３３３のレコードレイアウトを示す説明図である。住所変換ＤＢ３３３は、元文字列である住所と、これを変換した変換後住所とを関連づけるＤＢである。住所変換ＤＢ３３３は、住所フィールドと変換後住所フィールドとを有する。住所フィールドには、元文字列である住所が記録されている。変換後住所フィールドには、住所を変換した文字列が記録されている。住所変換ＤＢ３３３は、１つの住所について１つのレコードを有する。ＣＰＵ１２は、利用者ＤＢ４３および患者ＤＢ４４に基づいて住所変換ＤＢ３３３を作成する。
【００８１】
住所の文字列の変換について説明する。変換前の文字列の文字数と、変換後の文字列の文字数とは同一である。変換前の文字列が４文字以上である場合には、変換後の文字列は、変換前の文字列の属性を示す文字列「住所」の後ろに１桁の数字および「○」を付加した文字列である。図１５には含まれていないが、変換前の文字列が３文字以下である場合には、変換後の文字列は「住所」の先頭の文字である「住」の後ろに１桁の数字および「○」を付加した文字列である。
【００８２】
図１６は、実施の形態２の病名変換ＤＢ３３４のレコードレイアウトを示す説明図である。病名変換ＤＢ３３４は、元文字列である病名と、これを変換した変換後病名を関連づけるＤＢである。病名変換ＤＢ３３４は、病名フィールドと変換後病名フィールドとを有する。病名フィールドには、元文字列である病名が記録されている。変換後病名フィールドには、病名を変換した文字列が記録されている。病名変換ＤＢ３３４は、１つの病名について１つのレコードを有する。ＣＰＵ１２は、病名ＤＢ４６に基づいて病名変換ＤＢ３３４を作成する。
【００８３】
病名の文字列の変換について説明する。変換前の文字列の文字数と、変換後の文字列の文字数とは同一である。変換前の文字列が４文字以上である場合には、変換後の文字列は、変換前の文字列の属性を示す文字列「病名」の後ろに１桁の数字および「○」を付加した文字列である。図１６には含まれていないが、変換前の文字列が３文字以下である場合には、変換後の文字列は「病名」の先頭の文字である「病」の後ろに１桁の数字および「○」を付加した文字列である。
【００８４】
図１３を使用して説明した利用者名変換ＤＢ３３１の作成方法の概要について説明する。図１２を使用して説明した属性情報ＤＢ３７の一番上に記載されたレコードの変換ＤＢ名フィールドには「利用者名変換ＤＢ」が記録されている。これは、利用者名変換ＤＢ３３１について記録したレコードであることを意味している。
【００８５】
同じレコードの元ＤＢ名フィールドには「利用者ＤＢ」、フィールド名フィールドには「利用者名」が記録されている。これは、利用者ＤＢ４３の利用者名フィールドに記録された文字列を、秘匿する対象である元文字列とすることを意味している。同じレコードの文字列フィールドには「利用者」が記録されている。これは、元文字列の属性が「利用者」であることを意味している。
【００８６】
変換ＤＢ名フィールドに記録されている「利用者名変換ＤＢ」が補助記憶装置１４に記憶されていない場合、ＣＰＵ１２は利用者名変換ＤＢ３３１を補助記憶装置１４に作成する。ＣＰＵ１２は、利用者名変換ＤＢ３３１の元文字列フィールドの名称を、属性情報レコードのフィールド名フィールドに記録されている「利用者名」とする。ＣＰＵ１２は、利用者名変換ＤＢ３３１の変換後文字列フィールドの名称を、属性情報レコードのフィールド名フィールドに記録されている「利用者名」の前に「変換後」を付加して、「変換後利用者名」とする。
【００８７】
ＣＰＵ１２は、図９を使用して説明した利用者ＤＢ４３の利用者名フィールドに記録された文字列をサーバ２１から取得し、利用者名変換ＤＢ３３１の利用者名フィールドに記録する。ＣＰＵ１２は、利用者名変換ＤＢ３３１の利用者名フィールドに記録された文字列を、属性、数字および「○」を組み合わせた文字列に変換して、変換後利用者名フィールドに記録する。
【００８８】
図１３に示すように、変換後利用者名フィールドの数字は、「１」から始まり、「９」の次は「０」、「１」と循環する１桁の連番である。なお、変換後利用者名フィールドの数字は「１」から「Ｆ」までを循環する１６進数の一桁の連番でも良い。また、二桁の数字を使用しても良い。二桁の数字を使用する場合には、属性を１文字で表示することが望ましい。
【００８９】
住所変換ＤＢ３３３の作成方法の概要について説明する。図１２を使用して説明した属性情報ＤＢ３７の上から二番目および四番目に記載されたレコードの変換ＤＢ名フィールドには「住所変換ＤＢ」が記録されている。これは、住所変換ＤＢ３３３について記録したレコードであることを意味している。
【００９０】
上から二番目のレコードの元ＤＢ名フィールドには「利用者ＤＢ」、フィールド名フィールドには「住所」が記録されている。これは、利用者ＤＢ４３の住所フィールドに記録された文字列を、秘匿する対象である元文字列とすることを意味している。同じレコードの文字列フィールドには「住所」が記録されている。これは、元文字列の属性が「住所」であることを意味している。
【００９１】
上から四番目のレコードの元ＤＢ名フィールドには「患者ＤＢ」、フィールド名フィールドには「住所」が記録されている。これは、患者ＤＢ４４の住所フィールドに記録された文字列を、秘匿する対象である元文字列とすることを意味している。同じレコードの文字列フィールドには「住所」が記録されている。これは、元文字列の属性が「住所」であることを意味している。
【００９２】
このように、本実施の形態においては、利用者ＤＢ４３に記録された利用者の住所と患者ＤＢ４４に記録された患者の住所とを一つの住所変換ＤＢ３３３に記録する。
【００９３】
ＣＰＵ１２は、図９を使用して説明した利用者ＤＢ４３の住所フィールドに記録された文字列をサーバ２１から取得し、図１５を使用して説明した住所変換ＤＢ３３３の住所フィールドに記録する。ＣＰＵ１２は、図１０を使用して説明した患者ＤＢ４４の住所フィールドに記録された文字列も、図１５を使用して説明した住所変換ＤＢ３３３の住所フィールドに記録する。ＣＰＵ１２は、住所変換ＤＢ３３３の住所フィールドに記録された文字列を、属性、数字および「○」を組み合わせた文字列に変換して、変換後住所フィールドに記録する。
【００９４】
患者名変換ＤＢ３３２および病名変換ＤＢ３３４の作成方法も同様であるので、説明を省略する。前述のとおり、利用者名変換ＤＢ３３１、患者名変換ＤＢ３３２、住所変換ＤＢ３３３および病名変換ＤＢ３３４を、変換ＤＢ３３と総称する。変換ＤＢ３３は、秘匿するべき文字列および変換後の文字列を記録したＤＢである。
【００９５】
図１３から図１６に示す各変換ＤＢ３３の左側に示すフィールドを元文字列フィールドと総称する。元文字列フィールドには、秘匿するべき文字列のリストが記録されている。すなわち、本実施の形態においては、４つの変換ＤＢ３３の元文字列フィールドには、秘匿するべき文字列のリストを分割した子リストが記録されている。
【００９６】
各変換ＤＢ３３の右側に示すフィールドを変換後文字列フィールドと総称する。変換後文字列フィールドには、変換した文字列が記録されている。
【００９７】
図１７は、実施の形態２の変換後ファイル３２の例を示す説明図である。変換後ファイル３２は、図３を使用して説明した変換元ファイル３１に含まれる氏名、住所、病名等の情報を秘匿したファイルである。
【００９８】
図３および図１３から図１７を使用して、情報の秘匿について具体的に説明する。ＣＰＵ１２は、変換元ファイル３１を１行読み込む。ＣＰＵ１２は、図１３から図１６を使用して説明した変換ＤＢ３３の元文字列フィールドに記録された文字が変換元ファイル３１に含まれるか否かを判定する。
【００９９】
図３の４行目のＥ部に示すように、変換元ファイル３１の４行目には「インフルエンザ」という文字列が含まれている。ＣＰＵ１２は、図１６を使用して説明した病名変換ＤＢ３３４の病名フィールドに記録された「インフルエンザ」が、変換元ファイル３１の４行目に含まれていると判定する。
【０１００】
ＣＰＵ１２は、病名変換ＤＢ３３４の「インフルエンザ」が記録されたレコードの変換後病名フィールドに記録された「病名１○○○○」を取得する。図１７の４行目のＱ部に示すように、ＣＰＵ１２は、変換元ファイルの「インフルエンザ」を変換後文字列「病名１○○○○」で置換する。
【０１０１】
ＣＰＵ１２は、変換元ファイル３１の７行目のＥ部にも「インフルエンザ」が含まれていると判定する。ＣＰＵ１２は、図１７の７行目のＱ部に示すように、変換元ファイルの「インフルエンザ」を変換後文字列「病名１○○○○」で置換する。
【０１０２】
以上により、ＣＰＵ１２は、変換元ファイル３１の４行目および７行目に含まれる「インフルエンザ」の文字列を秘匿する。
【０１０３】
図３のＡ部からＦ部に示す氏名、住所、病名等の秘匿するべき文字列は、図１７のＭ部からＲ部に示す変換後文字列で置換されている。変換後文字列は、変換ＤＢ３３の変換後ＤＢフィールドに記録された文字列である。
【０１０４】
変換後ファイル３２には、秘匿するべき文字列は含まれないが、ログファイルの解析に必要な情報は維持されている。さらに、たとえば図３のＡ部に記録された「鈴木  花子」は「患者１○○」に変換され、Ｂ部に記録された「田中  一郎」は「患者２○○」に変換される。したがって、サポートセンタでは変換後ファイル３２をさらに詳細に解析することができる。
【０１０５】
図１８は、実施の形態２のプログラムの処理の流れを示すフローチャートである。図１８を使用して、本実施の形態のプログラムの処理の流れを説明する。なお、本実施の形態のプログラムの開始時点においては、変換元ファイル３１、利用者名変換ＤＢ３３１、患者名変換ＤＢ３３２、住所変換ＤＢ３３３、病名変換ＤＢ３３４および属性情報ＤＢ３７は、補助記憶装置１４に記憶されていない。
【０１０６】
ＣＰＵ１２は、入力部１５または通信部１７を介してログファイルが必要な日時を取得する（ステップＳ５４１）。ログファイルが必要な日時は、たとえば情報処理システム１０にトラブルが生じた可能性がある日時である。
【０１０７】
ＣＰＵ１２は、変換元ファイル３１を取得する（ステップＳ５４２）。具体的には、ＣＰＵ１２は、ステップＳ５０１で取得した日時をサーバ２１にネットワーク２９を介して送信する。サーバＣＰＵ２２は、受信した日時をキーとしてログＤＢ４１の開始日時フィールドを検索して必要なログファイルが記録されたレコードを抽出する。サーバＣＰＵ２２は、抽出されたレコードに記録されたログファイルを情報処理装置１１にネットワーク２９を介して送信する。ＣＰＵ１２は、受信したログファイルを補助記憶装置１４に複写する。複写したログファイルが、変換元ファイル３１である。
【０１０８】
ＣＰＵ１２は、変換後ファイル３２を初期化する（ステップＳ５４３）。具体的には、ＣＰＵ１２は補助記憶装置１４にデータが記録されていない変換後ファイル３２を作成する。
【０１０９】
ＣＰＵ１２は、変換ＤＢ作成のサブルーチンを起動する（ステップＳ５４４）。変換ＤＢ作成のサブルーチンは、サーバ２１から秘匿するべき文字列のリストを取得して、変換ＤＢ３３を作成するサブルーチンである。変換ＤＢ作成のサブルーチンの処理の流れは後述する。
【０１１０】
ステップＳ５４４の終了後、本実施の形態においては、補助記憶装置１４に利用者名変換ＤＢ３３１、患者名変換ＤＢ３３２、住所変換ＤＢ３３３および病名変換ＤＢ３３４の４個の変換ＤＢ３３が記憶されている。これらの変換ＤＢ３３には１から４の番号が付与されている。
【０１１１】
ＣＰＵ１２は、カウンタＩを初期値１に設定する（ステップＳ５４５）。ＣＰＵ１２は、変換元ファイル３１のＩ行目を読み込む。以後、ＣＰＵ１２は変換元ファイルのＩ行目を処理対象とする（ステップＳ５４６）。
【０１１２】
ＣＰＵ１２は、カウンタＫを初期値１に設定する（ステップＳ５４７）。ＣＰＵ１２は、カウンタＪを初期値１に設定する（ステップＳ５４８）。ＣＰＵ１２は、Ｋ番目の変換ＤＢ３３のＪ番目のレコードを取得する（ステップＳ５４９）。以後の説明ではステップＳ５４９で取得したレコードの元文字列フィールドに記録された文字列を、元文字列と記載する。また、ステップＳ５４９で取得したレコードの変換後文字列フィールドに記録された文字列を、変換後文字列と記載する。
【０１１３】
ＣＰＵ１２は、ステップＳ５４６で処理対象とした文字列が、ステップＳ５４９で取得した元文字列を含むか否かを判定する（ステップＳ５５０）。元文字列を含むと判定した場合（ステップＳ５５０でＹＥＳ）、ＣＰＵ１２は、ステップＳ５４６で処理対象とした文字列のうち、ステップＳ５４９で取得した元文字列の部分を、同じステップＳ５４９で取得した変換後文字列で置換する（ステップＳ５５１）。ステップＳ５５１の終了後および元文字列を含まないと判定した場合（ステップＳ５５０でＮＯ）、ＣＰＵ１２は、処理対象の文字列を変換後ファイル３２に記録する（ステップＳ５５２）。
【０１１４】
ＣＰＵ１２は、処理中の変換ＤＢ３３に記録されたすべてのレコードの処理が終了したか否かを判定する（ステップＳ５５３）。終了していないと判定した場合（ステップＳ５５３でＮＯ）、ＣＰＵ１２はカウンタＪに１を加算する（ステップＳ５５４）。その後、ＣＰＵ１２は、ステップＳ５４９に戻る。
【０１１５】
終了したと判定した場合（ステップＳ５５３でＹＥＳ）、ＣＰＵ１２は、すべての変換ＤＢ３３の処理を終了したか否かを判定する（ステップＳ５５５）。終了していないと判定した場合（ステップＳ５５５でＮＯ）、ＣＰＵ１２はカウンタＫに１を加算する（ステップＳ５５６）。その後、ＣＰＵ１２は、ステップＳ５４８に戻る。
【０１１６】
終了したと判定した場合（ステップＳ５５５でＹＥＳ）、ＣＰＵ１２は、変換元ファイル３１のすべての行の処理を終了したか否かを判定する（ステップＳ５５７）。終了していないと判定した場合（ステップＳ５５７でＮＯ）、ＣＰＵ１２はカウンタＩに１を加算する（ステップＳ５５８）。その後、ＣＰＵ１２はステップＳ５４６に戻る。
【０１１７】
終了したと判定した場合（ステップＳ５５７でＹＥＳ）、ＣＰＵ１２は補助記憶装置１４から変換元ファイル３１および変換ＤＢ３３を削除する（ステップＳ５５９）。ＣＰＵ１２は、その後処理を終了する。
【０１１８】
図１９は、実施の形態２の変換ＤＢ作成のサブルーチンの処理の流れを示すフローチャートである。変換ＤＢ作成のサブルーチンは、サーバ２１から秘匿するべき文字列のリストを取得して、変換ＤＢ３３を作成するサブルーチンである。図１９を使用して、変換ＤＢ作成のサブルーチンの処理の流れを説明する。
【０１１９】
ＣＰＵ１２は、カウンタＩを１に設定する（ステップＳ５７１）。ＣＰＵ１２は、図１２を使用して説明した属性情報ＤＢ３７から、Ｉ番目の属性情報レコードを取得する（ステップＳ５７２）。
【０１２０】
ＣＰＵ１２は、取得したレコードの変換ＤＢ名フィールドに記録されている名称の変換ＤＢ３３が補助記憶装置１４に記憶されているか否かを判定する（ステップＳ５７３）。記憶されていると判定した場合（ステップＳ５７３でＹＥＳ）、ＣＰＵ１２は、その変換ＤＢ３３に記録されているレコードの数に１を加算した値をカウンタＪに設定する（ステップＳ５７４）。
【０１２１】
記憶されていないと判定した場合（ステップＳ５７３でＮＯ）、ＣＰＵ１２は、変換ＤＢ３３を初期化する（ステップＳ５７５）。具体的には、ＣＰＵ１２は、ステップＳ５７２で取得したレコードの変換ＤＢ名フィールドに記録されている名称および２個のフィールドを有し、レコードを有さないＤＢを作成し、補助記憶装置１４に記憶する。
【０１２２】
ＣＰＵ１２は、カウンタＪを初期値１に設定する（ステップＳ５７６）。ステップＳ５７４またはステップＳ５７６の終了後、ＣＰＵ１２はネットワーク２９を介してサーバ２１にステップＳ５７２で取得した属性情報レコードに示された文字列のリストを要求する（ステップＳ５７７）。
【０１２３】
具体例を挙げて説明する。前述のとおり、Ｉ＝１である場合、ＣＰＵ１２は図１２に示す属性情報ＤＢ３７の一番上に記載した属性情報レコードを取得する。元ＤＢ名フィールドには「利用者ＤＢ」が記録されている。フィールド名フィールドには、「利用者名」が記録されている。ＣＰＵ１２は、図９を使用して説明した利用者名ＤＢ４３の利用者名フィールドに記録された文字列のリストをサーバ２１に要求する。
【０１２４】
サーバＣＰＵ２２は、情報処理装置１１からの要求を受信する（ステップＳ５９１）。サーバＣＰＵ２２は、指定されたＤＢの指定されたフィールドから要求された文字列のリストを抽出し、情報処理装置１１に送信する（ステップＳ５９２）。
【０１２５】
ＣＰＵ１２は、文字列のリストを受信する（ステップＳ５７８）。ＣＰＵ１２は、文字列のリストを処理中の変換ＤＢ３３の元文字列フィールドに追加する（ステップＳ５７９）。
【０１２６】
ＣＰＵ１２は、変換ＤＢ３３のＪ番目のレコードの元文字列フィールドに記録されている元文字列を取得する（ステップＳ５８０）。ＣＰＵ１２は、カウンタＪを１０で割った剰余、すなわちカウンタＪの１の位の数字を変数「番号」に設定する（ステップＳ５８１）。
【０１２７】
ＣＰＵ１２は、変換後文字列作成−２のサブルーチンを起動する（ステップＳ５８２）。変換後文字列作成−２のサブルーチンは、元文字列と同一の文字数を有し、元文字列の属性を示す文字および数字を含む変換後文字列を作成するサブルーチンである。変換後文字列作成−２のサブルーチンの処理の流れは後述する。なお、ＣＰＵ１２は変数「番号」、ステップＳ５８０で取得した元文字列およびステップＳ５７２で取得した属性情報レコードを引数として変換後文字列作成−２のサブルーチンに引き渡す。
【０１２８】
ＣＰＵ１２は、変換後文字列作成−２のサブルーチンで作成した変換後文字列を、変換ＤＢ３３のＪ番目のレコードの変換後文字列フィールドに記録する（ステップＳ５８３）。ＣＰＵ１２は、変換ＤＢ３３に記録されたすべての元文字列の処理が終了したか否かを判定する（ステップＳ５８４）。終了していないと判定した場合（ステップＳ５８４でＮＯ）、ＣＰＵ１２はカウンタＪに１を加算する（ステップＳ５８５）。その後、ＣＰＵ１２は、ステップＳ５８０に戻る。
【０１２９】
終了したと判定した場合（ステップＳ５８４でＹＥＳ）、ＣＰＵ１２は、属性情報ＤＢ３７のすべてのレコードの処理を終了したか否かを判定する（ステップＳ５８６）。終了していないと判定した場合（ステップＳ５８６でＮＯ）、ＣＰＵ１２はカウンタＩに１を加算する（ステップＳ５８７）。その後、ＣＰＵ１２はステップＳ５７２に戻る。属性情報ＤＢ３７のすべてのレコードの処理が終了したと判定した場合（ステップＳ５８６でＹＥＳ）、ＣＰＵ１２は処理を終了する。
【０１３０】
図２０は、実施の形態２の変換後文字列作成−２のサブルーチンの処理の流れを示すフローチャートである。変換後文字列作成−２のサブルーチンは、元文字列と同一の文字数を有し、元文字列の属性示す文字および数字を含む変換後文字列を作成するサブルーチンである。
【０１３１】
図２０を使用して、変換後文字列作成−２のサブルーチンの処理の流れを説明する。なお、ＣＰＵ１２は変数「番号」、ステップＳ５８０で取得した元文字列およびステップＳ５７２で取得した属性情報レコードを引数として変換後文字列作成−２のサブルーチンに引き渡す。
【０１３２】
ＣＰＵ１２は、元文字列の文字数Ｎを取得する（ステップＳ６０１）。ＣＰＵ１２は、元文字列の文字数Ｎが１であるか否かを判定する（ステップＳ６０２）。元文字列の文字数Ｎが１であると判定した場合（ステップＳ６０２でＹＥＳ）、ＣＰＵ１２は、文字列変数である変換後文字列を元文字列の属性を示す文字列の１文字目に設定する（ステップＳ６０３）。ＣＰＵ１２は、その後処理を終了する。
【０１３３】
具体例を挙げて説明する。引数として、図１２を使用して説明した属性情報ＤＢ３７の１番目の属性情報レコードを受け取っている場合、属性フィールドに記録されている元文字列の属性は「利用者」である。元文字列の文字数Ｎが１である場合、ＣＰＵ１２は変換後文字列に「利用者」の１文字目である「利」を設定する。
【０１３４】
元文字列の文字数Ｎが１ではないと判定した場合（ステップＳ６０２でＮＯ）、ＣＰＵ１２は、元文字列の属性を示す文字列の文字数Ｍを取得する（ステップＳ６０４）。ＣＰＵ１２は、元文字列の文字数Ｎが、属性を示す文字列の文字数Ｍと変数「番号」の桁数との和以下であるか否かを判定する（ステップＳ６０５）。
【０１３５】
以下であると判定した場合（ステップＳ６０５でＹＥＳ）、ＣＰＵ１２は変換後文字列を元文字列の属性を示す文字列の１文字目に設定する（ステップＳ６０６）。以下でないと判定した場合（ステップＳ６０５でＮＯ）、ＣＰＵ１２は変換後文字列を元文字列の属性を示す文字列に設定する（ステップＳ６０７）。
【０１３６】
ステップＳ６０６またはステップＳ６０７の終了後、ＣＰＵ１２は、変換後文字列の末尾に変数「番号」を示す文字列を追加する（ステップＳ６０８）。ＣＰＵ１２は、変換後文字列の文字数が元文字列の文字数よりも少ないか否を判定する（ステップＳ６０９）。少ないと判定した場合（ステップＳ６０９でＹＥＳ）、ＣＰＵ１２は変換後文字列の末尾に「○」を追加する（ステップＳ６１０）。ＣＰＵ１２は、ステップＳ６０９に戻る。
【０１３７】
変換後文字列の文字数が元文字列の文字数以上であると判定した場合（ステップＳ６０９でＮＯ）、ＣＰＵ１２は処理を終了する。
【０１３８】
本実施の形態によると、同一の属性の文字列を複数秘匿した変換後ファイル３２を作成する場合に、番号により元の文字列を識別することが可能である。そのため、サポートセンタでは変換後ファイル３２をさらに詳細に解析することができる。
【０１３９】
電子カルテ等のデータを扱うサーバ２１と情報処理装置１１とを分離することにより、それぞれに適切なセキュリティレベルを設定することが可能になる。なお、サーバ２１は外部のネットワークに直接接続せず、情報処理装置１１を介してサポートセンタ等の外部に接続することが望ましい。このようにすることにより、サーバ２１に蓄積された電子カルテ等の情報が外部のネットワークに流出すること可能性を低減することができる。
【０１４０】
変換後ファイル３２の作成後、変換元ファイル３１および文字列リストＤＢ４２を補助記憶装置１４から削除するので、これらのファイルが情報処理装置１１から外部に流出する可能性も低減することができる。
【０１４１】
情報処理システム１０は、院内情報処理システムに限定しない。たとえば学校または企業等で使用する情報処理システムであっても良い。属性情報ＤＢ３７には、情報処理システム１０が扱う情報に応じて任意のレコードを記録することができる。
【０１４２】
［実施の形態３］
本実施の形態は、元文字列のリスト中の変換元ファイル３１に実際に含まれる文字列のみを変換する情報処理装置１１に関する。さらに、本実施の形態は、サーバ２１に記憶された各種のＤＢから抽出した秘匿するべき文字列のリストを１個の変換ＤＢ３３にまとめて記憶する情報処理装置１１に関する。実施の形態２と共通する部分については、説明を省略する。
【０１４３】
図２１は、実施の形態３の属性情報ＤＢ３７のレコードレイアウトを示す説明図である。本実施の形態の属性情報ＤＢ３７は、元ＤＢ名、フィールド名および属性を関連づけるＤＢである。属性情報ＤＢ３７は、元ＤＢ名フィールド、フィールド名フィールドおよび属性フィールドを有する。
【０１４４】
元ＤＢ名フィールドには、秘匿するべき文字列のリストが記録されたＤＢの名称が記録されている。フィールド名フィールドには、秘匿するべき元文字列のリストが記録されたフィールドの名称が記録されている。属性フィールドには秘匿するべき文字列の属性が記録されている。属性情報ＤＢ３７は、１つの元文字列のリストについて１つのレコードを有する。
【０１４５】
図２２は、実施の形態３の変換ＤＢ３３のレコードレイアウトを示す説明図である。変換ＤＢ３３は、属性、元文字列および変換後文字列を関連づけるＤＢである。変換ＤＢ３３は、属性フィールド、元文字列フィールドおよび変換後文字列フィールドを有する。属性フィールドには、元文字列の属性が記録されている。元文字列フィールドには、秘匿するべき文字列が記録されている。変換後文字列フィールドには、元文字列を変換した文字列が記録されている。変換ＤＢ３３は、秘匿するべき１つの文字列について１つのレコードを有する。
【０１４６】
本実施の形態においては、変換元ファイル３１に元文字列が含まれていないレコードの変換後文字列フィールドは空欄である。変換後文字列フィールドに文字列が記録されている場合の、文字列の変換について説明する。元文字列フィールドに記録された文字列の文字数と、変換後文字列フィールドに記録された文字列の文字数とは同一である。変換後の文字列は、変換前の文字列の属性を示す文字列の後ろに１桁の数字および「○」を付加した文字列である。
【０１４７】
図２３は、実施の形態３のプログラムの処理の流れを示すフローチャートである。図２３を使用して、本実施の形態のプログラムの処理の流れを説明する。なお、本実施の形態のプログラムの開始時点においては、変換元ファイル３１および変換ＤＢ３３は、補助記憶装置１４に記憶されていない。
【０１４８】
ＣＰＵ１２は、入力部１５または通信部１７を介してログファイルが必要な日時を取得する（ステップＳ５４１）。ＣＰＵ１２は、変換元ファイル３１を取得する（ステップＳ５４２）。ＣＰＵ１２は、変換元ファイルを補助記憶装置１４に記憶する。
【０１４９】
ＣＰＵ１２は、元文字列リスト作成のサブルーチンを起動する（ステップＳ６２１）。元文字列リスト作成のサブルーチンは、サーバ２１から秘匿するべき文字列のリストおよび各文字列の属性を取得して、図２２を使用して説明した変換ＤＢ３３の元文字列フィールドおよび属性フィールドに記録するサブルーチンである。元文字列リスト作成のサブルーチンの処理の流れは後述する。
【０１５０】
ＣＰＵ１２は、変換後ファイル３２および属性カウンタを初期化する（ステップＳ６２２）。具体的には、ＣＰＵ１２は補助記憶装置１４にデータが記録されていない変換後ファイル３２を作成する。ＣＰＵ１２は、ステップＳ６２１で変換ＤＢ３３の属性フィールドに記録した各属性に対応する属性カウンタを初期値１に設定する。
【０１５１】
属性カウンタについて具体例を挙げて説明する。本実施の形態では、図２２示すように「患者」「住所」「利用」「病名」の４つの属性が変換ＤＢ３３に記録されている。したがって、ＣＰＵ１２は、患者カウンタ、住所カウンタ、利用カウンタおよび病名カウンタの４つのカウンタをすべて初期値１に設定する。
【０１５２】
ＣＰＵ１２は、カウンタＩを初期値１に設定する（ステップＳ６２３）。ＣＰＵ１２は、変換元ファイル３１のＩ行目を読み込む。以後、ＣＰＵ１２は変換元ファイルのＩ行目を処理対象とする（ステップＳ６２４）。
【０１５３】
ＣＰＵ１２は、カウンタＪを初期値１に設定する（ステップＳ６２５）。ＣＰＵ１２は、変換ＤＢ３３のＪ番目のレコードを取得する（ステップＳ６２６）。以後の説明ではステップＳ６２６で取得したレコードの元文字列フィールドに記録された文字列を、元文字列と記載する。また、ステップＳ６２６で取得したレコードの変換後文字列フィールドに記録された文字列を、変換後文字列と記載する。
【０１５４】
ＣＰＵ１２は、ステップＳ６２４で処理対象とした文字列が、ステップＳ６２６で取得した元文字列を含むか否かを判定する（ステップＳ６２７）。元文字列を含むと判定した場合（ステップＳ６２７でＹＥＳ）、ＣＰＵ１２は元文字列が変換済であるか否かを判定する（ステップＳ６２８）。具体的には、ステップＳ６２６で取得したレコードの変換後文字列フィールドに文字列が記録されている場合には、変換済である。ステップＳ６２６で取得したレコードの変換後文字列フィールドに文字列が記録されている場合には、変換済ではない。
【０１５５】
変換済ではないと判定した場合（ステップＳ６２８でＮＯ）、ＣＰＵ１２は変換ＤＢ追記のサブルーチンを起動する（ステップＳ６２９）。変換ＤＢ追記のサブルーチンは、元文字列を変換し、変換した結果を元文字列と同じレコードの変換済文字列フィールドに追記するサブルーチンである。変換ＤＢ追記のサブルーチンの処理の流れは後述する。
【０１５６】
ＣＰＵ１２は、ステップＳ６２６で取得したレコードの属性フィールドに記録された属性に対応する属性カウンタに１を加算する（ステップＳ６３０）。ステップＳ６３０の終了後、ＣＰＵ１２は、ステップＳ６２４で処理対象とした文字列のうち、ステップＳ６２６で取得した元文字列の部分を、変換後文字列で置換する（ステップＳ６３１）。
【０１５７】
元文字列が変換済であると判定した場合（ステップＳ６２８でＹＥＳ）も、ＣＰＵ１２は、ステップＳ６２４で処理対象とした文字列のうち、ステップＳ６２６で取得した元文字列の部分を、変換後文字列で置換する（ステップＳ６３１）。
【０１５８】
ステップＳ６３１の終了後および元文字列を含まないと判定した場合（ステップＳ６２７でＮＯ）、ＣＰＵ１２は、処理対象の文字列を変換後ファイル３２に記録する（ステップＳ６３２）。
【０１５９】
ＣＰＵ１２は、処理中の変換ＤＢ３３に記録されたすべてのレコードの処理が終了したか否かを判定する（ステップＳ６３３）。終了していないと判定した場合（ステップＳ６３３でＮＯ）、ＣＰＵ１２はカウンタＪに１を加算する（ステップＳ６３４）。その後、ＣＰＵ１２は、ステップＳ６２６に戻る。
【０１６０】
終了したと判定した場合（ステップＳ６３３でＹＥＳ）、ＣＰＵ１２は、変換元ファイル３１のすべての行の処理を終了したか否かを判定する（ステップＳ６３５）。終了していないと判定した場合（ステップＳ６３５でＮＯ）、ＣＰＵ１２はカウンタＩに１を加算する（ステップＳ６３６）。その後、ＣＰＵ１２はステップＳ６２４に戻る。
【０１６１】
終了したと判定した場合（ステップＳ６３５でＹＥＳ）、ＣＰＵ１２は補助記憶装置１４から変換元ファイル３１および変換ＤＢ３３を削除する（ステップＳ６３７）。ＣＰＵ１２は、その後処理を終了する。
【０１６２】
図２４は、実施の形態３の元文字列リスト作成のサブルーチンの処理の流れを示すフローチャートである。元文字列リスト作成のサブルーチンは、サーバ２１から秘匿するべき文字列のリストおよび各文字列の属性を取得して、図２２を使用して説明した変換ＤＢ３３の元文字列フィールドおよび属性フィールドに記録するサブルーチンである。図２４を使用して、元文字列リスト作成のサブルーチンの処理の流れを説明する。
【０１６３】
ＣＰＵ１２は、変換ＤＢ３３を初期化する（ステップＳ６５１）。具体的には、ＣＰＵ１２は、レコードを有さない変換ＤＢ３３を作成し、補助記憶装置１４に記憶する。ＣＰＵ１２は、カウンタＩを１に設定する（ステップＳ６５２）。ＣＰＵ１２は、図２１を使用して説明した属性情報ＤＢ３７から、Ｉ番目の属性情報レコードを取得する（ステップＳ６５３）。
【０１６４】
ＣＰＵ１２はネットワーク２９を介してサーバ２１にステップＳ６５３で取得した属性情報レコードに示された文字列のリストを要求する（ステップＳ６５４）。
【０１６５】
具体例を挙げて説明する。Ｉ＝１である場合、ＣＰＵ１２は図２１に示す属性情報ＤＢ３７の一番上に記載した属性情報レコードを取得する。元ＤＢ名フィールドには「利用者ＤＢ」が記録されている。フィールド名フィールドには、「利用者名」が記録されている。ＣＰＵ１２は、図９を使用して説明した利用者名ＤＢ４３の利用者名フィールドに記録された文字列のリストをサーバ２１に要求する。
【０１６６】
サーバＣＰＵ２２は、情報処理装置１１からの要求を受信する（ステップＳ６７１）。サーバＣＰＵ２２は、指定されたＤＢの指定されたフィールドから文字列のリストを抽出し、情報処理装置１１に送信する（ステップＳ６７２）。
【０１６７】
ＣＰＵ１２は、文字列のリストを受信する（ステップＳ６５５）。ＣＰＵ１２は、文字列のリストを変換ＤＢ３３の元文字列フィールドに追加する（ステップＳ６５６）。
【０１６８】
ＣＰＵ１２は、属性情報ＤＢ３７のすべてのレコードの処理を終了したか否かを判定する（ステップＳ６５７）。終了していないと判定した場合（ステップＳ６５７でＮＯ）、ＣＰＵ１２はカウンタＩに１を加算する（ステップＳ６５８）。その後、ＣＰＵ１２はステップＳ６５３に戻る。属性情報ＤＢ３７のすべてのレコードの処理が終了したと判定した場合（ステップＳ６５７でＹＥＳ）、ＣＰＵ１２は処理を終了する。
【０１６９】
図２５は、実施の形態３の変換ＤＢ追記のサブルーチンの処理の流れを示すフローチャートである。変換ＤＢ追記のサブルーチンは、元文字列を変換し、変換した結果を元文字列と同じレコードの変換済文字列フィールドに追記するサブルーチンである。図２５を使用して、変換ＤＢ追記のサブルーチンの処理の流れを説明する。
【０１７０】
ＣＰＵ１２は、処理中の元文字列の属性に対応する属性カウンタを１０で割った剰余、すなわち属性カウンタの１の位の数字を変数「番号」に設定する（ステップＳ６８１）。
【０１７１】
ＣＰＵ１２は、変換後文字列作成−２のサブルーチンを起動する（ステップＳ６８２）。変換後文字列作成−２のサブルーチンは、元文字列と同一の文字数を有し、元文字列の属性示す文字および数字を含む変換後文字列を作成するサブルーチンである。変換後文字列作成−２のサブルーチンは、図２０を使用して説明した実施の形態２のサブルーチンと同一のサブルーチンを使用する。
【０１７２】
ＣＰＵ１２は、変換後文字列作成−２のサブルーチンで作成した変換後文字列を、図２２を使用して説明した変換ＤＢ３３の処理中のレコードの変換後文字列フィールドに記録する（ステップＳ６８３）。その後、ＣＰＵ１２は処理を終了する。
【０１７３】
本実施の形態によると、変換元ファイル３１に含まれている文字列のみを変換するので、秘匿するべき文字列の数が多い場合に処理量を低減することができる。
【０１７４】
また、本実施の形態によると、変換元ファイル３１に含まれている同一属性の秘匿するべき文字列の種類が１桁である場合には、すべての秘匿するべき文字列を異なる番号を含む文字列に変換することができる。そのため、そのため、サポートセンタでは変換後ファイル３２をさらに詳細に解析することができる。
【０１７５】
本実施の形態において、変換後文字列作成−２のサブルーチンの代わりに図７を使用して説明した変換後文字列作成のサブルーチンを使用しても良い。
【０１７６】
［実施の形態４］
本実施の形態は、文字列の長さを揃えるために使用する文字を用いて、元文字列の属性を示す情報処理装置１１に関する。実施の形態２と共通する部分については、説明を省略する。
【０１７７】
図２６は、実施の形態４の関連文字ＤＢのレコードレイアウトを示す説明図である。関連文字ＤＢは、秘匿するべき文字列の属性と、その属性を示す際に使用する関連文字とを関連づけるＤＢである。関連文字ＤＢは、属性フィールドおよび関連文字フィールドを有する。
【０１７８】
属性フィールドには秘匿するべき文字列の属性が記録されている。関連文字フィールドには、属性を示す際に使用する関連文字が記録されている。関連文字ＤＢは、１つの属性について１つのレコードを有する。
【０１７９】
図２６に示す関連文字ＤＢは例示である。関連文字フィールドに記録される文字は１文字に限定しない。２文字以上の文字が関連文字フィールドに記録されていても良い。
【０１８０】
図２７は、実施の形態４の変換ＤＢ３３のレコードレイアウトを示す説明図である。変換ＤＢ３３は、属性、元文字列および変換後文字列を関連づけるＤＢである。変換ＤＢ３３は、属性フィールド、元文字列フィールドおよび変換後文字列フィールドを有する。属性フィールドには、元文字列の属性が記録されている。元文字列フィールドには、秘匿するべき文字列が記録されている。変換後文字列フィールドには、元文字列を変換した文字列が記録されている。変換ＤＢ３３は、秘匿するべき１つの文字列について１つのレコードを有する。
【０１８１】
図２７に示す変換ＤＢ３３の属性フィールドおよび元文字列フィールドには、図２２を使用して説明した変換ＤＢ３３と同一の文字列が記録されている。本実施の形態においては、すべてのレコードの変換後文字列フィールドに文字列が記録されている。
【０１８２】
文字列の変換について説明する。元文字列フィールドに記録された文字列の文字数と、変換後文字列フィールドに記録された文字列の文字数とは同一である。変換後の文字列は、１桁の数字の後ろに属性フィールドに対応する関連文字を付加した文字列である。
【０１８３】
具体例を挙げて説明する。図２７の一番上に示すレコードの属性フィールドには、「患者」が記録されている。図２６を使用して説明した関連文字ＤＢに示すように、「患者」に対応する関連文字は「□」である。元文字列フィールドには、５文字の文字列「木村  次郎」が記録されている。変換後文字列フィールドには、数字の「１」の後ろに関連文字の「□」を４個付けて５文字にした「１□□□□」が記録されている。
【０１８４】
図２７の６番目に示すレコードの属性フィールドには「住所」が記録されている。図２６を使用して説明した関連文字ＤＢに示すように、住所に対応する関連文字は「○」である。元文字列フィールドには、９文字の文字列「東京都大田区大森１」が記録されている。変換後文字列フィールドには、数字の「４」の後ろに関連文字「○」を８個付けて９文字にした「４○○○○○○○○」が記録されている。
【０１８５】
本実施の形態においては、変換後文字列フィールドの１桁の数字は、属性に関わらず連続して付与されている。
【０１８６】
図２８は、実施の形態４のプログラムの処理の流れを示すフローチャートである。図２８を使用して、本実施の形態のプログラムの処理の流れを説明する。なお、本実施の形態のプログラムの開始時点においては、変換元ファイル３１および変換ＤＢ３３は、補助記憶装置１４に記憶されていない。
【０１８７】
ＣＰＵ１２は、入力部１５または通信部１７を介してログファイルが必要な日時を取得する（ステップＳ５４１）。ＣＰＵ１２は、変換元ファイル３１を取得する（ステップＳ５４２）。ＣＰＵ１２は、変換元ファイル３１を補助記憶装置１４に記憶する。
【０１８８】
ＣＰＵ１２は、元文字列リスト作成のサブルーチンを起動する（ステップＳ６２１）。元文字列リスト作成のサブルーチンは、サーバ２１から秘匿するべき文字列のリストおよび各文字列の属性を取得して、図２７を使用して説明した変換ＤＢ３３の元文字列フィールドおよび属性フィールドに記録するサブルーチンである。元文字列リスト作成のサブルーチンは、図２４を使用して説明した実施の形態２の元文字列リスト作成のサブルーチンと同一のサブルーチンを使用する。
【０１８９】
ＣＰＵ１２は、文字列リスト変換のサブルーチンを起動する（ステップＳ７０１）。文字列リスト変換のサブルーチンは、前述の元文字列リスト作成のサブルーチンが作成した変換ＤＢ３３の元文字列フィールドに記録された文字列を変換して、変換後文字列フィールドに記録するサブルーチンである。文字列リスト変換のサブルーチンの処理の流れは後述する。
【０１９０】
ＣＰＵ１２は、変換後ファイル３２および属性カウンタを初期化する（ステップＳ６２２）。具体的には、ＣＰＵ１２は補助記憶装置１４にデータが記録されていない変換後ファイル３２を作成する。ＣＰＵ１２は、ステップＳ６２１で変換ＤＢ３３の属性フィールドに記録した各属性に対応する属性カウンタを初期値１に設定する。
【０１９１】
ＣＰＵ１２は、カウンタＩを初期値１に設定する（ステップＳ６２３）。ＣＰＵ１２は、変換元ファイル３１のＩ行目を読み込む。以後、ＣＰＵ１２は変換元ファイル３１のＩ行目を処理対象とする（ステップＳ６２４）。
【０１９２】
ＣＰＵ１２は、カウンタＪを初期値１に設定する（ステップＳ６２５）。ＣＰＵ１２は、変換ＤＢ３３のＪ番目のレコードを取得する（ステップＳ６２６）。以後の説明ではステップＳ６２６で取得したレコードの元文字列フィールドに記録された文字列を、元文字列と記載する。また、ステップＳ６２６で取得したレコードの変換後文字列フィールドに記録された文字列を、変換後文字列と記載する。
【０１９３】
ＣＰＵ１２は、ステップＳ６２４で処理対象とした文字列が、ステップＳ６２６で取得した元文字列を含むか否かを判定する（ステップＳ６２７）。元文字列を含むと判定した場合（ステップＳ６２７でＹＥＳ）、ＣＰＵ１２は、ステップＳ６２４で処理対象とした文字列のうち、ステップＳ６２６で取得した元文字列の部分を、変換後文字列で置換する（ステップＳ６３１）。
【０１９４】
ステップＳ６３１の終了後および元文字列を含まないと判定した場合（ステップＳ６２７でＮＯ）、ＣＰＵ１２は、処理対象の文字列を変換後ファイル３２に記録する（ステップＳ６３２）。以後の処理は、図２３を使用して説明したプログラムと同一であるので、説明を省略する。
【０１９５】
図２９は、実施の形態４の文字列リスト変換のサブルーチンの処理の流れを示すフローチャートである。文字列リスト変換のサブルーチンは、図２４を使用して説明した元文字列リスト作成のサブルーチンが作成した変換ＤＢ３３の元文字列フィールドに記録された文字列を変換して、変換後文字列フィールドに記録するサブルーチンである。図２９を使用して、文字列リスト変換のサブルーチンの処理の流れを説明する。
【０１９６】
ＣＰＵ１２は、カウンタＪを初期値１に設定する（ステップＳ７１１）。ＣＰＵ１２は、カウンタＪを１０で割った剰余、すなわちカウンタＪの１の位の数字を変数「番号」に設定する（ステップＳ７１２）。
【０１９７】
ＣＰＵ１２は、変換ＤＢ３３から第Ｊレコードを取得する（ステップＳ７１３）。以後、ＣＰＵ１２は取得した変換レコードを処理対象とする。
【０１９８】
ＣＰＵ１２は、変換後文字列作成−３のサブルーチンを起動する（ステップＳ７１４）。変換後文字列作成−３のサブルーチンは、元文字列と同一の文字数を有し、数字および元文字列の属性に関連づけられた関連文字を含む変換後文字列を作成するサブルーチンである。変換後文字列作成−３のサブルーチンの処理の流れは後述する。なお、ＣＰＵ１２は変数「番号」およびステップＳ７１３で取得した変換レコードを引数として変換後文字列作成−３のサブルーチンに引き渡す。
【０１９９】
ＣＰＵ１２は、変換後文字列作成−３のサブルーチンで作成した変換後文字列を、変換ＤＢ３３のＪ番目のレコードの変換後文字列フィールドに記録する（ステップＳ７１５）。ＣＰＵ１２は、変換ＤＢ３３に記録されたすべての元文字列の処理が終了したか否かを判定する（ステップＳ７１６）。終了していないと判定した場合（ステップＳ７１６でＮＯ）、ＣＰＵ１２はカウンタＪに１を加算する（ステップＳ７１７）。その後、ＣＰＵ１２は、ステップＳ７１２に戻る。終了していると判定した場合（ステップＳ７１６でＹＥＳ）、ＣＰＵ１２は処理を終了する。
【０２００】
図３０は、実施の形態４の変換後文字列作成−３のサブルーチンの処理の流れを示すフローチャートである。変換後文字列作成−３のサブルーチンは、元文字列と同一の文字数を有し、数字および元文字列の属性に関連づけられた関連文字を含む変換後文字列を作成するサブルーチンである。図３０を使用して、変換後文字列作成−３のサブルーチンの処理の流れを説明する。
【０２０１】
ＣＰＵ１２は、元文字列の文字数Ｎを取得する（ステップＳ７３１）。ＣＰＵ１２は、属性を取得する（ステップＳ７３２）。具体的には、ＣＰＵ１２は処理中の変換レコードの属性フィールドに記録された属性をキーとして図２６を使用して説明した関連文字ＤＢを検索し、抽出したレコードの関連文字フィールドに記録されている関連文字を取得する。
【０２０２】
ＣＰＵ１２は、文字列変数である変換後文字列を変数「番号」を示す文字列に設定する（ステップＳ７３３）。
【０２０３】
ＣＰＵ１２は、変換後文字列の文字数が元文字列の文字数よりも少ないか否を判定する（ステップＳ７３４）。少ないと判定した場合（ステップＳ７３４でＹＥＳ）、ＣＰＵ１２は変換後文字列の末尾に関連文字を追加する（ステップＳ７３５）。ＣＰＵ１２は、ステップＳ７３３に戻る。
【０２０４】
変換後文字列の文字数が元文字列の文字数以上であると判定した場合（ステップＳ７３４でＮＯ）、ＣＰＵ１２は処理を終了する。
【０２０５】
本実施の形態によると、元文字列と変換後文字列との文字数を揃えるために使用する文字と、元文字列の属性を示す文字とを兼用することができる。関連文字に「□」「○」等の記号を使用することにより、ログファイルを解析する際に秘匿されている文字列の属性を視認しやすくすることができる。
【０２０６】
秘匿するべき文字列の更新頻度が低い場合には、ステップＳ６３７で変換ＤＢ３３を削除せずに再利用しても良い。このようにすることにより、変換後ファイル３２を短時間で作成することができる。
【０２０７】
図３０を使用して説明した変換後文字列作成−３のサブルーチンは、実施の形態３において変換後文字列作成−２のサブルーチンの代わりに使用しても良い。また、本実施の形態において変換後文字列作成−３のサブルーチンの代わりに変換後文字列作成のサブルーチンまたは変換後文字列作成−２のサブルーチンを使用しても良い。
【０２０８】
［実施の形態５］
本実施の形態は、元文字列の属性を示す文字列を使用して文字列の長さを揃える情報処理装置１１に関する。実施の形態４と共通する部分については、説明を省略する。
【０２０９】
図３１は、実施の形態５の変換ＤＢ３３のレコードレイアウトを示す説明図である。図３１に示す変換ＤＢ３３は、図２７を使用して説明した実施の形態４の変換ＤＢ３３の代わりに使用するＤＢである。
【０２１０】
変換ＤＢ３３は、属性フィールド、元文字列フィールドおよび変換後文字列フィールドを有する。属性フィールドには、元文字列の属性が記録されている。元文字列フィールドには、秘匿するべき文字列が記録されている。変換後文字列フィールドには、元文字列を変換した文字列が記録されている。変換ＤＢ３３は、秘匿するべき１つの文字列について１つのレコードを有する。
【０２１１】
図３１に示す変換ＤＢ３３の属性フィールドおよび元文字列フィールドには、図２７を使用して説明した変換ＤＢ３３と同一の文字列が記録されている。
【０２１２】
文字列の変換について説明する。元文字列フィールドに記録された文字列の文字数と、変換後文字列フィールドに記録された文字列の文字数とは同一である。変換後の文字列は、１桁の数字の後ろに元文字列の属性を示す文字列を付加した文字列である。
【０２１３】
具体例を挙げて説明する。図３１の一番上に示すレコードの属性フィールドには、「患者」が記録されている。元文字列フィールドには、５文字の文字列「木村  次郎」が記録されている。変換後文字列フィールドには、数字の「１」の後ろに属性を示す文字列「患者」を２回繰り返して合計５文字にした「１患者患者」が記録されている。
【０２１４】
図３１の２番目に示すレコードの属性フィールドにも「患者」が記録されている。元文字列フィールドには、４文字の文字列「渡辺  愛」が記録されている。変換後文字列フィールドには、数字の「２」の後ろに属性を示す文字列「患者」を１回半繰り返して合計４文字にした「２患者患」が記録されている。
【０２１５】
［実施の形態６］
本実施の形態は、番号を使用して文字列の長さを揃える情報処理装置１１に関する。実施の形態４と共通する部分については、説明を省略する。
【０２１６】
図３２は、実施の形態６の変換ＤＢ３３のレコードレイアウトを示す説明図である。図３１に示す変換ＤＢ３３は、図２７を使用して説明した実施の形態４の変換ＤＢ３３の代わりに使用するＤＢである。
【０２１７】
変換ＤＢ３３は、属性フィールド、元文字列フィールドおよび変換後文字列フィールドを有する。属性フィールドには、元文字列の属性が記録されている。元文字列フィールドには、秘匿するべき文字列が記録されている。変換後文字列フィールドには、元文字列を変換した文字列が記録されている。変換ＤＢ３３は、秘匿するべき１つの文字列について１つのレコードを有する。
【０２１８】
図３２に示す変換ＤＢ３３の属性フィールドおよび元文字列フィールドには、図２７を使用して説明した変換ＤＢ３３と同一の文字列が記録されている。
【０２１９】
文字列の変換について説明する。元文字列フィールドに記録された文字列の文字数と、変換後文字列フィールドに記録された文字列の文字数とは同一である。変換後の文字列は、属性を示す文字列の１文字目の後ろに１桁の数字を繰り返して付加した文字列である。
【０２２０】
具体例を挙げて説明する。図３２の一番上に示すレコードの属性フィールドには、「患者」が記録されている。元文字列フィールドには、５文字の文字列「木村  次郎」が記録されている。変換後文字列フィールドには、「患者」の１文字目である関連文字「患」の後ろに番号を示す「１」を４回繰り返して合計５文字にした「患１１１１」が記録されている。
【０２２１】
［実施の形態７］
図３３は、実施の形態７の情報処理装置１１の動作を示す機能ブロック図である。情報処理装置１１は、ＣＰＵ１２による制御に基づいて以下のように動作する。
【０２２２】
検出部６３は、取得したデータ、すなわち変換元ファイル３１から変換処理対象の第１文字列を検出する。変換部６４は、検出した第１文字列を、第１文字列に対応する属性または属性に関連づけられた関連文字を含み第１文字列と同一の文字数を有する第２文字列に変換する。
【０２２３】
［実施の形態８］
実施の形態８は、汎用のコンピュータとプログラム７１とを組み合わせて動作させることにより、本実施の形態の情報処理装置１１を実現する形態に関する。図３４は、実施の形態８の情報処理装置１１の構成を示す説明図である。図３４を使用して、本実施の形態の構成を説明する。なお、実施の形態１と共通する部分の説明は省略する。
【０２２４】
本実施の形態のコンピュータは、ＣＰＵ１２、主記憶装置１３、補助記憶装置１４、入力部１５、表示部１６、通信部１７、読取部１８およびバスを備える。コンピュータは、汎用のパソコン等の情報処理装置である。
【０２２５】
プログラム７１は、可搬型記録媒体７２に記録されている。ＣＰＵ１２は、読取部１８を介してプログラム７１を読み込み、補助記憶装置１４に保存する。またＣＰＵ１２は、コンピュータ内に実装されたフラッシュメモリ等の半導体メモリ７３に記憶されたプログラム７１を読出しても良い。さらに、ＣＰＵ１２は、通信部１７および図示しないネットワークを介して接続される図示しない他のサーバコンピュータからプログラム７１をダウンロードして補助記憶装置１４に保存しても良い。
【０２２６】
プログラム７１は、コンピュータの制御プログラムとしてインストールされ、主記憶装置１３にロードして実行される。これにより、コンピュータは上述した情報処理装置１１として機能する。
【０２２７】
各実施例で記載されている技術的特徴（構成要件）はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０２２８】
以上の実施の形態１から実施の形態８を含む実施形態に関し、さらに以下の付記を開示する。
【０２２９】
（付記１）
取得したデータから変換処理対象の第１文字列を検出し、
検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する
処理をコンピュータに実行させるプログラム。
（付記２）
文字列と該文字列の属性とを含む文字列リストを参照して、前記データから前記文字列リスト内の文字列に一致する第１文字列を検出する
付記１に記載のプログラム。
（付記３）
文字列と、該文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記文字列と同一の文字数を有する第２文字列とを含む文字列リストを参照して、前記データから前記文字列リスト内の文字列に一致する第１文字列を検出し、
前記第１文字列を、前記文字列リスト内の前記第１文字列に対応する第２文字列に変換する
付記１に記載のプログラム。
（付記４）
検出した前記第１文字列を、前記属性または前記関連文字と、数字と、記号とを組み合わせた前記第２文字列に変換する
付記１から付記３のいずれか一つに記載のプログラム。
（付記５）
検出した前記第１文字列を、数字と、反復する前記属性または前記関連文字とを組み合わせた前記第２文字列に変換する
付記１から付記４のいずれか一つに記載のプログラム。
（付記６）
検出した前記第１文字列を、前記属性または前記関連文字と、反復する数字とを組み合わせた前記第２文字列に変換する
付記１から付記４のいずれか一つに記載のプログラム。
（付記７）
前記数字は、前記第１文字列に付与された番号である
付記４から付記６のいずれか一つに記載のプログラム。
（付記８）
前記数字は、所定の範囲で循環する
付記４から付記７のいずれか一つに記載のプログラム。
（付記９）
前記データから前記第１文字列を複数検出した場合に、検出したすべての前記第１文字列を同一の前記第２文字列に変換する
付記２から付記８のいずれか一つに記載のプログラム。
（付記１０）
取得したデータから変換処理対象の第１文字列を検出し、
検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する
処理をコンピュータに実行させる情報処理方法。
（付記１１）
取得したデータから変換処理対象の第１文字列を検出する検出部と、
前記検出部が検出した前記第１文字列を、該第１文字列に対応する属性または前記属性に関連づけられた関連文字を含み前記第１文字列と同一の文字数を有する第２文字列に変換する変換部と、
を備える情報処理装置。
【符号の説明】
【０２３０】
１０  情報処理システム
１１  情報処理装置
１２  ＣＰＵ
１３  主記憶装置
１４  補助記憶装置
１５  入力部
１６  表示部
１７  通信部
１８  読取部
２１  サーバ
２２  サーバＣＰＵ
２３  主記憶装置
２４  サーバ補助記憶装置
２８  通信部
２９  ネットワーク
３１  変換元ファイル
３２  変換後ファイル
３３  変換ＤＢ
３３１  利用者名変換ＤＢ
３３２  患者名変換ＤＢ
３３３  住所変換ＤＢ
３３４  病名変換ＤＢ
３７  属性情報ＤＢ
４１  ログＤＢ
４２  文字列リストＤＢ
４３  利用者ＤＢ
４４  患者ＤＢ
４６  病名ＤＢ
６３  検出部
６４  変換部
７１  プログラム
７２  可搬型記憶媒体
７３  半導体メモリ
【図１】
2017162114.tif 000003
【図２】
2017162114.tif 000004
【図３】
2017162114.tif 000005
【図４】
2017162114.tif 000006
【図５】
2017162114.tif 000007
【図６】
2017162114.tif 000008
【図７】
2017162114.tif 000009
【図８】
2017162114.tif 000010
【図９】
2017162114.tif 000011
【図１０】
2017162114.tif 000012
【図１１】
2017162114.tif 000013
【図１２】
2017162114.tif 000014
【図１３】
2017162114.tif 000015
【図１４】
2017162114.tif 000016
【図１５】
2017162114.tif 000017
【図１６】
2017162114.tif 000018
【図１７】
2017162114.tif 000019
【図１８】
2017162114.tif 000020
【図１９】
2017162114.tif 000021
【図２０】
2017162114.tif 000022
【図２１】
2017162114.tif 000023
【図２２】
2017162114.tif 000024
【図２３】
2017162114.tif 000025
【図２４】
2017162114.tif 000026
【図２５】
2017162114.tif 000027
【図２６】
2017162114.tif 000028
【図２７】
2017162114.tif 000029
【図２８】
2017162114.tif 000030
【図２９】
2017162114.tif 000031
【図３０】
2017162114.tif 000032
【図３１】
2017162114.tif 000033
【図３２】
2017162114.tif 000034
【図３３】
2017162114.tif 000035
【図３４】
2017162114.tif 000036