2017年9月30日土曜日

Composition 2017/9/30



// Compositionの更新のエラーを確認するためだけのプログラム
// 00_login.htmlに関数呼び出しボタンあり
function updateCompositionSample(){
    globalComposition = new Composition();
    globalComposition.id = '225207';
    globalComposition.status = "preliminary";
    globalComposition.date = new Date();
    globalComposition.type = new CodeableConcept(
        new Coding('http://master2016kumw1.blogspot.jp/','V0.1','MHR'),
        '母子健康手帳'
    );
    globalComposition.section = [];
    globalComposition.section.push(new Composition_Section('妊婦の健康状態等'));
    globalComposition.section.push(new Composition_Section('妊婦の職業と環境'));
    globalComposition.section.push(new Composition_Section('妊婦自身の記録'));
    globalComposition.section.push(new Composition_Section('妊娠中の経過'));
    globalComposition.section.push(new Composition_Section('検査の記録'));
    globalComposition.section.push(new Composition_Section('母親学級受講記録'));
    globalComposition.section.push(new Composition_Section('妊娠中と産後の歯の状態'));
    globalComposition.section.push(new Composition_Section('出産の状態'));
    globalComposition.section.push(new Composition_Section('出産後の母体の経過'));
    globalComposition.section.push(new Composition_Section('マタニティダイアリ'));
    globalComposition.section.push(new Composition_Section('母親自身の記録'));
    
    alert(JSON.stringify(globalComposition,null,' '));
    var url = 'http://fhirtest.uhn.ca/baseDstu2/Composition/225207?_format=json&_pretty=true';
    alert(url);
    alert('これから書き込もうとしているcomposition' + JSON.stringify(globalComposition));

    $.ajax({
        url: url,
        type: 'PUT',
        contentType: 'application/json',
        data: JSON.stringify(globalComposition),
        async: false        
    })
    .done(function(response) {
        alert('Compositionの更新に成功' + JSON.stringify(response,null,' '));
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert('Compositionの更新に失敗' + JSON.stringify(XMLHttpRequest,null,' '));
    });
}


//1.端末に保存されたcompositionIdのJSONを取得したものをJSON.parseしてcompositionId変数へ
//2.compositionIdでサーバから読み込み
//3.取得したJSONを書き換え
//4.Composition更新リクエスト
function setChildToComposition(patientId){
    var item = localStorage.getItem("compositionId");
    var obj = JSON.parse(item);
    alert('端末に保存されているcompositionIdは' + obj.compositionId +'です');
    
    var url = 'http://fhirtest.uhn.ca/baseDstu3/Composition/'+ obj.compositionId;
    alert('GETリクエスト(読み込み)を送信するURL=' + url);
    $.ajax({
        url: url,
        type: 'GET',
        data: {
            _pretty: true,
        },
        async: false        
    })
    .done(function(compositionObj) {
        alert('Compositionの読み込みに成功しました');
        alert('JSON.stringifyしたresponse(responseを代入したcompositionObjを表示⇒)' + JSON.stringify(compositionObj));
        compositionObj.subject = [
            {
                reference : 'Patient/' + patientId,
                display :  '児'
            }
        ]; 
        alert('編集後のcompositionObj' + JSON.stringify(compositionObj));
        updateComposition(obj.compositionId,compositionObj);
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert('Compositionの読み込みに失敗しました' + JSON.stringify(XMLHttpRequest,null,' '));
    })
}

function updateComposition(compositionId,compositionObj){
    var url = 'http://fhirtest.uhn.ca/baseDstu2/Composition/' + compositionId + '?_format=json&_pretty=true';
    alert(url);
    alert('これから書き込もうとしているcompositionObj' + JSON.stringify(compositionObj));

    $.ajax({
        url: url,
        type: 'PUT',
        contentType: 'application/json',
        data: JSON.stringify(compositionObj),
        async: false        
    })
    .done(function(response) {
        alert('編集したCompositionの更新に成功' + JSON.stringify(response,null,' '));
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert('編集したCompositionの更新に失敗' + JSON.stringify(XMLHttpRequest,null,' '));
    });
}

2017年9月22日金曜日

2017/9/22 Composition.subjectの更新

//1.端末に保存されたcompositionIdのJSONを取得したものをJSON.parseしてcompositionId変数へ
//2.compositionIdでサーバから読み込み
//3.取得したJSONを書き換え
//4.Composition更新リクエスト
function updateComposition(){
    var compositionId = localStorage.getItem("compositionId");
    alert('端末に保存されているcompositionIdは' + compositionId +'です');
    
    var url = 'http://fhirtest.uhn.ca/baseDstu3/Composition/'+ compositionId;
    alert('GETリクエスト(読み込み)を送信するURL=' + url);
    $.ajax({
        url: url,
        type: 'GET',
        data: {
            _pretty: true,
        }
    })
    .done(function(response) {
        alert('Compositionの読み込みに成功しました');
        updateCmposition = response;
        alert('JSON.stringifyしたresponse(responseを代入したupdateCompositionを表示⇒)' + JSON.stringify(updateComposition));
        updateComposition.subject = [
            {
                reference : 'Patient/',
                display :  '児'
            }
        ]; 
        updateComposition(updateComposition);
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert('Compositionの読み込みに失敗しました' + JSON.stringify(XMLHttpRequest,null,' '));
    });
    
}

function updateComposition(){
    var url = 'http://fhirtest.uhn.ca/baseDstu2/Composition/' + compositionId + '?_format=json&_pretty=true';
    alert(url);
    $.ajax({
        url: url,
        type: 'PUT',
        contentType: 'application/json',
        data: JSON.stringify(updateComposition)
    })
    .done(function() {
        alert('編集したCompositionの更新に成功');
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert('編集したCompositionの更新に失敗' + JSON.stringify(XMLHttpRequest,null,' '));
    });
}

function addChildInformation(){
    var patient = new Patient();
    patient.name = new HumanName();
    patient.name.use = "official";
    patient.name.text = $('#01-child-name').val();
    patient.birthDate = $('#01-child-birthDate').val();
    patient.gender = $('#01-child-gender').val();  

    var organization = new Organization();
    // 出生場所
    organization.name = $('#01-child-birthPlace').val();        
    // 市区町村長名
    organization.contact = [];
    organization.contact.push(
        {
            name : $('#01-child-Mayor').val()
        }
    );
    patient.identifier = [];
    patient.identifier[0] = new Identifier();
    patient.identifier[0].assigner = "Organization/"+ putOrganization(organization);
    patient.identifier[0].use = "official";
    patient.identifier[0].period = new Period();
    patient.identifier[0].period.start = $('#01-child-start').val();
    patient.identifier[0].assigner.display = "市区町村名";    
    patient.identifier[0].type = new CodeableConcept();
    patient.identifier[0].type.coding = [];
    patient.identifier[0].type.coding.push(
        {
            system : "0203",
            code : "BR"
        }
    );
    patient.identifier[0].type.text = "交付証明書";
    
    alert("patient" + JSON.stringify(patient,null,' '));
    
    putPatient(patient);
/*
    var url = 'http://fhirtest.uhn.ca/baseDstu3/Patient?_format=json&_pretty=true';
    $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(Patient)
    })
    .done(function(response) {
        alert('OK' + JSON.stringify(response));
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert('NG' + JSON.stringify(XMLHttpRequest,null,' '));
    });  
*/
}


function putOrganization(organization){
    var url = 'http://fhirtest.uhn.ca/baseDstu3/Organization?_format=json&_pretty=true';
    var result = $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(organization),
        async: false
    }).responseText;
    var response = JSON.parse(result);
    var diagnostics = response.issue[0].diagnostics;
    alert('diagnostics='+diagnostics);
    var id = /Organization\/(\d+)\//.exec(diagnostics);
    alert('id='+id[1]);
    return id[1];
}

function putPatient(patient){
    var url = 'http://fhirtest.uhn.ca/baseDstu3/patient?_format=json&_pretty=true';
    var result = $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(patient),
        async: false
    }).responseText;
    var response = JSON.parse(result);
    var diagnostics = response.issue[0].diagnostics;
    alert('diagnostics='+diagnostics);
    var id = /patient\/(\d+)\//.exec(diagnostics);
    alert('id='+id[1]);
    return id[1];
}

2017年9月19日火曜日

子供の情報(Patientリソース)



function addChildInformation(){
    var patient = new Patient();
    patient.name = new HumanName();
    patient.name.use = "official";
    patient.name.text = $('#01-child-name').value;
    patient.birthDate = $('#01-child-birthDate').value;
    patient.gender = $('#01-child-gender').value;  

    var organization = new Organization();
    // 出生場所
    organization.name = $('#01-child-birthPlace').value;        
    // 市区町村長名
    organization.contact = [];
    organization.contact.push(
        {
            name : $('#01-child-Mayor').value
        }
    );
    patient.identifier = [];
    patient.identifier[0] = new Identifier();
    patient.identifier[0].assigner = "Organization/"+ putOrganization(organization);
    patient.identifier[0].use = "official";
    patient.identifier[0].period = new Period();
    patient.identifier[0].period.start = $('#01-child-start').value;
    patient.identifier[0].assigner.display = "市区町村名";    
    patient.identifier[0].type = new CodeableConcept();
    patient.identifier[0].type.coding = [];
    patient.identifier[0].type.coding.push(
        {
            system : "0203",
            code : "BR"
        }
    );
    patient.identifier[0].type.text = "交付証明書";
    
    alert("patient" + JSON.stringify(patient,null,' '));
    
    
    var url = 'http://fhirtest.uhn.ca/baseDstu3/Patient?_format=json&_pretty=true';
    $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(Patient)
    })
    .done(function(response) {
        alert('OK' + JSON.stringify(response));
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert('NG' + JSON.stringify(XMLHttpRequest,null,' '));
    });
}

function putOrganization(organization){
    var url = 'http://fhirtest.uhn.ca/baseDstu3/Organization?_format=json&_pretty=true';
    var result = $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(organization),
        async: false
    }).responseText;
    var response = JSON.parse(result);
    var diagnostics = response.issue[0].diagnostics;
    alert('diagnostics='+diagnostics);
    var id = /Organization\/(\d+)\//.exec(diagnostics);
    alert('id='+id[1]);
    return id[1];
}





<---入力フォームのHTML--->

<ons-page id="01_Information">
    <ons-toolbar>
        <div class="left">
            <ons-back-button>
              Back
            </ons-back-button>
        </div>
        <div class="center">基本情報</div>
    </ons-toolbar>
    <ons-list>
        <ons-list-item> 
            <ons-row class="ssec-header">子どもの情報</ons-row>
            <div  class="ssec-body" style="display:none;">
                <ons-row>
                     <ons-col><center>名前</center></ons-col>
                     <ons-col><input type="text" id="01-child-name"></ons-col>
                </ons-row>
                <ons-row>
                    <ons-col><center>生年月日</center></ons-col>
                    <ons-col><input type="date" id="01-child-birthDate"></ons-col>
                </ons-row>
                <ons-row>
                    <ons-col><center>性別</center></ons-col>
                    <ons-col><input type="radio" id="01-child-gender" value="male">男
                    <input type="radio" id="01-child-gender" value="female">女</ons-col>
                </ons-row>
                <ons-row>
                     <ons-col><center>出生場所</center></ons-col>
                     <ons-col><input type="text" id="01-child-birthPlace"></ons-col>
                </ons-row>
                <ons-row>
                     <ons-col><center>出生届出済証明日</center></ons-col>
                     <ons-col><input type="date" id="01-child-start"></ons-col>
                </ons-row>
                <ons-row>
                     <ons-col><center>市区町村長名</center></ons-col>
                     <ons-col><input type="text" id="01-child-Mayor"></ons-col>
                </ons-row>
            </div>
        </ons-list-item>
    </ons-list>    
</ons-page>