healthdatalayer 1.0.1__py3-none-any.whl → 1.2.0__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.

Files changed (96) hide show
  1. healthdatalayer/config/__init__.py +0 -0
  2. healthdatalayer/models/bridge_area_floor_branch/__init__.py +0 -0
  3. healthdatalayer/models/bridge_area_floor_branch/area.py +8 -0
  4. healthdatalayer/models/bridge_area_floor_branch/branch.py +16 -0
  5. healthdatalayer/models/bridge_area_floor_branch/bridge_area_floor_branch.py +27 -0
  6. healthdatalayer/models/bridge_area_floor_branch/floor.py +8 -0
  7. healthdatalayer/models/bridge_area_floor_branch/room.py +8 -0
  8. healthdatalayer/models/bridge_area_floor_branch/system.py +8 -0
  9. healthdatalayer/models/client/__init__.py +0 -0
  10. healthdatalayer/models/client/address.py +13 -0
  11. healthdatalayer/models/client/client.py +25 -0
  12. healthdatalayer/models/client/client_type.py +9 -0
  13. healthdatalayer/models/client/education.py +9 -0
  14. healthdatalayer/models/client/emergency_contact.py +17 -0
  15. healthdatalayer/models/client/gender.py +9 -0
  16. healthdatalayer/models/client/marriage_status.py +9 -0
  17. healthdatalayer/models/client/nationality.py +10 -0
  18. healthdatalayer/models/client/pathological_history.py +29 -0
  19. healthdatalayer/models/client/pet.py +16 -0
  20. healthdatalayer/models/client/profession.py +9 -0
  21. healthdatalayer/models/client/px.py +28 -0
  22. healthdatalayer/models/collaborator/__init__.py +0 -0
  23. healthdatalayer/models/collaborator/collaborator.py +33 -0
  24. healthdatalayer/models/collaborator/collaborator_speciality.py +8 -0
  25. healthdatalayer/models/collaborator/collaborator_type.py +9 -0
  26. healthdatalayer/models/collaborator/speciality.py +23 -0
  27. healthdatalayer/models/lab/__init__.py +0 -0
  28. healthdatalayer/models/lab/client_lab.py +13 -0
  29. healthdatalayer/models/lab/measure_lab.py +11 -0
  30. healthdatalayer/models/lab/medical_lab.py +17 -0
  31. healthdatalayer/models/medical_visit/__init__.py +0 -0
  32. healthdatalayer/models/medical_visit/medical_diagnosis.py +12 -0
  33. healthdatalayer/models/medical_visit/medical_diagnosis_visit.py +25 -0
  34. healthdatalayer/models/medical_visit/medical_drug.py +27 -0
  35. healthdatalayer/models/medical_visit/medical_drug_recipe.py +18 -0
  36. healthdatalayer/models/medical_visit/medical_recipe_visit.py +28 -0
  37. healthdatalayer/models/medical_visit/medical_visit.py +51 -0
  38. healthdatalayer/models/medical_visit/organ_system_review.py +28 -0
  39. healthdatalayer/models/medical_visit/physical_exam.py +45 -0
  40. healthdatalayer/models/medical_visit/visit_triage.py +28 -0
  41. healthdatalayer/models/user/__init__.py +0 -0
  42. healthdatalayer/models/user/permission.py +27 -0
  43. healthdatalayer/models/user/permission_user.py +8 -0
  44. healthdatalayer/models/user/role.py +27 -0
  45. healthdatalayer/models/user/role_permission.py +8 -0
  46. healthdatalayer/models/user/role_user.py +8 -0
  47. healthdatalayer/models/user/user.py +30 -0
  48. healthdatalayer/repositories/client_repositories/__init__.py +0 -0
  49. healthdatalayer/repositories/client_repositories/address_repository.py +64 -0
  50. healthdatalayer/repositories/client_repositories/client_type_repository.py +69 -0
  51. healthdatalayer/repositories/client_repositories/education_repository.py +70 -0
  52. healthdatalayer/repositories/client_repositories/gender_repository.py +70 -0
  53. healthdatalayer/repositories/client_repositories/marriage_status_repository.py +70 -0
  54. healthdatalayer/repositories/client_repositories/pet_repository.py +126 -0
  55. healthdatalayer/repositories/client_repositories/profession_repository.py +70 -0
  56. healthdatalayer/repositories/client_repositories/px_repository.py +210 -0
  57. healthdatalayer/repositories/collaborator_repositories/__init__.py +0 -0
  58. healthdatalayer/repositories/collaborator_repositories/collaborator_repository.py +150 -0
  59. healthdatalayer/repositories/collaborator_repositories/collaborator_type_repository.py +69 -0
  60. healthdatalayer/repositories/collaborator_repositories/speciality_repository.py +75 -0
  61. healthdatalayer/repositories/infraestructure_repositories/__init__.py +0 -0
  62. healthdatalayer/repositories/infraestructure_repositories/area_repository.py +69 -0
  63. healthdatalayer/repositories/infraestructure_repositories/branch_repository.py +69 -0
  64. healthdatalayer/repositories/infraestructure_repositories/bridge_repository.py +80 -0
  65. healthdatalayer/repositories/infraestructure_repositories/floor_repository.py +69 -0
  66. healthdatalayer/repositories/infraestructure_repositories/room_repository.py +69 -0
  67. healthdatalayer/repositories/infraestructure_repositories/system_repository.py +69 -0
  68. healthdatalayer/repositories/lab_repositories/__init__.py +0 -0
  69. healthdatalayer/repositories/lab_repositories/measure_lab_repository.py +80 -0
  70. healthdatalayer/repositories/lab_repositories/medical_lab_repository.py +254 -0
  71. healthdatalayer/repositories/medical_visit_repositories/__init__.py +0 -0
  72. healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_repository.py +63 -0
  73. healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py +92 -0
  74. healthdatalayer/repositories/medical_visit_repositories/medical_drug_recipe_repository.py +70 -0
  75. healthdatalayer/repositories/medical_visit_repositories/medical_drug_repository.py +63 -0
  76. healthdatalayer/repositories/medical_visit_repositories/medical_recipe_visit_repository.py +93 -0
  77. healthdatalayer/repositories/medical_visit_repositories/medical_visit_repository.py +110 -0
  78. healthdatalayer/repositories/medical_visit_repositories/organ_system_review_repository.py +89 -0
  79. healthdatalayer/repositories/medical_visit_repositories/physical_exam_repository.py +89 -0
  80. healthdatalayer/repositories/medical_visit_repositories/visit_triage_repository.py +89 -0
  81. healthdatalayer/repositories/user_repositories/__init__.py +0 -0
  82. healthdatalayer/repositories/user_repositories/permission_repository.py +238 -0
  83. healthdatalayer/repositories/user_repositories/role_repository.py +174 -0
  84. healthdatalayer/repositories/user_repositories/user_repository.py +251 -0
  85. {healthdatalayer-1.0.1.dist-info → healthdatalayer-1.2.0.dist-info}/METADATA +2 -2
  86. healthdatalayer-1.2.0.dist-info/RECORD +94 -0
  87. healthdatalayer-1.2.0.dist-info/top_level.txt +1 -0
  88. healthdatalayer-1.0.1.dist-info/RECORD +0 -10
  89. healthdatalayer-1.0.1.dist-info/top_level.txt +0 -3
  90. {config → healthdatalayer}/__init__.py +0 -0
  91. {config → healthdatalayer/config}/config.py +0 -0
  92. {config → healthdatalayer/config}/db.py +0 -0
  93. {config → healthdatalayer/config}/vault.py +0 -0
  94. {models → healthdatalayer/models}/__init__.py +0 -0
  95. {repositories → healthdatalayer/repositories}/__init__.py +0 -0
  96. {healthdatalayer-1.0.1.dist-info → healthdatalayer-1.2.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,251 @@
1
+ from typing import Optional, List
2
+ from uuid import UUID
3
+ from sqlmodel import select
4
+ from sqlalchemy.orm import selectinload
5
+
6
+ from models import User
7
+ from models import Role
8
+ from models import Permission
9
+ from config.db import engines, get_session
10
+
11
+ class UserRepository:
12
+ def __init__(self, tenant: str):
13
+ self.tenant = tenant
14
+ if tenant not in engines:
15
+ raise ValueError(f"Tenant {tenant} is not configured")
16
+
17
+ def create_command(self, user: User) -> User:
18
+ with get_session(self.tenant) as session:
19
+ session.add(user)
20
+ session.commit()
21
+ session.refresh(user)
22
+ return user
23
+
24
+ def get_by_id_command(self, user_id: UUID, load_relations: bool = False) -> Optional[User]:
25
+ with get_session(self.tenant) as session:
26
+ if load_relations:
27
+ statement = select(User).where(User.user_id == user_id).options(
28
+ selectinload(User.roles),
29
+ selectinload(User.permissions)
30
+ )
31
+ return session.exec(statement).first()
32
+ else:
33
+ return session.get(User, user_id)
34
+
35
+ def get_by_username_command(self, username: str, load_relations: bool = False) -> Optional[User]:
36
+ with get_session(self.tenant) as session:
37
+ statement = select(User).where(User.username == username)
38
+
39
+ if load_relations:
40
+ statement = statement.options(
41
+ selectinload(User.roles),
42
+ selectinload(User.permissions)
43
+ )
44
+
45
+ return session.exec(statement).first()
46
+
47
+ def get_by_email_command(self, email: str, load_relations: bool = False) -> Optional[User]:
48
+ with get_session(self.tenant) as session:
49
+ statement = select(User).where(User.email == email)
50
+
51
+ if load_relations:
52
+ statement = statement.options(
53
+ selectinload(User.roles),
54
+ selectinload(User.permissions)
55
+ )
56
+
57
+ return session.exec(statement).first()
58
+
59
+ def search_by_username_command(self, username: str, load_relations: bool = False) -> List[User]:
60
+ with get_session(self.tenant) as session:
61
+ statement = select(User).where(User.username.ilike(f"%{username}%"))
62
+
63
+ if load_relations:
64
+ statement = statement.options(
65
+ selectinload(User.roles),
66
+ selectinload(User.permissions)
67
+ )
68
+
69
+ results = session.exec(statement)
70
+ return results.all()
71
+
72
+ def list_all_command(self, active_only: bool = True, load_relations: bool = False) -> List[User]:
73
+ with get_session(self.tenant) as session:
74
+ statement = select(User)
75
+
76
+ if active_only:
77
+ statement = statement.where(User.is_active == True)
78
+
79
+ if load_relations:
80
+ statement = statement.options(
81
+ selectinload(User.roles),
82
+ selectinload(User.permissions)
83
+ )
84
+
85
+ results = session.exec(statement)
86
+ return results.all()
87
+
88
+ def update_command(self, user: User) -> User:
89
+ with get_session(self.tenant) as session:
90
+ db_user = session.merge(user)
91
+ session.commit()
92
+ session.refresh(db_user)
93
+ return db_user
94
+
95
+ def delete_command(self, user_id: UUID, soft_delete: bool = True) -> bool:
96
+ with get_session(self.tenant) as session:
97
+ db_user = session.get(User, user_id)
98
+ if not db_user:
99
+ return False
100
+
101
+ if soft_delete:
102
+ db_user.is_active = False
103
+ session.add(db_user)
104
+ else:
105
+ session.delete(db_user)
106
+
107
+ session.commit()
108
+ return True
109
+
110
+ def count_command(self, active_only: bool = True) -> int:
111
+ with get_session(self.tenant) as session:
112
+ statement = select(User)
113
+ if active_only:
114
+ statement = statement.where(User.is_active == True)
115
+ results = session.exec(statement)
116
+ return len(results.all())
117
+
118
+ def exists_by_username_command(self, username: str) -> bool:
119
+ with get_session(self.tenant) as session:
120
+ statement = select(User).where(User.username == username)
121
+ result = session.exec(statement).first()
122
+ return result is not None
123
+
124
+ def exists_by_email_command(self, email: str) -> bool:
125
+ with get_session(self.tenant) as session:
126
+ statement = select(User).where(User.email == email)
127
+ result = session.exec(statement).first()
128
+ return result is not None
129
+
130
+ def change_password_command(self, user_id: UUID, new_password: str) -> Optional[User]:
131
+ with get_session(self.tenant) as session:
132
+ user = session.get(User, user_id)
133
+ if not user:
134
+ return None
135
+ user.password = new_password
136
+ session.add(user)
137
+ session.commit()
138
+ session.refresh(user)
139
+ return user
140
+
141
+ # ROLES COMANDS
142
+
143
+ def get_user_roles_command(self, user_id: UUID) -> List[Role]:
144
+ with get_session(self.tenant) as session:
145
+ statement = select(User).options(selectinload(User.roles)).where(User.user_id == user_id)
146
+ user = session.exec(statement).first()
147
+ if not user:
148
+ return []
149
+ return user.roles
150
+
151
+ def has_role_command(self, user_id: UUID, role_name: str) -> bool:
152
+ with get_session(self.tenant) as session:
153
+ statement = select(User).options(selectinload(User.roles)).where(User.user_id == user_id)
154
+ user = session.exec(statement).first()
155
+ if not user:
156
+ return False
157
+ return any(role.name == role_name for role in user.roles)
158
+
159
+ def assign_role_command(self, user_id: UUID, role_id: UUID) -> Optional[User]:
160
+ with get_session(self.tenant) as session:
161
+ user_statement = select(User).options(selectinload(User.roles)).where(User.user_id == user_id)
162
+ user = session.exec(user_statement).first()
163
+ if not user:
164
+ return None
165
+
166
+ role = session.get(Role, role_id)
167
+ if not role:
168
+ return None
169
+
170
+ if role not in user.roles:
171
+ user.roles.append(role)
172
+ session.add(user)
173
+ session.commit()
174
+ session.refresh(user)
175
+
176
+ return user
177
+
178
+ def remove_role_command(self, user_id: UUID, role_id: UUID) -> Optional[User]:
179
+ with get_session(self.tenant) as session:
180
+ user_statement = select(User).options(selectinload(User.roles)).where(User.user_id == user_id)
181
+ user = session.exec(user_statement).first()
182
+ if not user:
183
+ return None
184
+
185
+ role = session.get(Role, role_id)
186
+ if not role:
187
+ return None
188
+
189
+ if role in user.roles:
190
+ user.roles.remove(role)
191
+ session.add(user)
192
+ session.commit()
193
+ session.refresh(user)
194
+
195
+ return user
196
+
197
+ # PERMISSIONS COMANDS
198
+
199
+ def get_user_permissions_command(self, user_id: UUID) -> List[Permission]:
200
+ with get_session(self.tenant) as session:
201
+ statement = select(User).options(selectinload(User.permissions)).where(User.user_id == user_id)
202
+ user = session.exec(statement).first()
203
+ if not user:
204
+ return []
205
+ return user.permissions
206
+
207
+ def has_permission_command(self, user_id: UUID, permission_name: str) -> bool:
208
+ with get_session(self.tenant) as session:
209
+ statement = select(User).options(selectinload(User.permissions)).where(User.user_id == user_id)
210
+ user = session.exec(statement).first()
211
+ if not user:
212
+ return False
213
+ return any(perm.name == permission_name for perm in user.permissions)
214
+
215
+ def assign_permission_command(self, user_id: UUID, permission_id: UUID) -> Optional[User]:
216
+ with get_session(self.tenant) as session:
217
+ user_statement = select(User).options(selectinload(User.permissions)).where(User.user_id == user_id)
218
+ user = session.exec(user_statement).first()
219
+ if not user:
220
+ return None
221
+
222
+ permission = session.get(Permission, permission_id)
223
+ if not permission:
224
+ return None
225
+
226
+ if permission not in user.permissions:
227
+ user.permissions.append(permission)
228
+ session.add(user)
229
+ session.commit()
230
+ session.refresh(user)
231
+
232
+ return user
233
+
234
+ def remove_permission_command(self, user_id: UUID, permission_id: UUID) -> Optional[User]:
235
+ with get_session(self.tenant) as session:
236
+ user_statement = select(User).options(selectinload(User.permissions)).where(User.user_id == user_id)
237
+ user = session.exec(user_statement).first()
238
+ if not user:
239
+ return None
240
+
241
+ permission = session.get(Permission, permission_id)
242
+ if not permission:
243
+ return None
244
+
245
+ if permission in user.permissions:
246
+ user.permissions.remove(permission)
247
+ session.add(user)
248
+ session.commit()
249
+ session.refresh(user)
250
+
251
+ return user
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: healthdatalayer
3
- Version: 1.0.1
3
+ Version: 1.2.0
4
4
  Summary: Health Datalayer to access data from different sources
5
5
  Author: Jesus Martinez
6
6
  Author-email: jesusmartinez@noosds.com
7
- Classifier: Programming Language :: Python :: 3.13
7
+ Classifier: Programming Language :: Python :: 3.10
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  Classifier: Operating System :: OS Independent
10
10
  Requires-Python: >=3.10
@@ -0,0 +1,94 @@
1
+ healthdatalayer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ healthdatalayer/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ healthdatalayer/config/config.py,sha256=vyqrlHDgCGpYX7V9fDn4g671lUU1RuWlSYCIazI-SqQ,689
4
+ healthdatalayer/config/db.py,sha256=b_SWTINJSVUhR0uyD4h93jPLKUzRm6Ky0tmALWbjM18,342
5
+ healthdatalayer/config/vault.py,sha256=9yUMXjaTYSnqr0npcQXDsg6Z7G3DityqpmHl1x42zS0,748
6
+ healthdatalayer/models/__init__.py,sha256=aHts_4fmmSgAGlKe-qZ9aCXjeYPBVaB-VM4LqH-y4_4,1994
7
+ healthdatalayer/models/bridge_area_floor_branch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ healthdatalayer/models/bridge_area_floor_branch/area.py,sha256=g_u6RoorLJ7XUx7qcqXLavrHxpflHGi0p77f-3RPbVU,201
9
+ healthdatalayer/models/bridge_area_floor_branch/branch.py,sha256=QmLLXQZvqWJX6NgeA4e92Owxy8d6DemSI8trbqL7ZfQ,499
10
+ healthdatalayer/models/bridge_area_floor_branch/bridge_area_floor_branch.py,sha256=Oso6XAAxTjxsxszjgihPgNDWcXNJ2G_5L27xzJ5ulvs,933
11
+ healthdatalayer/models/bridge_area_floor_branch/floor.py,sha256=uKYLOfSe-SZ4qtG7Kr_DQ8AFzv9QJ9N2HR4qqSkqX1o,204
12
+ healthdatalayer/models/bridge_area_floor_branch/room.py,sha256=nub6QIFyl6ZxGENru5KFSOzeycszD0WFIN0S0AlBfhQ,201
13
+ healthdatalayer/models/bridge_area_floor_branch/system.py,sha256=10r59kLMsLEv9cKa4hEZJoFAicVPS0rw4UNiN5nhsnI,212
14
+ healthdatalayer/models/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ healthdatalayer/models/client/address.py,sha256=rc_Vw9qWECmGcf0GGTChZZj8m6whWSFFGA3xIcsYaBk,343
16
+ healthdatalayer/models/client/client.py,sha256=DjW64iOeGKPluKLqyWTTHVste0Y3pF0VL_FvHNLtvyM,786
17
+ healthdatalayer/models/client/client_type.py,sha256=ElTYCXLkVItIhEIj2ZhXqHV872kY4A7gUuhwpm-BKjQ,261
18
+ healthdatalayer/models/client/education.py,sha256=MQN-7Oh1PdneytDmm1DZuZ7wrXzXSTeu08SeKhZ0fi8,256
19
+ healthdatalayer/models/client/emergency_contact.py,sha256=EFkn54jjhKAWIONP5mqq_qWrGBnEJY9ChMpstnhOjlc,493
20
+ healthdatalayer/models/client/gender.py,sha256=rVS_DvUpP21NqdghZ9lB-aLkv8X9YJwzu4X6VyE7pwM,247
21
+ healthdatalayer/models/client/marriage_status.py,sha256=D0OH3nx4f_aH6p-12quLsEizjxikB3HFqc3810vUFkE,273
22
+ healthdatalayer/models/client/nationality.py,sha256=k1CKQTQIJAJP_qmeYB-AkRQ1Q5x9-AYOzBBftKT-cCg,275
23
+ healthdatalayer/models/client/pathological_history.py,sha256=93kMzYQKjD_EUM_LN0eR1m7QUXCrDsid7yM_25znnPY,1013
24
+ healthdatalayer/models/client/pet.py,sha256=LG3xFn7YEmbwKz7Anz8DxEloMOyKvPvi72ymUGU1hEU,500
25
+ healthdatalayer/models/client/profession.py,sha256=eKX6Gf93qwQg2NyJsXKKbmEwQTxHvJCnOwQ5pxCpM0I,259
26
+ healthdatalayer/models/client/px.py,sha256=fIpSDcWpn5oEi-sIxoTVSBJX9IyHxnRYveiUOhLxCy0,927
27
+ healthdatalayer/models/collaborator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ healthdatalayer/models/collaborator/collaborator.py,sha256=u8iCZd5oBGDXF62KEje0mC1FkQMkqJJiXufQr6vGHk0,1000
29
+ healthdatalayer/models/collaborator/collaborator_speciality.py,sha256=TQK8dbbM7LE14MpEpWjTmcYRJCOLlBGxQwrs7zkR5ao,346
30
+ healthdatalayer/models/collaborator/collaborator_type.py,sha256=Z80IHiuLjbMl9mrLqfs-2yKjUGKkuN56T6zf9XaL934,279
31
+ healthdatalayer/models/collaborator/speciality.py,sha256=qxpiYKopYdoClB0l9QjiL6be6njJgAUmXdLuTxEqWQk,618
32
+ healthdatalayer/models/lab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ healthdatalayer/models/lab/client_lab.py,sha256=up2nu3sSf9VDs7k3p1PpDlA5Kkn-qU5jHF6eHHlFcyY,456
34
+ healthdatalayer/models/lab/measure_lab.py,sha256=CCyYxnc7cFIW1ip4E2_6Hk7FdboIY2YakPMo8_en140,352
35
+ healthdatalayer/models/lab/medical_lab.py,sha256=aK2iR4IEu-wGLkvJXEKG5yqwBGqzz0a-vFVdMrokndc,689
36
+ healthdatalayer/models/medical_visit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ healthdatalayer/models/medical_visit/medical_diagnosis.py,sha256=Y8uUJbyAN_IfvJ1Iad8YJg4VTEnwCNiuKX1v_TYQXBE,335
38
+ healthdatalayer/models/medical_visit/medical_diagnosis_visit.py,sha256=FfDwedJrIJp2YLDLaKEwHSz9OGZabosYaJmKeVBzBAs,983
39
+ healthdatalayer/models/medical_visit/medical_drug.py,sha256=q6ML900EIoxbFIVNXGXfPxhaTZ_xx3NRPG8YgEOvBPg,797
40
+ healthdatalayer/models/medical_visit/medical_drug_recipe.py,sha256=DiygpjyX72sc5jD-h9hue5kU0T4YgZyLxD_qVacnxV0,657
41
+ healthdatalayer/models/medical_visit/medical_recipe_visit.py,sha256=6c9GOSHF6yJA0fyDiNDJ4gj1MsiRfHL8GhDD1TWIjro,994
42
+ healthdatalayer/models/medical_visit/medical_visit.py,sha256=rA6dGQZiDi-PePbEwLcelL7TfqDUK3z_mZXcQ0_ghLQ,2210
43
+ healthdatalayer/models/medical_visit/organ_system_review.py,sha256=mwMUUCmrU0CWdPD5PotBE9xtl-TyrPDFhxeqxwR2AqU,1152
44
+ healthdatalayer/models/medical_visit/physical_exam.py,sha256=FI080qD_xPmzAuuIjq1AArhqfQADINZTi23qqHcHrSI,1756
45
+ healthdatalayer/models/medical_visit/visit_triage.py,sha256=IvgjGJi4FR2o4DLAViHA2Jl76JoLw1bhdqVyrUTQSMk,1077
46
+ healthdatalayer/models/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ healthdatalayer/models/user/permission.py,sha256=Yw5l5P_KVMn0_UtdyLUb93SoPZeV04pKBFCnA4__1Hs,737
48
+ healthdatalayer/models/user/permission_user.py,sha256=bc8m5gV_C8QxbmZXfTRsBUG-HgCQHJxOYTBR8tLpiRQ,306
49
+ healthdatalayer/models/user/role.py,sha256=wIRRImqJKx6nwbazc9JWjqzVScYguG4deP0KIpcbgxU,713
50
+ healthdatalayer/models/user/role_permission.py,sha256=mRMXItgI97Zqu0q9JkhjEPbn6mJQjdosibeZtRBtmMA,306
51
+ healthdatalayer/models/user/role_user.py,sha256=HBLzwY5712DISqBTxrVOrNjnUOAHSYUfX4qcABinb2M,276
52
+ healthdatalayer/models/user/user.py,sha256=T52bNoJeG5pqIEjy2Ez6lLiJA-AN1LE4HWFm-87JqsY,911
53
+ healthdatalayer/repositories/__init__.py,sha256=b8ya7gJkFq0yzF3h8G0vIiakv_uOB9u859sdBLhEZHI,2504
54
+ healthdatalayer/repositories/client_repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ healthdatalayer/repositories/client_repositories/address_repository.py,sha256=nl07z6Lt0hmthN2qUnjFkW8SihQzLbbKd07QoHK6fZw,2208
56
+ healthdatalayer/repositories/client_repositories/client_type_repository.py,sha256=9j8qundXbeMmnLiKLdd6LB7NA3LT5XDO_PKPR2juxmE,2605
57
+ healthdatalayer/repositories/client_repositories/education_repository.py,sha256=4ZS4XrcTmnBTU8iw-BFs0KortstCD2hf-nnk3knFYHI,2551
58
+ healthdatalayer/repositories/client_repositories/gender_repository.py,sha256=2V5yadB7fqdOgXwe8gk_qUKutoz--iE4hi98GemBYxE,2440
59
+ healthdatalayer/repositories/client_repositories/marriage_status_repository.py,sha256=wEuTxL5kqcapLwXImj1Mcy3eUPpsxZLTAP7kgRARDw0,2758
60
+ healthdatalayer/repositories/client_repositories/pet_repository.py,sha256=X6x7NLOuIErt7f8kq4MfsZovTU0hvQzIIsAX6KtzoMc,4770
61
+ healthdatalayer/repositories/client_repositories/profession_repository.py,sha256=IypDtVjNZXBLdeplBGoKKp4AAgs4QD_GKgYZUMFghmY,2588
62
+ healthdatalayer/repositories/client_repositories/px_repository.py,sha256=Lcn6SwfpieSDfOKt_-FlPcP1hN7OPQ0k0mIVq0rL7qY,9643
63
+ healthdatalayer/repositories/collaborator_repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ healthdatalayer/repositories/collaborator_repositories/collaborator_repository.py,sha256=PVNaprxiybt5deOtNhLYH72s2SrAbBXnqdOCkAG3VPw,6786
65
+ healthdatalayer/repositories/collaborator_repositories/collaborator_type_repository.py,sha256=jDi5dcwj_S-Ah2YSZyH8ZmSUxihXdvC6iugATFhiwGQ,2826
66
+ healthdatalayer/repositories/collaborator_repositories/speciality_repository.py,sha256=-c116KOtA4pxo9VHErG4jVGELPodxCQkmfX12MYwgLI,2908
67
+ healthdatalayer/repositories/infraestructure_repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
+ healthdatalayer/repositories/infraestructure_repositories/area_repository.py,sha256=kNsctqA5BS0rm56Mj8zoGLyb_v-JtSUG4FyjNPYr4Qw,2361
69
+ healthdatalayer/repositories/infraestructure_repositories/branch_repository.py,sha256=9bd6ksET2zVT6IXqVI3-8SuJ0MEOIEptW1YkAldPYDM,2435
70
+ healthdatalayer/repositories/infraestructure_repositories/bridge_repository.py,sha256=IIBtnAGxYF_h-CqNrejfG7L36_e6NxGMcVGumHY3Wv4,3486
71
+ healthdatalayer/repositories/infraestructure_repositories/floor_repository.py,sha256=AkTugFiB2QeQtLnM0ySR14qdYEk1PoKTD1ZNvDZSeRI,2398
72
+ healthdatalayer/repositories/infraestructure_repositories/room_repository.py,sha256=zPxpnx4cZiwHm-PvRd3wvDz12DrDTnsMqnpNXfX6vvk,2361
73
+ healthdatalayer/repositories/infraestructure_repositories/system_repository.py,sha256=dGigIKIOvMAYU1CbtyPh5pUmqyba4_cabGIAuFgIlRc,2435
74
+ healthdatalayer/repositories/lab_repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ healthdatalayer/repositories/lab_repositories/measure_lab_repository.py,sha256=q5415O99DeM9NLR1rNQLC1dE7oYP86fX7C0LDNt35qY,3142
76
+ healthdatalayer/repositories/lab_repositories/medical_lab_repository.py,sha256=fVqsss8VwSGq89bAMlEQ3U5YKinC8-I_cjvSFpRDNoA,10669
77
+ healthdatalayer/repositories/medical_visit_repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_repository.py,sha256=eZjfKY5mgX2X8mhXyFAScQrO75VKGevCxwhPk39y1-Q,2535
79
+ healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py,sha256=71UekWQNH_U_IVh7157OYWkDeKW4zYtJgUbQE1yqQfI,4611
80
+ healthdatalayer/repositories/medical_visit_repositories/medical_drug_recipe_repository.py,sha256=BDHY5aXlBvU9vimXA8hj8t9rlc8VHpCEFUp0HgdbuhA,3109
81
+ healthdatalayer/repositories/medical_visit_repositories/medical_drug_repository.py,sha256=2_cMnCu_tXad-oavW0VuNDOGBa18Aj8eS4AvRT4RElA,2369
82
+ healthdatalayer/repositories/medical_visit_repositories/medical_recipe_visit_repository.py,sha256=wmotAltMe_GO_R_8EbtwXkH76oNqq30GTC49OjlkfyY,4519
83
+ healthdatalayer/repositories/medical_visit_repositories/medical_visit_repository.py,sha256=_HttHMMJQ606iuw6zbaFgV0TnNqCht2MmiBwqqVhntI,5119
84
+ healthdatalayer/repositories/medical_visit_repositories/organ_system_review_repository.py,sha256=cWZXBCbPFjxS-nnnTprYeJQPLnEFXxvzQys_nF-jT4Q,4144
85
+ healthdatalayer/repositories/medical_visit_repositories/physical_exam_repository.py,sha256=JPKQzF68zTJrjoKygG6yG8ZsVjfMsQHPLTbRuhjqrdY,3829
86
+ healthdatalayer/repositories/medical_visit_repositories/visit_triage_repository.py,sha256=Oh49zB9ZeSIs2M0o4_czziFIwHKCEGOk9D8ScQTGQW4,3773
87
+ healthdatalayer/repositories/user_repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ healthdatalayer/repositories/user_repositories/permission_repository.py,sha256=pGLUemxlHWMURewAt9l8zzRwO90UyhG66i8I6JtuS2o,9566
89
+ healthdatalayer/repositories/user_repositories/role_repository.py,sha256=KWh_FmF84dQ4HarYNFY8hSdqEDh5wyG2RMTjCV1KnvQ,6757
90
+ healthdatalayer/repositories/user_repositories/user_repository.py,sha256=PcHLKNHIE72ganaygHZh2z7zAQ6ZIdXbHEPBpI7rN4Q,9775
91
+ healthdatalayer-1.2.0.dist-info/METADATA,sha256=nY-9KNdNNvl-y0kCahRC1uhtCEM60nONTX_WYINsXMc,827
92
+ healthdatalayer-1.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
93
+ healthdatalayer-1.2.0.dist-info/top_level.txt,sha256=6f1-gvpg533UEVuYsRJCDhdSDQUBwijyAHylyS4nG_4,16
94
+ healthdatalayer-1.2.0.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ healthdatalayer
@@ -1,10 +0,0 @@
1
- config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- config/config.py,sha256=vyqrlHDgCGpYX7V9fDn4g671lUU1RuWlSYCIazI-SqQ,689
3
- config/db.py,sha256=b_SWTINJSVUhR0uyD4h93jPLKUzRm6Ky0tmALWbjM18,342
4
- config/vault.py,sha256=9yUMXjaTYSnqr0npcQXDsg6Z7G3DityqpmHl1x42zS0,748
5
- models/__init__.py,sha256=aHts_4fmmSgAGlKe-qZ9aCXjeYPBVaB-VM4LqH-y4_4,1994
6
- repositories/__init__.py,sha256=b8ya7gJkFq0yzF3h8G0vIiakv_uOB9u859sdBLhEZHI,2504
7
- healthdatalayer-1.0.1.dist-info/METADATA,sha256=Y2pz-zYnb_EGOLcA3_QBb0Jo03RCKu_ZC9XyJZgci-c,827
8
- healthdatalayer-1.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
9
- healthdatalayer-1.0.1.dist-info/top_level.txt,sha256=S84RTy7EJk7BqzfUpsghy7n19iFi9FVqXgHKlv68GPI,27
10
- healthdatalayer-1.0.1.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- config
2
- models
3
- repositories
File without changes
File without changes
File without changes
File without changes
File without changes