Печать табличек на палаты и кровати. Поможем медсестрам сократить рутинную работу.
Вложений: 3
Приветствую вас, друзья программисты!
Я медбрат в 15ГКБ, которая до сих пор продолжает бороться с COVID19. И сейчас от сестер требуют, чтобы таблички на кровати и палаты были написаны на компьютере, а не от руки. Сам немного (чуть больше, чем никак) разбираюсь в программировании и вот родилась идея хоть как-то сократить нагрузку на моих коллег. Идея заключается в том, чтобы сестра сделала экспорт из ЕМИАС в ексель-файл, который загружается в скрипт с базой данных(JSON?) уже отпечатанных табличек. Далее необходимо сгенерировать список всех палат и пациентов с чекбоксами для печати. И скрипт формирует документ из табличек со всеми отмеченными пациентами и палатами(примеры табличек есть во вложении). Выбрал JS так, как интерпретатор есть на каждом компе и нет необходимости в правах администратора для установки Java или Python например. Из-за дикой усталости и апатии после работы не всегда получается заниматься этим проектом постоянно и думаю, без вашей помощи он так и останется в стадии зародыша.. буду благодарен, если поможете советом по конкретной теме или по архитектуре в целом. Сегодня разобрался с выгрузкой из екселя и формированием отсортированного по палатам массива. Вывел список с чекбоксами, но они должны быть перед строкой пациента, а не над ней.. display: inline-block не работает, float:left работает, но список получается каскадом.. Короче к вечеру уже голова деревянная, а завтра на смену и после нее я не знаю когда подступлюсь к этому коду без вашей поддержки.. Заранее благодарю, Матвей. |
Вот код index.html
<html>
<head>
<meta charset="utf-8" />
<script src="https://code.jquery.com/jquery-2.1.4.js" integrity="sha256-siFczlgw4jULnUICcdm9gjQPZkw/YPDqhQ9+nAOScE4=" crossorigin="anonymous"></script>
<script lang="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.7/xlsx.full.min.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div id="navbar"><span>SheetJS </span></div>
<div id="wrapper">
<input type="file" id="input-excel" />
</div>
<div id ="list_div"></div>
<script>
$('#input-excel').change(function(e){
var reader = new FileReader();
reader.readAsArrayBuffer(e.target.files[0]);
reader.onload = function(e) {
var data = new Uint8Array(reader.result);
var wb = XLSX.read(data,{type:'array'});
var sheet_name = wb.SheetNames[0];
var worksheet = wb.Sheets[sheet_name]
var patients = [];
var count_und = 0;
var index_cell = 6;
while(count_und < 2){
var adress_cell = 'A' + String(index_cell);
try {
patients.push({
'name' : worksheet['B' + String(index_cell)].v,
'history' : worksheet['C' + String(index_cell)].v,
'ward' : worksheet['D' + String(index_cell)].v,
'date_hosp' : worksheet['F' + String(index_cell)].v
});
count_und = 0;
} catch {
count_und += 1;
} finally {
index_cell += 1;
}
}
patients.sort(SortByWard);
var div = document.getElementById('list_div');
var wards = [];
for (var i = 0; i < patients.length; i++) {
var new_elem = document.createElement('div');
var ch_box_div = document.createElement('div');
ch_box_div.className = "checkbox_div"
div.appendChild(ch_box_div)
var ch_box = document.createElement('input');
ch_box.type = 'checkbox';
ch_box.name = "to_print"
ch_box.id = patients[i].history;
ch_box_div.appendChild(ch_box);
new_elem.innerText = patients[i].ward + " : " +
patients[i].name + " № истории: " +
patients[i].history + " Дата госпитализации: " +
patients[i].date_hosp;
div.appendChild(new_elem);
if (wards.indexOf(patients[i].ward) == -1) {
wards.push(patients[i].ward);
}
};
}
});
function SortByWard(a, b) {
return a.ward.toLowerCase() > b.ward.toLowerCase() ? 1 : -1;
};
</script>
</body>
</html>
styles.css
.checkbox_div {
display: inline-block;
}
|
Motyan613, вас не изнасилуют за публикацию персональных данных пациентов?
|
Цитата:
Даже отделения такого не существует. Адреса я стер вообще, ибо для дела не нужны.. |
Если данные в экселе почему не пользоваться стандартным слиянием из офиса?
https://youtu.be/JIVVuT04Je4?t=172 |
Вложений: 1
..
|
Цитата:
Идея моего скрипта в минимизации ручного труда. Должна быть база с пациентами, таблички которых уже отпечатаны и при сравнении с загруженной базой, должны по умолчанию отмечаться на печать только новые позиции. Как этот реализовать в офисе без макросов я не знаю. А макросы в офисе... Ну это такое... К тому же на больничных машинах стоит бесплатный урезаный офис. Необходимого функционала может там не быть. |
Цитата:
Спасибо, Nexus, тебе огромное! Теперь буду въезжать в эту красотищу) Но уже после смены.. |
| Часовой пояс GMT +3, время: 16:08. |