医療情報男の日記

病院で医療情報システムの保守運用の仕事をしています。

医療系SEのキャリアアップ


f:id:tkt0314:20150831130255j:image

本社関係者、ビルメンテナンス部、システム部が集まって納涼会が開かれました。

ふだん客先常駐の僕らシステム部要員は、こういうときしか他部門の人達と関われないのですが、会長や社長や常務、部長などの上層部の人達も気軽に話しかけてくださって、顔と名前を覚えてもらえたのは嬉しかったですね。

二次会はなんと、僕含めたシステム部の若手3人と社長との対談…。こういう席で社長と仕事の話をするのは初めてだったので、かなり緊張…。

その席で、社長は僕らに以下のようなアドバイスを伝えました。

  • 今の常駐先の先輩がいつかは他病院に配置転換となる。それに備え、先輩の業務を知っておくこと
  • 病院の人達から、「○○社のtkt0314」ではなく、「tkt0314の居る○○社」と言われるようになれ
  • 5年後、10年後には後輩も持つ立場になる。もしかしたら役職もついているかもしれない。後続を引っ張っていける力を身につけておくように
以上が主なアドバイスでした。

ウチの会社のシステム部門は、入社してからの約10年間は、客先である医療機関に常駐し、システム運用保守を担当します。
昇格し、役職が与えられると、本社勤務となり、客先常駐部隊のまとめ役を任されることとなります。

客先常駐の場合、電子カルテのヘルプデスクが6割(ハードウェアやプリンタも含む)、データ抽出が2割、自社システムの保守運用が1割、FileMakerやExcelVBA等での開発が1割、といったところでしょうか。

これが、本社勤務となると、客先常駐部隊の指揮、本社や支社で受諾したシステム開発、開発案件の進捗管理、顧客との折衝などが主な業務になります(たぶん)。

本社勤務の場合、病院だけでなく、他業界の顧客からの開発案件もあり、医療システムの知識や経験がほとんど役に立ちません。代わりにプログラムをゴリゴリ書くことになるので、技術的な知識のほうが重要です。

ウチのシステム部門の場合、役職がついてからのほうがプログラミングの業務が増えるという、特殊な職場なのです。

客先に出向してまだ2年目の僕ですが、この先何年かすれば、他の医療機関、もしくは支社の開発部隊に合流、といった異動があるかもしれません。


医療機関常駐型SEの身の振る舞い方

「○○社のtkt0314」ではなく、「tkt0314の居る○○社」と言われるようになれ、と社長から助言をいただいたわけですが、要は、会社の看板として振る舞え、ということです。

ひとつの医療機関に長く居ると、どうしても帰属意識が薄れてしまいます。
病院の職員さんと親しくなることは大切ですが、ただの馴れ合いになってはいけません。
ある程度の線引きは必要だと思います。
業務委託として常駐しているものの、仲の良い人や頼ってくれる人に対しては、つい良い顔をしたくて何でも引き受けてしまう。よくあることです。
しかし、業務外の仕事をしたとして、相手は喜ぶでしょうが、会社にとっては一銭にもならない案件です。
これではいけません。
「先生、そのご依頼は会社としては業務範囲外なのでお引き受けできません… 実は僕、○○社の人間なんですよ。 最近、業務報告で上の者から厳しく言われてしまいましてね、遅れがちな本来の業務に注力するよう指導が入ったばかりなんですよ…  そこでなんですけど先生、本来の業務であるシステム開発電子カルテ保守運用で、何かお手伝いできることはありませんか?ない?そしたらふだんご利用のFileMakerとか?例えばFileMakerに、患者IDを入れれば他の患者情報を自動取得させる機能とか、あったら便利だと思いませんか?…わかりました!やりましょう!こういう仕事はウチの会社の得意とするところですからね!もちろん、今回のような案件は、保守運用の範囲内なので無償です。もし新規導入したいシステムの構想があるようなら、まずはご相談ください!お見積りからさせていただきます!」

こういうトーク展開を目指そうと思います。

委託契約の範囲内の仕事か、そうでないか、しっかりとした線引きが必要です。
なおかつ、隙あらば新規案件をとってくるという営業活動も展開したいところです。


5年後、どうなっていたいか

ぼくら出向組は、ひとつの医療機関に4年から5年、常駐することになっています。
その後、別の医療機関に異動、または開発部隊に異動。
マネージャクラスになるには、だいたい2〜3箇所の異動を経てからになるでしょう。

おそらく、5年後の自分は、今とは別の医療機関に常駐しているのではないかと。
もしかしたら、まだ今の医療機関にとどまっているかも知れません。

どちらにせよ、まだ昇格はしていないでしょう。ただ、世代的には後輩を持っていてもおかしくない状況です。

ひとつの医療機関には、2人〜3人の社員が配属されます。
立場的にはリーダーを任されるかもしれません。
そうなった時に、やはり後輩を引っ張っていける力が必要になるでしょう。
しかし、僕は人付き合いが苦手で、会話が下手、声も小さいという三重苦を抱えています。
そして、そのせいで自分に自身が持てず、人を避けがちな面があります。
技術的な知識をつけるのはもちろんですが、やはり先の三重苦をいかに克服するかが優先になるでしょう。

5年後までに、
情報処理の資格を2つとる。
ひとりでプログラミングし、単独でも業務用アプリケーションが完成させられるようになる。
学会、研修会などで、最低でも2回は演者として発表する。
セミナーや講座に通い、コミュニケーションスキルを磨く。
といったところでしょうか。

では10年後は?

10年以上の経験を持つシステム部社員の進む先は様々です。

もしかしたら10年後もまだ医療機関に常駐しているかも知れません。実際、10年以上同じ客先に常駐しているスタッフもいます。
僕がこれまで会った他ベンダー医療系SEさん達も、40代後半や50代の人も少なくありませんでした。システム保守運用のSEというのは体力的には比較的楽なほうなので、年配でも大丈夫、ということでしょうか。

さすがに開発部隊に合流という可能性は低い気がしますが、開発案件の多さによってはあり得るかも。

本社勤務となって、客先常駐部隊の一部を任されるか。
はたまた、全く別の部署に異動になっているか。

このへんになるともう予想がつきません。


ただ、もう40代半ばになっている頃なので、社会人としては折り返し地点を過ぎました。
残り15年と考えるか、まだ15年あると考えるかで、働き方にも違いが出てくるでしょう。
出世組と非出世組と分かれている頃ですし。

定年まで残された15年で何をするか。
医療系SEとして定年まで全う出来れば良いのですが、さすがにこのご時世、難しいと思います。
いずれにせよ、今は日々の仕事や勉強を疎かにせず、地道に一歩一歩前に進んでいくことが大切ですね。



医療情報技師認定試験を受けてきました


f:id:tkt0314:20150825205713j:image

8月23日の日曜日、広島市内の会場で、医療情報技師の認定試験を受験してきました。


医療情報技師認定試験とは


Wikipediaにも書いてあるのですが、民間資格で、更新制、有効期限が5年間というのが特徴です。
5年間で、一定のポイントを貯めないと更新できない仕組みになっており、これがなかなかシビアなポイント数なのです。
学会に参加したり発表したりしないとポイントがもらえなかったり、医療機関に一定期間以上勤務している実績がないとポイントが稼げないなど、容易に貯められるポイントではありません。

僕と先輩は、2009年に合格し、資格取得できたのですが、ポイントを貯めきれず、2015年3月に失効となってしまいました。

会社からは、医療機関に常駐するSEとして、最低限取得しておくようにと言われているので、ここはどうしても再度受験しておく必要があります。

僕は医学医療の科目のみの受験だったため、午後の15時30分から16時30分の拘束で済みました。
先輩と、常駐先のシステム担当職員のYさんは、三科目すべて受験たったため、かなりしんどい思いをされていたようです。
朝9時から会場入りし、60分の情報処理、午後の最初は90分の医療情報システム、最後に60分の医学医療。これは確かに疲れる…。

ひとまず、医学医療の自己採点は6割くらいだったので、かなり微妙なラインかと思われます。
10 月の合否発表を待つしかないですね。

【C#】プログラミング勉強会

毎月1回、本社でプログラミング勉強会が開催されています。
普段は客先に常駐している他の職員達も、こういうときにだけ本社に集まります。
(まあ、ほんの2~3人ですが・・・)


今回はPaizaのWebサービスを使っての勉強。
上司のSマネージャが進行役です。

paiza.jp

今回挑戦した問題は、テキスト文のなかに、同じ文字列が何回出現したかをカウントし、その文字列と出現数を出力させる、というもの。

こうやって説明すると、簡単そうに見えるのですが、思いのほか難儀なプログラムでした…(僕のスキル的に)


みんなで個人PCを持ち寄り、パイザを見ながらプログラムと格闘していました。

配列の概念がよく分かっていないのですが、ListクラスとDictionaryクラスの使い分けが重要だと、Sマネージャから教わりました。
ざっくり言うと、
List = 線形探索法
Dictionary = ハッシュ探索法
ということで良いのかな?


結局、自力で全文書き上げることができず、Sマネージャの模範解答を書き写させてもらい、ようやく完成。

模範解答は、Sマネージャがpaiza.ioにアップしてくださいました。

//単語のカウント (paizaランク C 相当)
//https://paiza.jp/learning/word-count

using System;
using System.Collections.Generic;
using System.Linq;

public class Hello {
    public static void Main() {
        var words = new List<string>( Console.ReadLine().Split( ' ' ) );

        //LINQ不使用版
        Main1(words);
        
        Console.WriteLine( "-----" );
        
        //LINQ使用版
        Main2(words);
    }
    
    private static void Main1( List<string> words ) {
        var counts = new Dictionary<string, int>();
        var uniqWords = new List<string>();

        foreach( var word in words ) {
            if( counts.ContainsKey( word ) ) {
                counts[word] += 1;
            }
            else {
                counts.Add( word, 1 );
                uniqWords.Add( word );
            }
        }

        foreach( var word in uniqWords ) {
            Console.WriteLine( string.Format( "{0} {1}", word, counts[word] ) );
        }
    }

    private static void Main2( List<string> words ) {
        var q = from r in
                       from word in words
                       group word by word
                   select new {
                       name = r.Key,
                       count = r.Count()
                   };

        foreach( var v in q ) {
            Console.WriteLine( "{0} {1}", v.name, v.count );
        }

        Console.ReadKey();
    }
}

LINQを使う版と、使わない版とあります。

実際にパイザさんのサイトでCodeを提出するときは、Main1かMain2のどちらかをコメントアウトし、なおかつWritelineの記述行をコメントアウトしないと、合格になりませんでした。

勉強会は今回で二回目ですが、とても勉強になるので毎月開催してほしいですね。

SQL Server 2014への移行準備

今の常駐先病院で動いている文書管理システムというのがあって、今度それのサーバをリプレースする話があがっています。

WindowsServer2005、SQLServer2008 R2 というスペックなので、まだなんとか戦える状態でした。ただ、サーバのハードウェアはもう8年も昔のものなので、さすがに老朽化が否めません。
そろそろサーバのリプレースをしてほしいと客先のシステム担当課長から依頼があり、ようやくウチの会社も重い腰を上げたわけです。

とりあえず今回のリプレースによって、WindowsServer2012 R2、SQLServer2014が導入されることになりそうです。
上司から与えられた僕のミッションは、「SQLServer2014のExpress版で、文書管理システムが正しく動くか検証せよ」
という内容。
文書管理システムのデータベースには、6.3Gバイトなデータが格納されており、Express版でもじゅうぶん対応できる容量です。
(もしExpress版でうまく動けば、そのままリリースしようという魂胆)

院内で64Bitマシンを探す

上司からは、院内に転がっている64bitマシンを見つけ、それで検証をするように、とのお達しでした。
さすがに今の時代のサーバは64bitがデフォルト。32bitサーバではすぐにガタがきてしまいます。

さっそく、院内で余っている64ビットマシンを捜索。
まずシステム課内で探してみたものの、64bitマシンは一台もありません。
電子カルテ用のマシンはほとんど32bitで、インターネット用デスクトップマシンも32bitが基本です。
次に放射線治療科と画像診断部にも相談したのですが、意外にも64bitマシンは遊んでおらず、借りられる端末は皆無でした。
あのあたりの部門にはハイスペックマシンが集まるものとばかり思っていたのですが、意外と普通のスペックのマシンで不自由していないそうで…。

そうなるともうサーバ用の筐体しかないわけですが、あいにくすべて稼働中。さすがに稼働中のサーバで検証するのは危険すぎます。

仕方なく上司にメールで相談し、今回は32bitマシンで検証することになりました。


SQL Server 2014 Expressをインストール


f:id:tkt0314:20150723195931j:image

マイクロソフトのサイトから、32bit用のイントーラをダウンロード。
SQL Server Management Studioでの検証が必要だったので、それらが同梱されているアドバンスバージョンにしました。


SQL Server Management Studioで検証


f:id:tkt0314:20150723195644j:image

SQL Server Management Studioを起動。
SQLServer構成マネージャーで、名前付きパイプを有効に。
肝心のMDFファイルをコピーしていないことに気づく。
現行のサーバをリモート接続し、そちらのManagementStudioから、文書管理テーブルをデタッチ。
すぐにアタッチするつもりが、なぜかsa認証エラーを喰らい、再接続に10分かかってしまいました…。この間、院内から文書管理システムが使えないと問い合わせ4件…。
こういう影響範囲の大きい作業はやはり大事をとって5時以降や夜間にするべきでした。
デタッチ後に、検証端末へMDFファイルをコピーし、ManagementStudioでテーブルをアタッチ。
そのままSQLServer認証を試し、接続成功。


検証端末のSQLServerでのインプット・アウトプット確認


文書管理システムのテスト環境を用意。
iniファイルのサーバー接続先を、検証端末に書き換え。
文書管理システムの利用者マスタにて、テスト利用者新規作成。
そのテスト利用者にて、各アプリケーションにログイン、データ更新。
ManagementStudioで、対象レコードが正しく更新されていることを確認。

これで、ひととおりの検証はできたかなと。

あとは本番環境である64bitマシンでちゃんと動くかどうかですが…。
サーバ移行作業までしばらくあるので、もう少し準備が必要ですね。




「あなたってよく見るとドブネズミみたいな顔してるわね」から得たこと

土曜日、特に何を読みたいわけでもなく、なんとなしに近所の図書館に行ってみました。

昼も過ぎていたし、手軽に読みきれる文庫小説でも読もうかと、文庫本コーナーをウロウロしていたところ、この本に出会いました。

本のタイトルからして、いかにもラノベという感じですが、これはいわゆる萌え系ラノベではなく、同名のスマホゲームをノベライズ化した本なのです。

そのスマホゲームがこちら。

https://play.google.com/store/apps/details?id=jp.syuprodx.dobunezumi


実はまだプレイしたことはないのですが、このゲーム制作会社さん「SYUPRO-DX」
SYUPRO-DX - iPhone・Androidアプリ
の他の作品にハマっていた時期があり、この作品も前々から気になっていました。

内容は、ファミコン世代なら誰しも懐かしむドット絵RPGです。
ゲームシステムは良くは知らないのですが、通常の打撃攻撃のほかに、「じゅもん」という攻撃方法があり、これがとても特徴的なのです。
この「じゅもん」、「メラ」や「ホイミ」といった魔法ではなく、「にのうでさわらせて」「やればできる」などの日常会話で構成されています。
要するに、言葉というじゅもんを駆使し、敵を倒すことができるわけです。
しかし、だたの日常会話の応酬では、お互いにダメージはありません。
ダメージを与えられるのは、「相手が望む」言葉を放ったとき。さらにそこに「思いのつよさ」が加わると、ダメージは倍増します。(これは小説版の設定かも?)

小説版は、このゲームシステムをうまく再現し、主人公である「勇者」の成長物語を描き切っています。
王様から魔王を倒すよう命じられた勇者は、まずは酒場で仲間を集めるのですが、この酒場こそ実は作品の主舞台。
一緒に冒険をする仲間を集めるためには、相手を説得しなければなりません。その説得行為こそが、この作品のバトルシステムとなっているのです。
極度の対人恐怖症のため、「はい」か「いいえ」しか言えない勇者。
最初に話しかけた女僧侶に「なんかくさくない?」と言われ死亡してしまう勇者。
(勇者は、言われたくない言葉を言われるとダメージを喰らいます)
ですが、経験値やレベルがあがるごとに、どんどん新しい言葉を覚えていきます。最初は2階建だった酒場も、人を説得していくにつれ、なぜかどんどん階が増えていきます。
そして最後に、まさかの感動的な展開が・・・。

なんだかレビューっぽくなってしまいましたw まあ、そんなかんじの物語です。


このバトルシステム、現実の日常会話でも同じですね。
相手の望む答えが何かを考えず、自分が言いたいことをただ述べていては、相手の心には響きません。
その人の求めている答えや、聞いてほしい質問を、思いを込めて言うことで、はじめて人の心に響くというものです。

逆に、言われたくないことを言われることで、人の心は傷つき、嫌な記憶として残ってしまいます。
僕も、これまで言われた嫌な言葉は、いつまでも記憶に残っています。
ですが、逆に僕が何気なく言った一言が、相手を傷つけ、記憶に残させてしまったことだってあり得たはずです。
しかも僕自身はそんな一言なんて、とっくの昔に忘れているという・・・。

これだから会話は難しい。

普段の日常会話に注意を払うようにしないといけません。
それこそ、毎回の会話をこういうバトルと見立ててみると面白いかもしれませんね。