Справка ФНС для всех пациентов

This commit is contained in:
2025-03-31 11:56:50 +05:00
parent e6ecfc6994
commit e6ca354ba4
4 changed files with 1710 additions and 4 deletions
+347 -2
View File
@@ -217,6 +217,39 @@ def send_registration_request():
@webApp.route('/request_patient', methods=['POST'])
def request_patient_information():
try:
# return {
# "fio": "Чистогов Илья Дмитриевич",
# "formatted_birthdate": "24.09.2003",
# "js_formatted_passport_date": "2016-09-25",
# "js_formatted_birthdate": "2003-09-24",
# "pct_doc_ser": "1234",
# "pct_doc_nom": "123456",
# "pct_doc_org_kod": "590-003",
# "pct_doc_org_name": "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ",
# "pct_email": "1@1.ru",
# "pct_inn": "123123123123",
# "taxpayer_status_zapros": "Отец",
# "pct_doc_ind": "1",
# "server_data": {
# "pct_birthday": "2003-09-24T00:00:00.000Z",
# "pct_doc_date": "",
# "pct_doc_ind": "",
# "pct_doc_nom": "",
# "pct_doc_org_kod": "",
# "pct_doc_org_name": "",
# "pct_doc_ser": "",
# "pct_doc_type": "",
# "pct_email": "",
# "pct_first_name": "Илья",
# "pct_inn": "",
# "pct_last_name": "Чистогов",
# "pct_second_name": "Дмитриевич",
# "result": "OK",
# "status_code": 200
# },
# "success": True,
# "user_id": "766945900"
# }
data = request.get_json()
@@ -247,7 +280,7 @@ def request_patient_information():
}
print(payload)
headers = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
url = "http://192.168.1.10:8081/AppZaprSvedPac"
url = "http://192.168.1.10:8080/AppZaprSvedPac"
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
@@ -375,7 +408,7 @@ def sending_patient_data():
#Успешный ответ
HEADER1 = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
try:
response = requests.post("http://192.168.1.10:8081/AppSaveSvedPac", headers=HEADER1, json=data1, timeout=5)
response = requests.post("http://192.168.1.10:8080/AppSaveSvedPac", headers=HEADER1, json=data1, timeout=5)
print("Ответ сервера:", response.text) # вдруг сервер всё же что-то вернёт
if response.status_code == 200:
return jsonify({'success': True})
@@ -396,6 +429,291 @@ def sending_patient_data():
@webApp.route('/request_patient2', methods=['POST'])
def request_patient2():
try:
# return {
# "fio": "Чистогов Илья Дмитриевич",
# "formatted_birthdate": "24.09.2003",
# "js_formatted_passport_date": "2016-09-25",
# "js_formatted_birthdate": "2003-09-24",
# "pct_doc_ser": "1234",
# "pct_doc_nom": "123456",
# "pct_doc_org_kod": "590-003",
# "pct_doc_org_name": "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ",
# "pct_email": "1@1.ru",
# "pct_inn": "123123123123",
# "taxpayer_status_zapros": "Отец",
# "pct_doc_ind": "1",
# "server_data": {
# "pct_birthday": "2003-09-24T00:00:00.000Z",
# "pct_doc_date": "",
# "pct_doc_ind": "",
# "pct_doc_nom": "",
# "pct_doc_org_kod": "",
# "pct_doc_org_name": "",
# "pct_doc_ser": "",
# "pct_doc_type": "",
# "pct_email": "",
# "pct_first_name": "Илья",
# "pct_inn": "",
# "pct_last_name": "Чистогов",
# "pct_second_name": "Дмитриевич",
# "result": "OK",
# "status_code": 200
# },
# "success": True,
# "user_id": "766945900"
# }
data = request.get_json()
print(data)
user_id = data.get('user_id')
taxpayer_status_zapros = data.get('taxpayer_status')
patient_fio = data.get('patient_fio')
sheet = authorize_google().open("Пациенты клиники").sheet1
records = sheet.get_all_values()
# Получаем список всех людей с таким user_id
birthday_users = [datetime.strptime(row[2], "%Y-%m-%d").strftime("%Y-%m-%dT00:00:00.000Z") for row in records[1:] if row[0] == patient_fio]
print(birthday_users)
payload = {
"telegram_id": int(user_id),
"first_name": patient_fio.split()[1] if len(patient_fio.split()) > 1 else "",
"second_name": patient_fio.split()[2] if len(patient_fio.split()) > 2 else "",
"last_name": patient_fio.split()[0],
"pac_poluchat": "False",
"poluchat_status": data.get('taxpayer_status'),
"birthday": birthday_users[0] if birthday_users else None
}
print(payload)
headers = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
url = "http://192.168.1.10:8081/AppZaprSvedPac"
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
print("Ответ:", response.text)
result = response.json
print(result)
try:
result = response.json()
except:
result = {}
js_formatted_birthdate = (
datetime.strptime(result.get("pct_birthday", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d")
if result.get("pct_birthday") else "")
js_formatted_birthdate_plc = (
datetime.strptime(result.get("plc_birthday", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d")
if result.get("plc_birthday") else "")
js_formatted_passport_date = (
datetime.strptime(result.get("pct_doc_date", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d")
if result.get("pct_doc_date") else "")
js_formatted_passport_date_plc = (
datetime.strptime(result.get("plc_doc_date", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d")
if result.get("plc_doc_date") else "")
return jsonify(
user_id=user_id,
taxpayer_status_zapros=taxpayer_status_zapros,
fio=patient_fio,
server_data=result,
js_formatted_birthdate=js_formatted_birthdate,
js_formatted_passport_date=js_formatted_passport_date,
pct_doc_ser=result.get('pct_doc_ser', ''),
pct_doc_nom=result.get('pct_doc_nom', ''),
pct_inn=result.get('pct_inn', ''),
pct_doc_type=result.get('pct_doc_type', ''),
pct_doc_ind=result.get('pct_doc_ind', ''),
pct_email=result.get('pct_email', ''),
pct_doc_org_kod=result.get('pct_doc_org_kod', ''),
pct_doc_org_name=result.get('pct_doc_org_name', ''),
plc_status=result.get('plc_status', ''),
plc_fio=result.get('plc_fio', ''),
js_formatted_birthdate_plc=js_formatted_birthdate_plc,
plc_inn=result.get('plc_inn', ''),
plc_doc_type=result.get('plc_doc_type', ''),
plc_doc_ind=result.get('plc_doc_ind', ''),
plc_doc_ser=result.get('plc_doc_ser', ''),
plc_doc_nom=result.get('plc_doc_nom', ''),
js_formatted_passport_date_plc=js_formatted_passport_date_plc,
plc_doc_org_name=result.get('plc_doc_org_name', ''),
plc_doc_org_kod=result.get('plc_doc_org_kod', ''),
success = True
)
else:
return f"Ошибка: {response.status_code} - {response.text}", 500
except Exception as e:
return f"Произошла ошибка: {e}", 500
@webApp.route('/sending_patient2', methods=['POST'])
def send_registration_request2():
try:
raw_data = json.loads(request.data)
print("Полученные данные:", raw_data)
# Разделение ФИО
fio = raw_data.get("patient_fio", "")
parts = fio.split(" ")
if len(parts) < 3:
return jsonify({'success': False, "error": "ФИО должно содержать 3 слова"}), 400
pct_last_name = parts[0]
pct_first_name = parts[1]
pct_second_name = " ".join(parts[2:])
# Обработка даты рождения
dob = raw_data.get("dob1", "")
pct_birthday = ""
if dob:
date_obj = datetime.strptime(dob, "%Y-%m-%d")
pct_birthday = date_obj.strftime("%Y-%m-%dT00:00:00.000Z")
# Определение документа
if raw_data.get("passport1") and raw_data.get("passport_date1") and raw_data.get(
"postal_code1") and raw_data.get("passport_issued_by1"):
pct_doc_type = "Паспорт"
pct_doc_ind = 1
passport = raw_data.get("passport1", "")
parts = passport.split(" ")
pct_doc_ser = parts[0]
pct_doc_nom = parts[1]
formatted_date = raw_data.get("passport_date1", "")
date_obj = datetime.strptime(formatted_date, "%Y-%m-%d")
pct_doc_date = date_obj.strftime("%Y-%m-%dT00:00:00.000Z")
pct_doc_org_name = raw_data.get("passport_issued_by1", "")
pct_doc_org_kod = raw_data.get("postal_code1", "")
elif raw_data.get("svedetelstvo") and raw_data.get("svedetelstvo_date") and raw_data.get(
"svedetelstvo_issued_by"):
pct_doc_type = "Свидетельство о рождении"
pct_doc_ind = 2
pct_doc_ser, pct_doc_nom = raw_data.get("svedetelstvo", "").split(" ")
formatted_date = raw_data.get("svedetelstvo_date", "")
date_obj = datetime.strptime(formatted_date, "%Y-%m-%d")
pct_doc_date = date_obj.strftime("%Y-%m-%dT00:00:00.000Z")
pct_doc_org_name = raw_data.get("svedetelstvo_issued_by", "")
pct_doc_org_kod = ""
else:
return jsonify({'success': False, "error": "Недостаточно данных для определения документа"}), 400
# Данные родителей
plc_fio = raw_data.get("fional", "")
plc_status = raw_data.get("taxpayer_status_zapros", "")
dob_parent = raw_data.get("dobnal", "")
plc_birthday = ""
if dob_parent:
date_obj = datetime.strptime(dob_parent, "%Y-%m-%d")
plc_birthday = date_obj.strftime("%Y-%m-%dT00:00:00.000Z")
plc_doc_ser, plc_doc_nom = raw_data.get("passportnal", "").split(" ")
formatted_date = raw_data.get("passport_datenal", "")
date_obj = datetime.strptime(formatted_date, "%Y-%m-%d")
plc_doc_date = date_obj.strftime("%Y-%m-%dT00:00:00.000Z")
plc_doc_org_name = raw_data.get("passport_issued_bynal", "")
plc_doc_org_kod = raw_data.get("postal_codenal", "")
plc_inn = raw_data.get("innnal", "")
user_id = raw_data.get('user_id')
inn1=raw_data.get("inn1", "")
email1=raw_data.get("email1", "")
# Извлекаем годы
selected_years = raw_data.get('selected_years', [])
if selected_years:
# Преобразуем элементы в целые числа
selected_years = list(map(int, selected_years))
# Находим минимальный и максимальный год
year_beg_spr1 = min(selected_years)
year_end_spr2 = max(selected_years)
# Если выбран только один год, то обе переменные будут одинаковыми
if year_beg_spr1 == year_end_spr2:
year_end_spr2 = year_beg_spr1
# Теперь у нас есть year_beg_spr и year_end_spr
print("Минимальный год:", year_beg_spr1)
print("Максимальный год:", year_end_spr2)
# Формируем данные
data2 = {
"telegram_id": int(user_id),
"pct_last_name": pct_last_name,
"pct_first_name": pct_first_name,
"pct_second_name": pct_second_name,
"pct_birthday": pct_birthday,
"pct_inn": inn1,
"pct_doc_type": pct_doc_type,
"pct_doc_ind": pct_doc_ind,
"pct_doc_ser": pct_doc_ser,
"pct_doc_nom": pct_doc_nom,
"pct_doc_date": pct_doc_date,
"pct_doc_org_name": pct_doc_org_name,
"pct_doc_org_kod": pct_doc_org_kod,
"pac_poluchat": "False",
"pct_email": email1,
"plc_status": plc_status,
"plc_fio": plc_fio,
"plc_birthday": plc_birthday,
"plc_inn": plc_inn,
"plc_doc_type": "Паспорт",
"plc_doc_ind": 1,
"plc_doc_ser": plc_doc_ser,
"plc_doc_nom": plc_doc_nom,
"plc_doc_date": plc_doc_date,
"plc_doc_org_name": "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ",
"plc_doc_org_kod": plc_doc_org_kod,
"year_beg_spr": year_beg_spr1,
"year_end_spr": year_end_spr2
}
# print("Отправляемые данные:", data2)
# return jsonify({'success': True, 'data': data2})
# except Exception as e:
# return jsonify({'success': False, 'error': str(e)}), 500
print("Отправляемые данные:", data2)
# Успешный ответ
HEADER2 = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
try:
response = requests.post("http://192.168.1.10:8081/AppSaveSvedPac", headers=HEADER2, json=data2, timeout=5)
print("Ответ сервера:", response.text) # вдруг сервер всё же что-то вернёт
if response.status_code == 200:
return jsonify({'success': True})
else:
return jsonify({'success': False, 'error': f'Сервер вернул статус {response.status_code}'}), 500
except requests.exceptions.RequestException as e:
return jsonify({'success': False, 'error': f'Ошибка соединения: {str(e)}'}), 500
except Exception as e:
print(f"Ошибка: {e}")
return jsonify({'success': False, 'error': str(e)}), 500
@webApp.route('/')
def main_page_2_0():
return render_template('2.0/main_page.pug', user_id=request.args.get('user_id', None))
@@ -424,3 +742,30 @@ def main_page_2_0_fns():
return render_template('2.0/main_page_fns.pug', user_id=user_id, users=matching_users)
except Exception as e:
return f"Произошла ошибка: {e}", 500
@webApp.route('/fnstest')
def main_page_2_0_fns_test():
try:
user_id = request.args.get('user_id')
if not user_id:
return "Ошибка: не передан user_id", 400
sheet = authorize_google().open("Пациенты клиники").sheet1
records = sheet.get_all_values()
# Получаем список всех людей с таким user_id
matching_users = [row[0] for row in records[1:] if row[3] == user_id]
matching_users = sum(matching_users, []) if any(isinstance(i, list) for i in matching_users) else matching_users
print(matching_users)
if not matching_users:
return "Ошибка: пользователь не найден", 404
return render_template('2.0/main_page_fns2.pug', user_id=user_id, users=matching_users)
except Exception as e:
return f"Произошла ошибка: {e}", 500