healthdatalayer 1.4.6__tar.gz → 1.5.1__tar.gz

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.

Files changed (108) hide show
  1. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/PKG-INFO +1 -1
  2. healthdatalayer-1.5.1/healthdatalayer/dtos/__init__.py +1 -0
  3. healthdatalayer-1.5.1/healthdatalayer/dtos/collaborator/schedule_collaborator.py +13 -0
  4. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/collaborator_repositories/collaborator_repository.py +48 -2
  5. healthdatalayer-1.5.1/healthdatalayer/repositories/user_repositories/__init__.py +0 -0
  6. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer.egg-info/PKG-INFO +1 -1
  7. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer.egg-info/SOURCES.txt +3 -0
  8. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/setup.py +1 -1
  9. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/README.md +0 -0
  10. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/__init__.py +0 -0
  11. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/config/__init__.py +0 -0
  12. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/config/config.py +0 -0
  13. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/config/db.py +0 -0
  14. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/config/vault.py +0 -0
  15. {healthdatalayer-1.4.6/healthdatalayer/models/bridge_area_floor_branch → healthdatalayer-1.5.1/healthdatalayer/dtos/collaborator}/__init__.py +0 -0
  16. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/__init__.py +0 -0
  17. {healthdatalayer-1.4.6/healthdatalayer/models/client → healthdatalayer-1.5.1/healthdatalayer/models/bridge_area_floor_branch}/__init__.py +0 -0
  18. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/bridge_area_floor_branch/area.py +0 -0
  19. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/bridge_area_floor_branch/branch.py +0 -0
  20. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/bridge_area_floor_branch/bridge_area_floor_branch.py +0 -0
  21. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/bridge_area_floor_branch/floor.py +0 -0
  22. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/bridge_area_floor_branch/room.py +0 -0
  23. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/bridge_area_floor_branch/system.py +0 -0
  24. {healthdatalayer-1.4.6/healthdatalayer/models/collaborator → healthdatalayer-1.5.1/healthdatalayer/models/client}/__init__.py +0 -0
  25. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/address.py +0 -0
  26. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/city.py +0 -0
  27. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/client.py +0 -0
  28. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/client_type.py +0 -0
  29. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/education.py +0 -0
  30. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/emergency_contact.py +0 -0
  31. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/gender.py +0 -0
  32. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/marriage_status.py +0 -0
  33. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/nationality.py +0 -0
  34. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/pathological_history.py +0 -0
  35. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/pet.py +0 -0
  36. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/profession.py +0 -0
  37. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/px.py +0 -0
  38. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/client/state.py +0 -0
  39. {healthdatalayer-1.4.6/healthdatalayer/models/lab → healthdatalayer-1.5.1/healthdatalayer/models/collaborator}/__init__.py +0 -0
  40. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/collaborator/collaborator.py +0 -0
  41. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/collaborator/collaborator_speciality.py +0 -0
  42. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/collaborator/collaborator_type.py +0 -0
  43. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/collaborator/speciality.py +0 -0
  44. {healthdatalayer-1.4.6/healthdatalayer/models/medical_visit → healthdatalayer-1.5.1/healthdatalayer/models/lab}/__init__.py +0 -0
  45. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/lab/client_lab.py +0 -0
  46. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/lab/measure_lab.py +0 -0
  47. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/lab/medical_lab.py +0 -0
  48. {healthdatalayer-1.4.6/healthdatalayer/models/user → healthdatalayer-1.5.1/healthdatalayer/models/medical_visit}/__init__.py +0 -0
  49. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/medical_diagnosis.py +0 -0
  50. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/medical_diagnosis_visit.py +0 -0
  51. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/medical_drug.py +0 -0
  52. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/medical_drug_recipe.py +0 -0
  53. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/medical_recipe_visit.py +0 -0
  54. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/medical_visit.py +0 -0
  55. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/organ_system_review.py +0 -0
  56. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/physical_exam.py +0 -0
  57. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/status_visit_enum.py +0 -0
  58. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/medical_visit/visit_triage.py +0 -0
  59. {healthdatalayer-1.4.6/healthdatalayer/repositories/client_repositories → healthdatalayer-1.5.1/healthdatalayer/models/user}/__init__.py +0 -0
  60. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/user/permission.py +0 -0
  61. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/user/permission_user.py +0 -0
  62. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/user/role.py +0 -0
  63. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/user/role_permission.py +0 -0
  64. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/user/role_user.py +0 -0
  65. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/models/user/user.py +0 -0
  66. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/__init__.py +0 -0
  67. {healthdatalayer-1.4.6/healthdatalayer/repositories/collaborator_repositories → healthdatalayer-1.5.1/healthdatalayer/repositories/client_repositories}/__init__.py +0 -0
  68. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/address_repository.py +0 -0
  69. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/client_type_repository.py +0 -0
  70. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/education_repository.py +0 -0
  71. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/emergency_contact_repository.py +0 -0
  72. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/gender_repository.py +0 -0
  73. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/marriage_status_repository.py +0 -0
  74. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/nationality_repository.py +0 -0
  75. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/pathological_history_repository.py +0 -0
  76. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/pet_repository.py +0 -0
  77. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/profession_repository.py +0 -0
  78. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/client_repositories/px_repository.py +0 -0
  79. {healthdatalayer-1.4.6/healthdatalayer/repositories/infraestructure_repositories → healthdatalayer-1.5.1/healthdatalayer/repositories/collaborator_repositories}/__init__.py +0 -0
  80. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/collaborator_repositories/collaborator_type_repository.py +0 -0
  81. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/collaborator_repositories/speciality_repository.py +0 -0
  82. {healthdatalayer-1.4.6/healthdatalayer/repositories/lab_repositories → healthdatalayer-1.5.1/healthdatalayer/repositories/infraestructure_repositories}/__init__.py +0 -0
  83. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/infraestructure_repositories/area_repository.py +0 -0
  84. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/infraestructure_repositories/branch_repository.py +0 -0
  85. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/infraestructure_repositories/bridge_repository.py +0 -0
  86. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/infraestructure_repositories/floor_repository.py +0 -0
  87. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/infraestructure_repositories/room_repository.py +0 -0
  88. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/infraestructure_repositories/system_repository.py +0 -0
  89. {healthdatalayer-1.4.6/healthdatalayer/repositories/medical_visit_repositories → healthdatalayer-1.5.1/healthdatalayer/repositories/lab_repositories}/__init__.py +0 -0
  90. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/lab_repositories/measure_lab_repository.py +0 -0
  91. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/lab_repositories/medical_lab_repository.py +0 -0
  92. {healthdatalayer-1.4.6/healthdatalayer/repositories/user_repositories → healthdatalayer-1.5.1/healthdatalayer/repositories/medical_visit_repositories}/__init__.py +0 -0
  93. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_repository.py +0 -0
  94. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py +0 -0
  95. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/medical_drug_recipe_repository.py +0 -0
  96. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/medical_drug_repository.py +0 -0
  97. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/medical_recipe_visit_repository.py +0 -0
  98. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/medical_visit_repository.py +0 -0
  99. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/organ_system_review_repository.py +0 -0
  100. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/physical_exam_repository.py +0 -0
  101. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/medical_visit_repositories/visit_triage_repository.py +0 -0
  102. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/user_repositories/permission_repository.py +0 -0
  103. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/user_repositories/role_repository.py +0 -0
  104. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer/repositories/user_repositories/user_repository.py +0 -0
  105. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer.egg-info/dependency_links.txt +0 -0
  106. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer.egg-info/requires.txt +0 -0
  107. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/healthdatalayer.egg-info/top_level.txt +0 -0
  108. {healthdatalayer-1.4.6 → healthdatalayer-1.5.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: healthdatalayer
3
- Version: 1.4.6
3
+ Version: 1.5.1
4
4
  Summary: Health Datalayer to access data from different sources
5
5
  Author: Jesus Martinez
6
6
  Author-email: jesusmartinez@noosds.com
@@ -0,0 +1 @@
1
+ from .collaborator.schedule_collaborator import ScheduleCollaboratorDTO
@@ -0,0 +1,13 @@
1
+ from pydantic import BaseModel, Field
2
+ from typing import List
3
+ from datetime import time
4
+
5
+ class ScheduleCollaboratorDTO(BaseModel):
6
+
7
+ available_schedules: List[time] = Field(default_factory=list)
8
+ busy_schedules: List[time] = Field(default_factory=list)
9
+
10
+ class Config:
11
+ json_encoders = {
12
+ time: lambda v: v.strftime('%H:%M')
13
+ }
@@ -1,9 +1,11 @@
1
+ from datetime import date
1
2
  from typing import Optional, List
2
3
  from uuid import UUID
3
- from sqlmodel import select, or_, join
4
+ from sqlmodel import select, or_, join, text
4
5
  from sqlalchemy.orm import selectinload,joinedload
5
6
  from healthdatalayer.models import Collaborator
6
7
  from healthdatalayer.models import Speciality, CollaboratorSpeciality
8
+ from healthdatalayer.dtos import ScheduleCollaboratorDTO
7
9
  from healthdatalayer.config.db import engines, get_session
8
10
 
9
11
  class CollaboratorRepository:
@@ -147,4 +149,48 @@ class CollaboratorRepository:
147
149
  session.commit()
148
150
  session.refresh(collab)
149
151
 
150
- return collab
152
+ return collab
153
+
154
+ def get_availability_schedules_command(self, visit_date: date, collaborator_id: str) -> ScheduleCollaboratorDTO:
155
+
156
+ with get_session(self.tenant) as session:
157
+
158
+ query = text("""
159
+ WITH horarios_generados AS (
160
+ SELECT horario::TIME as hora
161
+ FROM generate_series(
162
+ CAST(:fecha AS DATE)+ TIME '08:00:00',
163
+ CAST(:fecha AS DATE) + TIME '17:00:00',
164
+ INTERVAL '30 minutes'
165
+ ) AS horario
166
+ ),
167
+ horarios_ocupados AS (
168
+ SELECT t.visit_date::TIME as hora
169
+ FROM medical_visit t
170
+ WHERE t.visit_date::DATE = :fecha
171
+ AND t.collaborator_id = :colab_id
172
+ )
173
+ SELECT
174
+ hg.hora,
175
+ CASE WHEN ho.hora IS NOT NULL THEN true ELSE false END as ocupado
176
+ FROM horarios_generados hg
177
+ LEFT JOIN horarios_ocupados ho ON hg.hora = ho.hora
178
+ ORDER BY hg.hora
179
+ """)
180
+
181
+ result = session.exec(query, params={"fecha": visit_date, "colab_id": collaborator_id})
182
+
183
+ availables = []
184
+ busy = []
185
+
186
+ for row in result.fetchall():
187
+ hour, is_busy = row[0], row[1]
188
+ if is_busy:
189
+ busy.append(hour)
190
+ else:
191
+ availables.append(hour)
192
+
193
+ return ScheduleCollaboratorDTO(
194
+ available_schedules=availables,
195
+ busy_schedules=busy
196
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: healthdatalayer
3
- Version: 1.4.6
3
+ Version: 1.5.1
4
4
  Summary: Health Datalayer to access data from different sources
5
5
  Author: Jesus Martinez
6
6
  Author-email: jesusmartinez@noosds.com
@@ -10,6 +10,9 @@ healthdatalayer/config/__init__.py
10
10
  healthdatalayer/config/config.py
11
11
  healthdatalayer/config/db.py
12
12
  healthdatalayer/config/vault.py
13
+ healthdatalayer/dtos/__init__.py
14
+ healthdatalayer/dtos/collaborator/__init__.py
15
+ healthdatalayer/dtos/collaborator/schedule_collaborator.py
13
16
  healthdatalayer/models/__init__.py
14
17
  healthdatalayer/models/bridge_area_floor_branch/__init__.py
15
18
  healthdatalayer/models/bridge_area_floor_branch/area.py
@@ -5,7 +5,7 @@ with open('requirements.txt') as f:
5
5
 
6
6
  setup(
7
7
  name="healthdatalayer",
8
- version="1.4.6",
8
+ version="1.5.1",
9
9
  include_package_data=True,
10
10
  python_requires='>=3.10',
11
11
  packages=find_packages(),