Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lab's portal #2

Merged
merged 1 commit into from
Apr 8, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
284 changes: 284 additions & 0 deletions app/src/laboratory.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
<!DOCTYPE html>
<html lang="en">

<head>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">

<title>MerChain</title>

<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link rel="icon" type="image/png" href="/favicon.ico"/>
<!-- <script src="js/bundle.js"></script> -->
<!-- Custom CSS -->
<style>

.panel{
margin-bottom: 60px;
}
.navbar{
margin-bottom: 70px;
}
.panel-heading{
margin-bottom: 20px;
}
.nav-pills > li > a{
padding: 0;
padding-right: 10px;
}
.nav-pills > li > a:hover{
background-color: initial;
}
.nav-pills > li.active > a{
color: #23527c;
background-color: initial;
}
.nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus{
color: #23527c;
background-color: inherit;
}
</style>


</head>

<body>

<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-static-top" role="navigation">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">MerChain</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="./index.html">Logout</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>

<div class="container">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="text-center">Laboratory Information</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-sm-offset-1 col-sm-10">
<table class="table">
<tr>
<th>Name:</th>
<td id="name"></td>
</tr>
</table>
</div>
</div>

</div>
</div>


<div class="panel panel-default">
<div class="panel-heading">
<h3 class="text-center">Accessible EMRs</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="alert alert-danger col-sm-8 col-sm-offset-2">
<strong>Notice!</strong> Could not access records. Access might have been revoked. Contact admin or patient.
</div>
</div>
<div class="row">
<div class="col-sm-offset-1 col-sm-10">
<table id="viewPatient" class="table table-hover">
<tr>
<th>Patient</th>
<th class="publicKeyPatient">Public Key</th>
<th>Action</th>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>

<script src="js/jquery.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
<script src="js/app.js"></script>
<script src="/js/web3.min.js"></script>
<script src="https://unpkg.com/ipfs-api/dist/index.min.js" crossorigin="anonymous"></script>
<script>
var ipfs = window.IpfsApi('localhost', '5001')
console.log("hi from laboratory.html");
const Buffer = window.IpfsApi().Buffer;

var url_string = window.location.href;
var url = new URL(url_string);
var key ;
var labName = "";

toggleRecordsButton = 0;

$(window).load(function() {
connect();
$(".alert-danger").hide();

key = web3.currentProvider.selectedAddress;
key = key.toLocaleLowerCase();

var a = 0;

contractInstance.get_laboratory.call(key, {gas: 1000000},function(error, result){
if(!error){
a = result;
labName = a;
$("#name").html(a);
}
else
console.error(error);
});
var patientAddressList = 0;

contractInstance.get_accessed_patientlist_for_laboratory(key, {gas: 1000000}, function(error, result){
if(!error){
patientAddressList = result;
console.log(result);

patientAddressList.forEach(function(patientAddress, index){
contractInstance.get_patient.call(patientAddress, {gas: 1000000}, function(error, result){
var table = document.getElementById("viewPatient");
if(!error) {
[a,b] = result;
console.log(a);

var row = table.insertRow(index+1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell2.className = "publicKeyPatient";
cell1.innerHTML = a;
cell2.innerHTML = patientAddress;
cell3.innerHTML = '<input class="btn btn-success" onclick="showRecords(this)" id="viewRecordsButton" type="button" value="View records"></input>';


}
else
console.error(error);
})
})
}
else
console.error(error);
});

});

function showRecords(element){

var table = document.getElementById("viewPatient");
var index = element.parentNode.parentNode.rowIndex;
var patientAddress = table.rows[index].cells[1].innerHTML;

if (toggleRecordsButton%2 == 0){

var patientRecord = ""

contractInstance.get_hash(patientAddress, {gas: 1000000}, function(error, result){
if(!error){

$.get("http://localhost:8080/ipfs/"+result, function(data){
patientRecord = data;

content = `<div class="tab-content">
<div id="view${patientAddress}">
<div class="row">
<div class="col-sm-12">
<pre style="margin: 20px 0;" id="records${patientAddress}">${patientRecord}</pre>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="row">
<div class="form-group col-sm-10">
<div class="row">
<div class="col-sm-2">
<label class="control-label" for="details">Details:</label>
</div>

</div>
</div>

</div>
</div>
</div>
</div>
</div>`

var row1 = table.insertRow(index+1);
var cell1 = row1.insertCell(0);
cell1.colSpan = 3;

cell1.innerHTML=content;

})


}else{
console.log(error);
}
})

toggleRecordsButton +=1
element.value = "Hide Records";
element.className = "btn btn-danger"

} else {
row = table.rows[index + 1];
$(row).hide();
toggleRecordsButton -= 1;
element.value = "View Records";
element.className = "btn btn-success"
}

}

function getDateTime(){
function AddZero(num) {
return (num >= 0 && num < 10) ? "0" + num : num + "";
}
var now = new Date();
var strDateTime = [[AddZero(now.getDate()),
AddZero(now.getMonth() + 1),
now.getFullYear()].join("/"),
[AddZero(now.getHours()),
AddZero(now.getMinutes())].join(":"),
now.getHours() >= 12 ? "PM" : "AM"].join(" ");
return strDateTime;
}

</script>

</body>

</html>