Скриншот архива с проектом
.
Структура проекта
Задание
Разработать информационную систему учёта лекарственных препаратов медучреждения. в Широком смысле - целью данного исследования является создание функциональной, надёжной и масштабируемой информационной системы для автоматизации учёта лекарственных препаратов в медицинском учреждении.
Функционал программы
- добавление товаров - медпрепаратов - таблетки, капсулы и сиропы
- добавление производителей-поставщиков
- редактирование и удаление поставщиков
- редактирование и удаление медпрепаратов.
Содержание отчета к программе
СОДЕРЖАНИЕ
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ.. 4
1.1. Информационное обеспечение задачи. 4
1.2. Принципы учёта лекарственных препаратов в медицинских учреждениях. 6
1.3. Организация процесса учёта лекарственных препаратов в медицинских учреждениях. 8
1.4. Обзор существующих аналогов для учёта лекарственных препаратов в медицинских учреждениях. 15
2 АНАЛИЗ СРЕД И ЯЗЫКОВ КАК ИНСТРУМЕНТОВ РЕАЛИЗАЦИИ.. 18
2.1 Инструментальные средства для разработки веб-приложений. 18
2.2 PyCharm: среда разработки Python-приложений. 22
2.3 Сравнение фреймворков Flask и Django. 23
2.4. Требования к надежности, безопасности и техническим характеристикам. 25
3 ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРИЛОЖЕНИЯ НА ЯЗЫКЕ PYTHON ДЛЯ УЧЕТА МЕДИКАМЕНТОВ В МЕДУЧРЕЖДЕНИИ.. 28
3.1 Техническое задание на разработку приложения «ИС «Учет медикаментов в медучреждении». 28
3.2 Проектирование и разработка базы данных веб-приложения учета медикаментов в медицинском учреждении. 31
3.3 Разработка приложения учета медикаментов в медучреждении на языке Python с использованием фреймворка Django и стилей Bootstrap. 37
3.4 Инструкция пользователя. 65
3.5 Техника безопасности и производственная санитария на рабочем месте администратора и пользователя информационной системы по учёту лекарственных средств (препаратов) в медучреждении. 66
3.5.1 Общие требования техники безопасности и производственной санитарии. 66
3.5.2 Электробезопасность. 67
3.5.3 Производственная санитария. 68
ЗАКЛЮЧЕНИЕ. 69
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ. 71
ПРИЛОЖЕНИЯ. 76
Приложение А. Диаграмма базы данных. 76
Приложение Б. Код из файла миграций. 76
Приложение В. Код из файла product_list.html 78
Фрагмент программного кода
from django.shortcuts import render, redirect, get_object_or_404 from .forms import * from .models import Capsule, Tablet, Syrup, Supplier from django.contrib.auth.views import LoginView from django.contrib.auth.forms import UserCreationForm from django.contrib.contenttypes.models import ContentType from django.contrib.auth import login from django.contrib.auth import logout from django.urls import reverse_lazy from django.views.generic.edit import FormView class CustomLoginView(LoginView): template_name = 'login.html' fields = '__all__' redirect_authenticated_user = True def get_success_url(self): return reverse_lazy('index') class RegisterPage(FormView): template_name = 'register.html' form_class = UserCreationForm redirect_authenticated_user = True success_url = reverse_lazy('index') def form_valid(self, form): user = form.save() if user is not None: login(self.request, user) return super(RegisterPage, self).form_valid(form) def get(self, *args, **kwargs): if self.request.user.is_authenticated: return redirect('index') return super(RegisterPage, self).get(*args, **kwargs) def logout_view(request): logout(request) return redirect('index') def index(request): context = { 'title': 'Главная страница сайта' } return render(request, 'index.html', context) def supplier_list(request): return render(request, 'supplier_list.html') def display_suppliers(request): suppliers = Supplier.objects.all() context = { 'suppliers': suppliers, 'header': 'Поставщики' } return render(request, 'supplier_list.html', context) def add_supplier(request): if request.method == 'POST': form = SupplierForm(request.POST) if form.is_valid(): form.save() return redirect('supplier_list') else: form = SupplierForm() context = { 'form': form, 'header': 'Добавить поставщика' } return render(request, 'add_supplier.html', context) def supplier_detail(request, pk): supplier = get_object_or_404(Supplier, pk=pk) context = { 'supplier': supplier, } return render(request, 'supplier_detail.html', context) def delete_supplier(request, pk): suppliers = get_object_or_404(Supplier, pk=pk) suppliers.delete() return redirect("supplier_list") def product_list(request): return render(request, 'product_list.html') def display_capsules(request): items = Capsule.objects.all() context = { 'items': items, 'header': 'Капсулы' } return render(request, 'product_list.html', context) def display_tablets(request): items = Tablet.objects.all() context = { 'items': items, 'header': 'Таблетки' } return render(request, 'product_list.html', context) def display_syrups(request): items = Syrup.objects.all() context = { 'items': items, 'header': 'Сиропы' } return render(request, 'product_list.html', context) def add_product(request, cls, header): if request.method == "POST": form = cls(request.POST) if form.is_valid(): form.save() return redirect("product_list") else: form = cls() context = { 'form': form, 'header': header, } return render(request, 'add_new.html', context) def add_capsule(request): return add_product(request, CapsuleForm, 'Добавить капсулы') def add_tablet(request): return add_product(request, TabletForm, 'Добавить таблетки') def add_syrup(request): return add_product(request, SyrupForm, 'Добавить сиропы') def capsule_detail(request, pk): capsule = get_object_or_404(Capsule, pk=pk) return render(request, 'capsule_detail.html', {'item': capsule}) def tablet_detail(request, pk): tablet = get_object_or_404(Tablet, pk=pk) return render(request, 'tablet_detail.html', {'item': tablet}) def syrup_detail(request, pk): syrup = get_object_or_404(Syrup, pk=pk) return render(request, 'syrup_detail.html', {'item': syrup}) def edit_product(request, pk, model, cls, header): item = get_object_or_404(model, pk=pk) if request.method == "POST": form = cls(request.POST, instance=item) if form.is_valid(): form.save() return redirect("product_list") else: form = cls(instance=item) context = { 'form': form, 'header': header, } return render(request, 'edit_item.html', context) def edit_capsule(request, pk): return edit_product(request, pk, Capsule, CapsuleForm, 'Редактировать капсулы') def delete_capsule(request, pk): capsules = get_object_or_404(Capsule, pk=pk) capsules.delete() return redirect("product_list") def edit_tablet(request, pk): return edit_product(request, pk, Tablet, TabletForm, 'Редактировать таблетки') def delete_tablet(request, pk): tablets = get_object_or_404(Tablet, pk=pk) tablets.delete() return redirect("product_list") def edit_syrup(request, pk): return edit_product(request, pk, Syrup, SyrupForm, 'Редактировать сиропы') def delete_syrup(request, pk): syrups = get_object_or_404(Syrup, pk=pk) syrups.delete() return redirect("product_list")
Пояснения по запуску программы
- Установите Python
Скачайте и установите Python с официального сайта: https://www.python.org/downloads/ Во время установки поставьте галочку 'Add Python to PATH'.
- Установите среду разработки
- PyCharm Community Edition: https://www.jetbrains.com/pycharm/download/ - Visual Studio Code: https://code.visualstudio.com/ Если используете VSCode — установите расширение Python через Marketplace.
- Откройте проект в вашей среде разработки (PyCharm / VSCode)
- Создайте и активируйте виртуальное окружение (этот пунк не требуется его можно пропустить)
- Установите зависимости
Выполните команду: pip install -r requirements.txt Если файла requirements.txt нет — установите вручную: pip install django pip install django-cleanup pip install Pillow pip install psycopg2-binary # Для подключения к PostgreSQL
- Запустите сервер
Выполните команду: python manage.py runserver После запуска откройте браузер и перейдите по адресу: http://127.0.0.1:8000
-