healthdatalayer 1.5.9__py3-none-any.whl → 1.6.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of healthdatalayer might be problematic. Click here for more details.

@@ -1 +1,2 @@
1
- from .collaborator.schedule_collaborator import ScheduleCollaboratorDTO
1
+ from .collaborator.schedule_collaborator import ScheduleCollaboratorDTO
2
+ from .medical_visit.medical_certificate import MedicalCertificateDTO
File without changes
@@ -0,0 +1,51 @@
1
+ from pydantic import BaseModel, Field
2
+ from typing import List, Optional
3
+ from datetime import date, datetime, time
4
+
5
+ class MedicalCertificateDTO(BaseModel):
6
+ sys: Optional[str] = None
7
+ stablishment: Optional[str] = None
8
+
9
+
10
+ medical_record_number: Optional[str] = None
11
+ number_his: Optional[str] = None
12
+ last_name: Optional[str] = None
13
+ first_name: Optional[str] = None
14
+ sex: Optional[str] = None
15
+ age: Optional[int] = None
16
+
17
+
18
+ service: Optional[str] = None
19
+ speciality: Optional[str] = None
20
+
21
+
22
+ year_visit: Optional[int] = None
23
+ month_visit: Optional[int] = None
24
+ day_visit: Optional[int] = None
25
+ hour_start: Optional[time] = None
26
+ hour_end: Optional[time] = None
27
+ visit_date_spanish: Optional[str] = None
28
+
29
+
30
+ rest: Optional[bool] = None
31
+ rest_hours: Optional[float] = None
32
+ rest_date_start: Optional[datetime] = None
33
+
34
+
35
+ year_rest_start: Optional[int] = None
36
+ month_rest_start: Optional[int] = None
37
+ day_rest_start: Optional[int] = None
38
+ rest_date_start_spanish: Optional[str] = None
39
+
40
+
41
+ rest_date_end: Optional[datetime] = None
42
+
43
+
44
+ year_rest_end: Optional[int] = None
45
+ month_rest_end: Optional[int] = None
46
+ day_rest_end: Optional[int] = None
47
+ rest_date_end_spanish: Optional[str] = None
48
+
49
+
50
+ doctor_name: Optional[str] = None
51
+ doctor_ruc: Optional[str] = None
@@ -19,8 +19,8 @@ class MedicalDrugRecipeRepository:
19
19
 
20
20
  def get_by_id_command(self, medical_drug_recipe_id: UUID) -> Optional[MedicalDrugRecipe]:
21
21
  with get_session(self.tenant) as session:
22
-
23
- return session.get(MedicalDrugRecipe, medical_drug_recipe_id)
22
+ statement = select(MedicalDrugRecipe).where(MedicalDrugRecipe.medical_drug_recipe_id == medical_drug_recipe_id)
23
+ return session.exec(statement).first()
24
24
 
25
25
  def list_all_command(self, active_only: bool = True)->List[MedicalDrugRecipe]:
26
26
  with get_session(self.tenant) as session:
@@ -56,7 +56,8 @@ class MedicalDrugRecipeRepository:
56
56
 
57
57
  def delete_command(self, medical_drug_recipe_id: UUID, soft_delete: bool = True) -> bool:
58
58
  with get_session(self.tenant) as session:
59
- db_medical_drug_recipe = session.get(MedicalDrugRecipe, medical_drug_recipe_id)
59
+ statement = select(MedicalDrugRecipe).where(MedicalDrugRecipe.medical_drug_recipe_id == medical_drug_recipe_id)
60
+ db_medical_drug_recipe = session.exec(statement).first()
60
61
  if not db_medical_drug_recipe:
61
62
  return False
62
63
 
@@ -1,9 +1,10 @@
1
1
  from typing import Optional, List
2
2
  from datetime import datetime, date, time
3
3
  from uuid import UUID
4
- from sqlmodel import select
4
+ from sqlmodel import select, text
5
5
  from sqlalchemy.orm import selectinload,joinedload
6
6
  from healthdatalayer.models import MedicalVisit
7
+ from healthdatalayer.dtos import MedicalCertificateDTO
7
8
  from healthdatalayer.config.db import engines, get_session
8
9
 
9
10
  class MedicalVisitRepository:
@@ -342,4 +343,139 @@ class MedicalVisitRepository:
342
343
  statement = select(MedicalVisit).where(MedicalVisit.collaborator_id == collaborator_id, MedicalVisit.visit_date == target_date)
343
344
  result = session.exec(statement).first()
344
345
  return result is not None
345
-
346
+
347
+
348
+ def get_data_medical_certificate_command(self, medical_visit_id: str) -> MedicalCertificateDTO:
349
+
350
+ with get_session(self.tenant) as session:
351
+
352
+ query = text("""
353
+ select
354
+ s."name" as "sys",
355
+ b2."name" as stablishment,
356
+ px.medical_record_number,
357
+ px.identification as number_his,
358
+ px.last_name ,
359
+ px.first_name,
360
+ case
361
+ when g.name ='Male' then 'M'
362
+ else 'F'
363
+ end as sex,
364
+ EXTRACT(YEAR FROM AGE(px.birth_date)) AS age,
365
+ sp.name as service,
366
+ sp.subspeciality as speciality,
367
+ EXTRACT(YEAR FROM mv.visit_date) AS year_visit,
368
+ EXTRACT(MONTH FROM mv.visit_date) AS month_visit,
369
+ EXTRACT(DAY FROM mv.visit_date) AS day_visit,
370
+ mv.visit_date::time AS hour_start,
371
+ (mv.visit_date + INTERVAL '30 minutes')::time AS hour_end,
372
+ TO_CHAR(mv.visit_date, 'DD') || ' de ' ||
373
+ CASE EXTRACT(MONTH FROM mv.visit_date)
374
+ WHEN 1 THEN 'enero'
375
+ WHEN 2 THEN 'febrero'
376
+ WHEN 3 THEN 'marzo'
377
+ WHEN 4 THEN 'abril'
378
+ WHEN 5 THEN 'mayo'
379
+ WHEN 6 THEN 'junio'
380
+ WHEN 7 THEN 'julio'
381
+ WHEN 8 THEN 'agosto'
382
+ WHEN 9 THEN 'septiembre'
383
+ WHEN 10 THEN 'octubre'
384
+ WHEN 11 THEN 'noviembre'
385
+ WHEN 12 THEN 'diciembre'
386
+ END || ' del ' || EXTRACT(YEAR FROM mv.visit_date) AS visit_date_spanish,
387
+ mv.rest,
388
+ mv.rest_hours,
389
+ mv.rest_date_start ,
390
+ EXTRACT(YEAR FROM mv.rest_date_start) AS year_rest_start,
391
+ EXTRACT(MONTH FROM mv.rest_date_start) AS month_rest_start,
392
+ EXTRACT(DAY FROM mv.rest_date_start) AS day_rest_start,
393
+ TO_CHAR(mv.rest_date_start, 'DD') || ' de ' ||
394
+ CASE EXTRACT(MONTH FROM mv.rest_date_start)
395
+ WHEN 1 THEN 'enero'
396
+ WHEN 2 THEN 'febrero'
397
+ WHEN 3 THEN 'marzo'
398
+ WHEN 4 THEN 'abril'
399
+ WHEN 5 THEN 'mayo'
400
+ WHEN 6 THEN 'junio'
401
+ WHEN 7 THEN 'julio'
402
+ WHEN 8 THEN 'agosto'
403
+ WHEN 9 THEN 'septiembre'
404
+ WHEN 10 THEN 'octubre'
405
+ WHEN 11 THEN 'noviembre'
406
+ WHEN 12 THEN 'diciembre'
407
+ END || ' del ' || EXTRACT(YEAR FROM mv.rest_date_start) AS rest_date_start_spanish,
408
+ mv.rest_date_end,
409
+ EXTRACT(YEAR FROM mv.rest_date_end) AS year_rest_end,
410
+ EXTRACT(MONTH FROM mv.rest_date_end) AS month_rest_end,
411
+ EXTRACT(DAY FROM mv.rest_date_end) AS day_rest_end,
412
+ TO_CHAR( mv.rest_date_end, 'DD') || ' de ' ||
413
+ CASE EXTRACT(MONTH FROM mv.rest_date_end)
414
+ WHEN 1 THEN 'enero'
415
+ WHEN 2 THEN 'febrero'
416
+ WHEN 3 THEN 'marzo'
417
+ WHEN 4 THEN 'abril'
418
+ WHEN 5 THEN 'mayo'
419
+ WHEN 6 THEN 'junio'
420
+ WHEN 7 THEN 'julio'
421
+ WHEN 8 THEN 'agosto'
422
+ WHEN 9 THEN 'septiembre'
423
+ WHEN 10 THEN 'octubre'
424
+ WHEN 11 THEN 'noviembre'
425
+ WHEN 12 THEN 'diciembre'
426
+ END || ' del ' || EXTRACT(YEAR FROM mv.rest_date_end) AS rest_date_end_spanish,
427
+ c.name as doctor_name,
428
+ c.ruc as doctor_ruc
429
+ from medical_visit mv
430
+ left join px on px.client_id = mv.client_id
431
+ left join gender g on g.gender_id = px.gender_id
432
+ left join collaborator c on c.collaborator_id = mv.collaborator_id
433
+ left join bridge_area_floor_branch b on b.bridge_area_floor_branch_id = mv.bridge_area_floor_branch_id
434
+ left join branch b2 on b.branch_id = b2.branch_id
435
+ left join "system" s on s.system_id = b2.system_id
436
+ left join speciality sp on sp.speciality_id = mv.speciality_id
437
+ where mv.medical_visit_id = :medical_visit_id
438
+ and mv.status_visit != 'CANCELADO'
439
+ """)
440
+
441
+ result = session.exec(query, params={"medical_visit_id": medical_visit_id})
442
+
443
+ row = result.fetchone()
444
+
445
+
446
+ if not row:
447
+ raise ValueError(f"No se encontró la visita médica con ID: {medical_visit_id}")
448
+
449
+
450
+ return MedicalCertificateDTO(
451
+ sys=row[0],
452
+ stablishment=row[1],
453
+ medical_record_number=row[2],
454
+ number_his=row[3],
455
+ last_name=row[4],
456
+ first_name=row[5],
457
+ sex=row[6],
458
+ age=row[7],
459
+ service=row[8],
460
+ speciality=row[9],
461
+ year_visit=row[10],
462
+ month_visit=row[11],
463
+ day_visit=row[12],
464
+ hour_start=row[13],
465
+ hour_end=row[14],
466
+ visit_date_spanish=row[15],
467
+ rest=row[16],
468
+ rest_hours=row[17],
469
+ rest_date_start=row[18],
470
+ year_rest_start=row[19],
471
+ month_rest_start=row[20],
472
+ day_rest_start=row[21],
473
+ rest_date_start_spanish=row[22],
474
+ rest_date_end=row[23],
475
+ year_rest_end=row[24],
476
+ month_rest_end=row[25],
477
+ day_rest_end=row[26],
478
+ rest_date_end_spanish=row[27],
479
+ doctor_name=row[28],
480
+ doctor_ruc=row[29]
481
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: healthdatalayer
3
- Version: 1.5.9
3
+ Version: 1.6.1
4
4
  Summary: Health Datalayer to access data from different sources
5
5
  Author: Jesus Martinez
6
6
  Author-email: jesusmartinez@noosds.com
@@ -3,9 +3,11 @@ healthdatalayer/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
3
3
  healthdatalayer/config/config.py,sha256=vyqrlHDgCGpYX7V9fDn4g671lUU1RuWlSYCIazI-SqQ,689
4
4
  healthdatalayer/config/db.py,sha256=b_SWTINJSVUhR0uyD4h93jPLKUzRm6Ky0tmALWbjM18,342
5
5
  healthdatalayer/config/vault.py,sha256=9yUMXjaTYSnqr0npcQXDsg6Z7G3DityqpmHl1x42zS0,748
6
- healthdatalayer/dtos/__init__.py,sha256=yNIWA7EF04esaVDpSymVyeuaotsHdOjLzqk3ygbh59o,71
6
+ healthdatalayer/dtos/__init__.py,sha256=6KxXXnebS8tgfI6l2Fd7nuQL88wfCKU3tmtigbLjgKM,140
7
7
  healthdatalayer/dtos/collaborator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  healthdatalayer/dtos/collaborator/schedule_collaborator.py,sha256=SUD7BIMownZuW9h9GUaFy2U9jaDjZ1tB_9-KCv4H0mk,369
9
+ healthdatalayer/dtos/medical_visit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ healthdatalayer/dtos/medical_visit/medical_certificate.py,sha256=7Kgn95WXXQ_rLXtr-N20hXFs_0DsKAVai0rIwbOk2JQ,1404
9
11
  healthdatalayer/models/__init__.py,sha256=Hz31SDpnjtFZZcf_uLt0MuGqE-_P2ZIsZlPQ_YYaetk,2117
10
12
  healthdatalayer/models/bridge_area_floor_branch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
13
  healthdatalayer/models/bridge_area_floor_branch/area.py,sha256=g_u6RoorLJ7XUx7qcqXLavrHxpflHGi0p77f-3RPbVU,201
@@ -86,10 +88,10 @@ healthdatalayer/repositories/lab_repositories/medical_lab_repository.py,sha256=o
86
88
  healthdatalayer/repositories/medical_visit_repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
89
  healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_repository.py,sha256=hwb5vh64ze72tFMSIUPNitC5t6pUCcO6pnI0gk-7LZU,4157
88
90
  healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py,sha256=5-QSverT7FN5nay2j_EevCqNAnuD--FTDVQnj0_WRhs,5508
89
- healthdatalayer/repositories/medical_visit_repositories/medical_drug_recipe_repository.py,sha256=6rubP_KtheyJSvLmpBJwYuPKNsjhSvKi-_HM2QoP1hM,3141
91
+ healthdatalayer/repositories/medical_visit_repositories/medical_drug_recipe_repository.py,sha256=fZViKSu21mYihn3C4p7f7wqZkePoHi-Mm5ZI38XpSvw,3330
90
92
  healthdatalayer/repositories/medical_visit_repositories/medical_drug_repository.py,sha256=woyrx4vuV7hpxS9WOZNmCTsfWrZiXoMV2__x9lTqPJY,3011
91
93
  healthdatalayer/repositories/medical_visit_repositories/medical_recipe_visit_repository.py,sha256=j4cJ4zURKILN3lkqfpXya29MQYFIMiTmJukOADBj5_c,4551
92
- healthdatalayer/repositories/medical_visit_repositories/medical_visit_repository.py,sha256=vATKxoBimx_-VYtqnxx-6u4sdU7u8sjtE2y6Kr2uepM,17186
94
+ healthdatalayer/repositories/medical_visit_repositories/medical_visit_repository.py,sha256=beTd34sFQx_r4FwUQ1dePdWbJlllVdCCotl3ffP5ZBY,23288
93
95
  healthdatalayer/repositories/medical_visit_repositories/organ_system_review_repository.py,sha256=7QNxpQIFcD6B8CX5fua8Qck75j24Y4uEkR_Lans1_0A,4197
94
96
  healthdatalayer/repositories/medical_visit_repositories/physical_exam_repository.py,sha256=eCdokx60LB5hLfloqFhvsDj8UxFYXEDi6nqXO0TB18w,3877
95
97
  healthdatalayer/repositories/medical_visit_repositories/visit_triage_repository.py,sha256=9Up5M7wWo5GnaYdl6QvTamYaIG4dG_ALM0Su66rlj44,4140
@@ -97,7 +99,7 @@ healthdatalayer/repositories/user_repositories/__init__.py,sha256=47DEQpj8HBSa-_
97
99
  healthdatalayer/repositories/user_repositories/permission_repository.py,sha256=3L4y-zCkI2PIRo-L3FJRSk4g3nZnu6q35lEY4ACJyq4,9630
98
100
  healthdatalayer/repositories/user_repositories/role_repository.py,sha256=jIsbeAFFQQ_CZJqBMcOskuMXtT1Il6eiN0Y2BpVO1JE,6821
99
101
  healthdatalayer/repositories/user_repositories/user_repository.py,sha256=FUCNdRRGc12dq5XuwDT3btvDETt6HGXh_xQIPTLCAvk,9839
100
- healthdatalayer-1.5.9.dist-info/METADATA,sha256=55bxMtiwWzQVEqdSgHZIDukDPbdjDq9wItzGvVN9QH0,827
101
- healthdatalayer-1.5.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
102
- healthdatalayer-1.5.9.dist-info/top_level.txt,sha256=6f1-gvpg533UEVuYsRJCDhdSDQUBwijyAHylyS4nG_4,16
103
- healthdatalayer-1.5.9.dist-info/RECORD,,
102
+ healthdatalayer-1.6.1.dist-info/METADATA,sha256=tfw_0ka72WjF5eOVTS3rDYoo15DBiZ_vmbpMU3KBayk,827
103
+ healthdatalayer-1.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
104
+ healthdatalayer-1.6.1.dist-info/top_level.txt,sha256=6f1-gvpg533UEVuYsRJCDhdSDQUBwijyAHylyS4nG_4,16
105
+ healthdatalayer-1.6.1.dist-info/RECORD,,