Добавил недостающие файлы

main
parent 00c8b5d800
commit a018d182f3

@ -11,9 +11,9 @@
- 05-10-2025 Добавил дизайн страниц дашборда поликлиники и терапевтического отделения
- 13-10-2025 Изменил программу конвертации (версия 0.1.0)
- Добавил в обработку столбцы от A до Z
- Запуск программы: tsa.exe <CONFIG>, где файл конфигурации сордержит всю
необходимую информацию по конвертации, включая входнойи выходной файл.
- Запуск программы: tsa.exe `<CONFIG>`, где файл конфигурации сордержит всю
необходимую информацию по конвертации, включая входной и выходной файлы.
- Не используемые столбцы в excel при конвертации можно просто не указывать или указать
не существующий столбец в таблице базы данных.
- Допускается указание для имен файлов относительные пути и использование русских букв.
- Допускается указание для имен файлов относительных путей и использование русских букв.
- Для примера см. Стационар.yaml - корректность распределения столбцов не проверял!

@ -0,0 +1,13 @@
{
"lockfileVersion": 1,
"workspaces": {
"": {
"dependencies": {
"pocketbase": "^0.26.2",
},
},
},
"packages": {
"pocketbase": ["pocketbase@0.26.2", "", {}, "sha512-WA8EOBc3QnSJh8rJ3iYoi9DmmPOMFIgVfAmIGux7wwruUEIzXgvrO4u0W2htfQjGIcyezJkdZOy5Xmh7SxAftw=="],
}
}

23816
database/types.d.ts vendored

File diff suppressed because it is too large Load Diff

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PocketBase Test</title>
<script src="https://unpkg.com/pocketbase@latest/dist/pocketbase.umd.js"></script>
</head>
<body>
<h1>PocketBase Client Test</h1>
<div id="test"></div>
<script>
(async function() {
// Укажите адрес вашего PocketBase сервера (стандартно http://127.0.0.1:8090)
const pb = new PocketBase('http://127.0.0.1:8090');
//const userData = await pb.collection('rmias').authWithPassword('tad17@list.ru', '0987654321');
const result = await pb.collection('rmias').getList(1, 10)
console.log("result:", result)
const ul = document.createElement('ul');
const container = document.getElementById('test');
for (const r of result.items) {
const li = document.createElement('li');
li.innerHTML = r.patientName
ul.appendChild(li);
}
container.appendChild(ul);
})();
</script>
</body>
</html>

Binary file not shown.

File diff suppressed because it is too large Load Diff

@ -0,0 +1,32 @@
inputFile: ../.docs/Дневной стационар 07-25дс.xlsx
outputFile: Стационар.json
sheet: Лист1
startRow: 2
columns:
B: caseId # Ид случая
C: ticketNo # Нонер талона
D: patientName # ФИО пациента
E: birthDate # Дата рождения
F: policyNumber # Номер полиса
G: volumeCode # Код объема
H: finVolumeCode # Код объема_фин
I: visitCode # Код посещения
J: amount # Сумма
K: diagnosCode # Код диагноза
L: department # Отделение
M: profile # Профиль
N: unit # Подразделение
O: doctor # Врач
P: specialty # Специальность
Q: visit # Посещение
R: yetCode # УЕТ
S: payment # Оплата
T: smo # СМО
U: prev # Подавался ранее
V: oplata # Стационар - Оплата
W: смо # Стационар - СМО
X: КСГ # Стационар - КСГ
Y: КПГ # Стационар - КПГ
Z: ранее # Стационар - Подавался ранее

@ -0,0 +1,70 @@
import PocketBase from "pocketbase";
const pb = new PocketBase("http://localhost:8090");
await pb.collection("_superusers").authWithPassword('tad17@list.ru', '0987654321');
async function appendItem(item) {
//console.log("item:", item)
try {
const p = await pb.collection("rmias").create(item)
//console.log("ответ PocketBase:", p)
//console.log("запись:", p.id, p.patientName);
} catch (err) {
console.error('Ошибка:', err.message);
process.exit(1);
}
}
async function importJSON() {
const items = await Bun.file("excel/tsa.json").json();
console.log(`Прочитано: ${items.length} записей`)
let appended = 0
for (const item of items) {
await appendItem(item)
appended++
}
console.log(`Загружено: ${appended} записей`)
}
async function clearCollection(name) {
let totalDeleted = 0;
let batch = 50; // размер пачки
let page = 1;
while (true) {
// получаем страницу записей
const records = await pb.collection(name).getList(page, batch, { fields: "id" });
if (records.items.length === 0) break;
for (const rec of records.items) {
await pb.collection(name).delete(rec.id);
totalDeleted++;
//process.stdout.write(`\rУдалено: ${totalDeleted}`);
}
// после удаления текущей страницы снова начинаем с 1,
// потому что нумерация сдвигается
page = 1;
}
console.log(`\nКоллекция "${name}" очищена. Всего удалено: ${totalDeleted}`);
}
async function test() {
const resultList = await pb.collection('rmias').getList(1, 50, {
filter: 'patientName ~ "К"',
});
console.log(resultList)
const record = await pb.collection('rmias').getOne('sp3ircowx2ckg63');
console.log(record)
}
//test()
await clearCollection("rmias");
await importJSON()
console.log("Готово")

@ -0,0 +1,5 @@
{
"dependencies": {
"pocketbase": "^0.26.2"
}
}

Binary file not shown.

Binary file not shown.

23816
pb_data/types.d.ts vendored

File diff suppressed because it is too large Load Diff

@ -0,0 +1,28 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((app) => {
const collection = app.findCollectionByNameOrId("pbc_3050725192")
// update collection data
unmarshal({
"createRule": "",
"deleteRule": "",
"listRule": "",
"updateRule": "",
"viewRule": ""
}, collection)
return app.save(collection)
}, (app) => {
const collection = app.findCollectionByNameOrId("pbc_3050725192")
// update collection data
unmarshal({
"createRule": null,
"deleteRule": null,
"listRule": null,
"updateRule": null,
"viewRule": null
}, collection)
return app.save(collection)
})

@ -0,0 +1,64 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((app) => {
const collection = new Collection({
"createRule": null,
"deleteRule": null,
"fields": [
{
"autogeneratePattern": "",
"hidden": false,
"id": "text3208210256",
"max": 0,
"min": 0,
"name": "id",
"pattern": "^[a-z0-9]+$",
"presentable": false,
"primaryKey": true,
"required": true,
"system": true,
"type": "text"
},
{
"autogeneratePattern": "",
"hidden": false,
"id": "_clone_5r0b",
"max": 0,
"min": 0,
"name": "doctor",
"pattern": "",
"presentable": false,
"primaryKey": false,
"required": false,
"system": false,
"type": "text"
},
{
"hidden": false,
"id": "number432430951",
"max": null,
"min": null,
"name": "cnt",
"onlyInt": false,
"presentable": false,
"required": false,
"system": false,
"type": "number"
}
],
"id": "pbc_2097892121",
"indexes": [],
"listRule": null,
"name": "bydoctor",
"system": false,
"type": "view",
"updateRule": null,
"viewQuery": "SELECT \n (ROW_NUMBER() OVER()) as id, \n doctor, count(doctor) as cnt\nfrom rmias\n\n",
"viewRule": null
});
return app.save(collection);
}, (app) => {
const collection = app.findCollectionByNameOrId("pbc_2097892121");
return app.delete(collection);
})

@ -0,0 +1,58 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((app) => {
const collection = app.findCollectionByNameOrId("pbc_2097892121")
// update collection data
unmarshal({
"viewQuery": "SELECT \n (ROW_NUMBER() OVER()) as id, \n doctor, count(doctor) as cnt\nfrom rmias\ngroup by doctor\n\n"
}, collection)
// remove field
collection.fields.removeById("_clone_5r0b")
// add field
collection.fields.addAt(1, new Field({
"autogeneratePattern": "",
"hidden": false,
"id": "_clone_hx2W",
"max": 0,
"min": 0,
"name": "doctor",
"pattern": "",
"presentable": false,
"primaryKey": false,
"required": false,
"system": false,
"type": "text"
}))
return app.save(collection)
}, (app) => {
const collection = app.findCollectionByNameOrId("pbc_2097892121")
// update collection data
unmarshal({
"viewQuery": "SELECT \n (ROW_NUMBER() OVER()) as id, \n doctor, count(doctor) as cnt\nfrom rmias\n\n"
}, collection)
// add field
collection.fields.addAt(1, new Field({
"autogeneratePattern": "",
"hidden": false,
"id": "_clone_5r0b",
"max": 0,
"min": 0,
"name": "doctor",
"pattern": "",
"presentable": false,
"primaryKey": false,
"required": false,
"system": false,
"type": "text"
}))
// remove field
collection.fields.removeById("_clone_hx2W")
return app.save(collection)
})
Loading…
Cancel
Save