mm-sdk
Advanced tools
+1
-1
| Metadata-Version: 2.1 | ||
| Name: mm-sdk | ||
| Version: 0.1.440 | ||
| Version: 0.1.450 | ||
| Summary: | ||
@@ -5,0 +5,0 @@ Author: dyus |
+1
-1
| [tool.poetry] | ||
| name = "mm-sdk" | ||
| version = "0.1.440" | ||
| version = "0.1.450" | ||
| description = "" | ||
@@ -5,0 +5,0 @@ authors = ["dyus <dyuuus@gmail.com>"] |
+190
-1
@@ -5,3 +5,3 @@ from datetime import date as datetime_date | ||
| from pydantic import BaseModel, Field, HttpUrl | ||
| from pydantic import BaseModel, Field, HttpUrl, root_validator | ||
@@ -33,2 +33,17 @@ from .client import Empty, SDKClient, SDKResponse | ||
| class GenderType(IntEnum): | ||
| any = 0 | ||
| male = 1 | ||
| female = 2 | ||
| class SyncStatus(str, Enum): | ||
| awaiting_signs = "awaiting_signs" # "Ждет подписания" | ||
| pending = "pending" # "Ожидает отправки" | ||
| in_process = "in_process" # "В процессе" | ||
| on_check = "on_check" # "На проверке" | ||
| succeeded = "succeeded" # "Отправлено" | ||
| failed = "failed" # "Ошибка" | ||
| class ActivityResponse(BaseModel): | ||
@@ -253,2 +268,117 @@ id: int = Field(description="id") | ||
| # СЭМД - ПЕРЕДАЧА В РЭМД | ||
| class SignCaseRequest(BaseModel): | ||
| sign: str = Field(description="Подпись в base64") | ||
| class DocumentInfo(BaseModel): | ||
| local_num: str = Field(description="Уникальный номер документа") | ||
| gigtest_num: Optional[str] = Field( | ||
| description="Уникальный номер документа в Гигтест" | ||
| ) | ||
| created_at: str = Field( | ||
| description="Дата и время создания СЭМДа (Y-m-d H:M:S)" | ||
| ) | ||
| kind: int = Field(description="Тип СЭМДа") | ||
| description: str = Field(description="Произвольное краткое описание") | ||
| content: str = Field(description="СЭМД в base64") | ||
| class OrganizationInfo(BaseModel): | ||
| oid: str = Field(description="Согласно ФРМО") | ||
| name: str = Field(description="Согласно ФРМО") | ||
| class PatientInfo(BaseModel): | ||
| firstname: str = Field(description="Имя пациента") | ||
| lastname: str = Field(description="Фамилия пациента") | ||
| patrname: str = Field(description="Отчество пациента") | ||
| birthdate: str = Field(description="Дата рождения (YYYY-MM-DD)") | ||
| gender: GenderType = Field(description="Пол") | ||
| snils: str = Field(description="СНИЛС") | ||
| class DoctorInfo(BaseModel): | ||
| firstname: str = Field(description="Имя врача") | ||
| lastname: str = Field(description="Фамилия врача") | ||
| patrname: str = Field(description="Отчество врача") | ||
| snils: str = Field(description="СНИЛС врача") | ||
| position_id: int = Field(description="ID должности согласно справочнику") | ||
| speciality_id: int = Field(description="ID специальности согласно справочнику") | ||
| class CreateCaseRequest(BaseModel): | ||
| document: DocumentInfo = Field(description="Информация о документе") | ||
| organization: OrganizationInfo = Field(description="Информация об организации") | ||
| patient: PatientInfo = Field(description="Информация о пациенте") | ||
| doctor: DoctorInfo = Field(description="Информация о враче") | ||
| class CaseError(BaseModel): | ||
| message: str = Field(description="Сообщение об ошибке") | ||
| description: str = Field(description="Описание ошибки") | ||
| class CaseResponse(BaseModel): | ||
| id: int = Field(description="ID случая") | ||
| status: SyncStatus = Field(description="Статус") | ||
| remd_regnumber: Optional[str] = Field(description="Номер ЭМД в РЭМД") | ||
| error: Optional[CaseError] = Field(description="Список ошибок при отправке СЭМДа") | ||
| # в доке и примере разный ключ, `status` вместо `sync_status` | ||
| @root_validator(pre=True) | ||
| def accept_status_or_sync_status(cls, values): | ||
| if 'status' not in values and 'sync_status' in values: | ||
| values['status'] = values['sync_status'] | ||
| return values | ||
| # СОЗДАНИЕ ПАЦИЕНТА В ИЭМК | ||
| class PatientIEMK(BaseModel): | ||
| id: int = Field(description="Внутренний идентификатор пациента") | ||
| first_name: str = Field(description="Имя пациента") | ||
| last_name: str = Field(description="Фамилия пациента") | ||
| patronymic: Optional[str] = Field(None, description="Отчество пациента") | ||
| birthday: str = Field(description="Дата рождения пациента (YYYY-MM-DD)") | ||
| gender: GenderType = Field(description="Пол пациента") | ||
| phone: Optional[str] = Field(None, description="Телефон пациента") | ||
| email: Optional[str] = Field(None, description="Email пациента") | ||
| class AddressInfo(BaseModel): | ||
| street_address_line: str = Field(description="Улица, дом и квартира") | ||
| class RegionInfo(BaseModel): | ||
| name: str = Field(description="Название региона") | ||
| class CountryInfo(BaseModel): | ||
| name: str = Field(description="Название страны") | ||
| class SnilsInfo(BaseModel): | ||
| number: str = Field(description="Номер СНИЛС") | ||
| class PassportInfo(BaseModel): | ||
| series: Optional[str] = Field(None, description="Серия паспорта") | ||
| number: Optional[str] = Field(None, description="Номер паспорта") | ||
| issue_org_name: Optional[str] = Field(None, description="Орган, выдавший паспорт") | ||
| class EditPatientRequest(BaseModel): | ||
| patient: PatientIEMK = Field(description="Информация о пациенте") | ||
| address: AddressInfo = Field(description="Адрес проживания пациента") | ||
| region: RegionInfo = Field(description="Регион проживания пациента") | ||
| country: CountryInfo = Field(description="Страна проживания пациента") | ||
| snils: SnilsInfo = Field(description="СНИЛС пациента") | ||
| passport: Optional[PassportInfo] = Field(description="Паспортные данные пациента") | ||
| organization: OrganizationInfo = Field(description="Медицинская организация, направившая пациента") | ||
| class EditPatientResponse(BaseModel): | ||
| message: str | ||
| class GigtestService: | ||
@@ -274,2 +404,6 @@ def __init__(self, client: SDKClient, url: HttpUrl): | ||
| self._additional_medicine_results_url = "/api/v2/medical-research-results" | ||
| # СЭМД | ||
| self._cases_url = "/api/v2/cases" | ||
| self._create_patient_url = "/api/v2/cases/create-patient" | ||
| self._update_patient_url = "/api/v2/cases/update-patient" | ||
@@ -525,3 +659,58 @@ # СПРАВОЧНИКИ | ||
| # СЭМД | ||
| def create_case( | ||
| self, query: CreateCaseRequest, token: str | ||
| ) -> SDKResponse[List[CaseResponse]]: | ||
| return self._client.post( | ||
| self._full_url(self._cases_url, token), | ||
| CaseResponse, | ||
| data=query.json(exclude_none=True), | ||
| timeout=LONG_GIGTEST_TIMEOUT, | ||
| headers={"Content-Type": "application/json"}, | ||
| ) | ||
| def sign_case( | ||
| self, case_id: int, query: SignCaseRequest, token: str | ||
| ) -> SDKResponse[List[CaseResponse]]: | ||
| return self._client.post( | ||
| self._full_url(f"{self._cases_url}/{case_id}/sign", token), | ||
| CaseResponse, | ||
| data=query.json(exclude_none=True), | ||
| timeout=LONG_GIGTEST_TIMEOUT, | ||
| headers={"Content-Type": "application/json"}, | ||
| ) | ||
| def get_case( | ||
| self, case_id: int, token: str | ||
| ) -> SDKResponse[List[CaseResponse]]: | ||
| return self._client.get( | ||
| self._full_url(f"{self._cases_url}/{case_id}", token), | ||
| CaseResponse, | ||
| timeout=LONG_GIGTEST_TIMEOUT, | ||
| ) | ||
| def create_patient( | ||
| self, query: EditPatientRequest, token: str | ||
| ) -> SDKResponse[EditPatientResponse]: | ||
| return self._client.post( | ||
| self._full_url(self._create_patient_url, token), | ||
| EditPatientResponse, | ||
| data=query.json(exclude_none=True), | ||
| timeout=LONG_GIGTEST_TIMEOUT, | ||
| headers={"Content-Type": "application/json"}, | ||
| ) | ||
| def update_patient( | ||
| self, query: EditPatientRequest, token: str | ||
| ) -> SDKResponse[EditPatientResponse]: | ||
| return self._client.post( | ||
| self._full_url(self._update_patient_url, token), | ||
| EditPatientResponse, | ||
| data=query.json(exclude_none=True), | ||
| timeout=LONG_GIGTEST_TIMEOUT, | ||
| headers={"Content-Type": "application/json"}, | ||
| ) | ||
| def _full_url(self, url, token): | ||
| return f"{self._url}{url}?access-token={token}" | ||
+1
-1
@@ -15,3 +15,3 @@ # -*- coding: utf-8 -*- | ||
| 'name': 'mm-sdk', | ||
| 'version': '0.1.440', | ||
| 'version': '0.1.450', | ||
| 'description': '', | ||
@@ -18,0 +18,0 @@ 'long_description': 'None', |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
139405
6.01%3789
4.01%