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];
}

0 件のコメント:

コメントを投稿