コードレビュー用データ置き場
スクリーンショットも中身のデータも仮想のものです。
8月のimoniCampのコードレビュー用のデータ置き場です。
カスタマイズの概要
「申請情報」に対して、「名簿」の「かな氏名」「生年月日」「携帯電話番号」で同定を行い、同一人物と思われるデータの「一致陽性者番号」に「名簿の陽性者番号」を代入する。
なお、同定の条件は「かな氏名と生年月日が一致」もしくは「かな氏名と携帯電話番号が一致」のいずれかの条件を満たすものとする。
絞り込んでも名簿は1万件以上、申請情報は数千件のデータ同士を照合する必要がある。
(今回は、それぞれのデータの事前絞り込みは割愛している)プラグインは利用できない。
(別の話題として、このプラグインなら解決できるっていう話はあっても良さそう)実際は、管理者のみが実行できるようにしていたが、今回は割愛。
どんなときに使われたのか?
陽性者のうち関係者が外出できず、ネット通販の利用も困難な者からの申請に基づき、支援物資を配送する。
なお、利用は陽性者に限り1回のみだが、「陽性者以外の申し込み」「複数回の申し込み」「別都市からの申し込み」なども一定数含まれるため、「申込みが適切か」を事前確認する必要がある。
申込の段階では陽性者は自身の陽性者番号を知らないため、陽性者を一意に識別できる情報を入力してもらうことは困難。
電話での聞き取りでは膨大な時間と回線が必要となるため、電話申請と電子申請の2本立てとした。
実際の事務の流れ
陽性者が発生すると、医療機関から、別システムもしくはFAXで「かな氏名」「生年月日」「携帯電話番号」を含む情報が送られてくる。
なお、「数字」については、打間違え・文字のカスレ等により一定のエラーが含まれる。また、携帯電話番号については、家族で同一番号が使い回されることもある。これらの情報をインポート&打ち込みにより「名簿」アプリに取り込み、「陽性者番号」を付番。
陽性者のうち、サービスを希望するものはフォームブリッジを通じて、「申請情報」に「かな氏名」「生年月日」「携帯電話番号」を含む申請情報を入力。
なお、対象者が膨大で1度のみのサービスであること、メール認証等の仕組みの理解が困難な方も含まれることから、「個人認証」は行っていない。
また、陽性者は医療機関に配布されたパンフレットを見て、陽性判明時に即座に申請可能なため、この時点では、自身の「陽性者番号」は知らない状態である。1日1回、スクリプトを実行(これが今回のスクリプトで、「一致していると思われるデータに陽性者番号を付加」して、それ以外のデータと区別できるようにしている)。
この作業により「該当すると思われるデータ」と「見当たらないデータ」に分ける。「該当すると思われるデータ」については、同姓同名同一生年月日等のレアケースがないか確認。また、複数回申し込みがないか手作業で確認。
「該当しないデータ」については、氏名の表記ゆれなどがないか手作業で確認。
5.6.で確認した、発送対象データについては、架電により発送情報の確認を実施し、最終的なエラーを排除した上で発送。
必要なファイル
スペーステンプレート
中には「名簿」「申請情報」の2つのアプリが入っています。
なお、「申請情報」には、Javascriptによるカスタマイズが最初から一つ入っています。
(この中に含まれるカスタマイズは「申請情報の中の全レコードの一致陽性者番号をクリアする」もので、今回のレビューの対象ではありません。)
CSVデータ
それぞれのアプリのテストデータです。インポートしてください。
データは、ChatGPTに作ってもらった仮のものです。
(いやぁ、ChatGPTさん、有能ですね)
コードレビュー用スクリプト1
「申請情報」にスクリプトとして追加してください。
REST APIで別アプリを参照しているため、個々の環境によってアプリ番号部分を修正する必要があります。また、拡張子のリネームが必要です。
(もし間違って実行してもエラーになるようにアプリ番号はnullと記載しています。)
こちらが、本来のレビューの対象です。
(「今の自分が作るならこうなる」という例です。)
コードレビュー用スクリプト2(おまけ)
「申請情報」にスクリプトとして追加してください。
REST APIで別アプリを参照しているため、個々の環境によってアプリ番号部分を修正する必要があります。また、拡張子のリネームが必要です。
(もし間違って実行してもエラーになるようにアプリ番号はnullと記載しています。)
こちらは、「昔の自分が頑張って作ったフランケンシュタインなコード」です。
(ただ、kintone REST API clientを使っていないコードなので、きれいなコードにしたり、危うい部分を直せば、ニッチですが需要があるかもしれません。あと、Javascriptをスパルタ&エラー&トライで理解するという意味では、すごく勉強にはなったと思います。)