2021年1月26日火曜日

2021/01/26

 4限は、電子お薬手帳アプリに関するネット記事と、「電子化お薬手帳の使用実態と患者の意識調査」という論文を読みました。電子お薬手帳が注目されるようになったきっかけは、なんと東日本大震災なんだそうです。現在提供されているお薬手帳アプリはたくさんあり、中には様々な機能が搭載されていて非常に便利そうだと思いました。2016年時点では電子お薬手帳の普及は低いようですが、優秀なお薬手帳も次々と出ているため、これからますます需要が高まるのではないでしょうか。

これからシステムを作る上で、どんな機能が必要なのか、しっかり考えていきたいと思います。


 5限は、前回の続きとして、文字列の結合を行う+演算子や改行「¥n」を使用して文字を出力する方法を試しました。

また、テキストメッセージ生成関数を作成して、文字を連結しながら送信するメッセージを作っていく演習も行いました。ここでポイントなのは「.push」です。宣言した配列にどんどん追加していくことができます。これは非常に重要ですので、覚えておきましょう!!

 

 1月のゼミも本日で終了です。また3月から頑張っていきましょう! 


完成したGASのプログラム

【プログラム1】

LINE DevelopersのWebhookに設定するプログラムは以下のとおり。これはLINE公式アカウントアプリで利用者が送信するメッセージに対応して行う処理を記述するプログラムです。メッセージはdoPost関数に送信されます。doPost関数の引数eはWebhookイベントオブジェクトで、詳細はLINE Developersのドキュメント(Webhookイベントオブジェクト)に書いてあります。

function doPost(e) {
  var replyToken= JSON.parse(e.postData.contents).events[0].replyToken;
  if (typeof replyToken === 'undefined') {
    return;
  }

  var url = 'https://api.line.me/v2/bot/message/reply';
  var channelToken = 'kXoJ1O・・・・・・・・・・・・・・1cDnyilFU=';

  var input = JSON.parse(e.postData.contents).events[0].message;
  var source = JSON.parse(e.postData.contents).events[0].source;

  var messages = [];
  
  if(input.type == 'text') {
    if(input.text.match('ありがとう')) {
      messages.push(createTextMessage('どういたしまして'));
    }else if(input.text.match(/w34\d{5}/)){
      var person = getPersonalData(input.text);
      messages.push(
        createTextMessage('名前:' + person.name +
                '\n性別:' + person.attribute.gender +
                '\n生年月日:' + person.attribute.birth
        )
      );
    }else if(input.text.match('クリスマスの予定は?')){
      messages.push(createTextMessage('まだ未定です'));
    }else if(input.text.match('わたしは誰?')){
      messages.push(createTextMessage(source.userId));
    }else{
      messages.push(createTextMessage(input.text + 'ですか?'));
    }
  }

  UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + channelToken,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': messages,
    }),
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

function createTextMessage(text){
  var message = {
    'type':'text',
    'text': text,
  };
  return message;
}

function getPersonalData(id){
  var url = "https://script.google.com/macros/s/AKfycb・・・NebFh-4Q/exec";
  var response = UrlFetchApp.fetch(url + '?id=' + id);
  var content = JSON.parse(response.getContentText());
  return content;
}

function testgetPersonalData(){
  var person = getPersonalData('w3418000');
  Logger.log(JSON.stringify(person,null,''));
}

【プログラム2】

上記プログラム中のgetPersonalData関数内で呼び出す(fetchする)WebAPIのプログラムは以下のとおり。このプログラムはid=w3418000といったクエリストリングス(検索文字列)をWebAPIのURLにつけて呼び出すと、該当する個人データをJSONフォーマットで返すWebサービスを実現するものです。GETメソッドでWebAPIを呼び出すとdoGet関数が呼ばれ、クエリストリング中のキーidに対する値(e.parameter.id)を使って該当する個人データを検索して返します。

var data = [
  {
    "id":"w3418000",
    "name":"〇× △■▽",
    "attribute":{
      "gender":"男",
      "phone_number":"086-999-0000",
      "birth":"1999/12/31",
      "blood_type":"O"

    },
    "certification":[
      "ITパスポート試験",
      "医療情報技師能力認定試験",
      "診療報酬請求事務能力認定試験",
      "医科医療事務管理士技能認定試験",
      "普通自動車第一種運転免許"
    ],
    "hobby":[
      "クイズ",
      "イラスト作成",
      "スポーツ鑑賞"
    ],
    "club":[
      "登山部"
    ]
  },
  {
      "id":"w3418111",
      "name":"▽□ ●×",
      "attribute":{
        "gender":"女",
        "phone_number":"123-456-7890",
        "birth":"1999/01/01",
        "blood_type":"A"
      },
      "certification":[
        "医療情報基礎知識検定",
      ],
      "hobby":[
        "映画を観ること",
        "食べること"
      ],
      "club":[
        "ラクロス部"
      ],
      "favoritefood":[
        "うどん",
        "枝豆"
      ]
  },
  {
    "id":"w3418777",
    "name":"□▽ ×△",
    "attribute":{
        "gender":"男",
        "phone_namber":"090-5678-4321",
        "birth":"1999/05/05",
        "blood_type":"A",
    },
    "certification":[
      "医療情報技師能力検定試験",
      "診療報酬請求事務能力認定試験",
      "医科医療事務管理士技能認定試験",
      "基礎知識検定",
      "普通自動車第一種運転免許",
    ],
    "hobby":[
      "美術鑑賞",
      "野球観戦",
      "料理番組の録画",
      "株式投資",
    ],
    "club":[
      "卓球部",
    ]
  },
  {
    "id":"w3418999",
    "name":"●□ △×▼",
    "attribute":{
      "gender":"女",
      "phone_number":"080-888-5555",
      "birth":"2000/03/03",
      "blood_type":"O",
    },
    "certification":[
      "実用数学技能検定準二級",
      "普通自動車第一種運転免許",
    ],
    "hobby":[
      "犬とダンスすること",
      "楽しいことを想像する",
      "走る"
    ]
  }
]

/** idを指定して個人データを取得する関数 */
function getPersonByld(id){
  var person = null;

  for(var i=0; i<data.length; i++){
    if(id == data[i].id){
      person = data[i];
      break;
    }
  }
  return person;
}

/** getPersonByldをテストする関数 */
function testGetPersonByld(){
  var person = getPersonByld('w3418000');
  Logger.log(JSON.stringify(person,null,''));
}

function doGet(e){
  var parm = e.parameter;
  var person = getPersonByld(parm.id);
  return ContentService.createTextOutput(JSON.stringify(person)).setMimeType(ContentService.MimeType.JSON);
}

2021年1月19日火曜日

2021/01/19

4限は研究テーマ(おくすり見守りシステム)を決めました。


 5限は、前回の続きで、正規表現とfetchについて学びました。

学籍番号を入力したら、その個人データを出力するプログラムを作成しました。

重要なポイントは、”¥”はバックスラッシュで表現されることです。


urlが変わる可能性があるので気を付けましょう!!


今日のうちの夕飯はポトフです。とても楽しみです。


来週も頑張りましょう!!


2021年1月12日火曜日

2020/10/12

     4限は「おかやま医療情報ネット」について意見交換をしました。このサイトでは医療機関や歯医者、薬局を探すことができます。主な機能としては、条件を指定して医療機関を探したり、毎月の当番医を見ることができました。どの医療機関に行けばいいか迷ったとき、非常に便利で活用しやすいと感じました。岡山県だけでなく、兵庫県や鳥取県などもデザインは異なりますが、ほとんど同じような機能がありました。

    5限は前回の演習問題をの解説をしていただきました。

みんな少しずつですが理解していっているようです。


2021年1月5日火曜日

2021/01/05

 明けましておめでとうございます。今年も頑張りましょう!!

年が明けて最初のゼミでした。


4限は「乳幼児期における適切な時期の予防接種行動に関連した個人レベルおよび地域レベル要因の検討」という論文を読みました。目的・方法・結果・結論から、何のためにこの研究がすすめられたのか、何が分かったのかを話し合いました。かかりつけ医の必要性、出生順位、母親の年齢などが、予防接種を適切な時期に受けれていない要因だということがわかりました。


5限は、前回に引き続き演習問題をしました。データを配列にするようなプログラムを作成しました。var data =[{メンバー1},{メンバー2}, ...]とするとできます。

私は、カンマ( , )を忘れていたので最初にエラーが出てしまいました(泣)


来週も寒さにも負けず、睡魔にも負けず頑張りましょう!!!