Печать табличек на палаты и кровати. Поможем медсестрам сократить рутинную работу.
Вложений: 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, время: 23:24. |