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.
- healthdatalayer/config/__init__.py +0 -0
- healthdatalayer/models/bridge_area_floor_branch/__init__.py +0 -0
- healthdatalayer/models/bridge_area_floor_branch/area.py +8 -0
- healthdatalayer/models/bridge_area_floor_branch/branch.py +16 -0
- healthdatalayer/models/bridge_area_floor_branch/bridge_area_floor_branch.py +27 -0
- healthdatalayer/models/bridge_area_floor_branch/floor.py +8 -0
- healthdatalayer/models/bridge_area_floor_branch/room.py +8 -0
- healthdatalayer/models/bridge_area_floor_branch/system.py +8 -0
- healthdatalayer/models/client/__init__.py +0 -0
- healthdatalayer/models/client/address.py +13 -0
- healthdatalayer/models/client/client.py +25 -0
- healthdatalayer/models/client/client_type.py +9 -0
- healthdatalayer/models/client/education.py +9 -0
- healthdatalayer/models/client/emergency_contact.py +17 -0
- healthdatalayer/models/client/gender.py +9 -0
- healthdatalayer/models/client/marriage_status.py +9 -0
- healthdatalayer/models/client/nationality.py +10 -0
- healthdatalayer/models/client/pathological_history.py +29 -0
- healthdatalayer/models/client/pet.py +16 -0
- healthdatalayer/models/client/profession.py +9 -0
- healthdatalayer/models/client/px.py +28 -0
- healthdatalayer/models/collaborator/__init__.py +0 -0
- healthdatalayer/models/collaborator/collaborator.py +33 -0
- healthdatalayer/models/collaborator/collaborator_speciality.py +8 -0
- healthdatalayer/models/collaborator/collaborator_type.py +9 -0
- healthdatalayer/models/collaborator/speciality.py +23 -0
- healthdatalayer/models/lab/__init__.py +0 -0
- healthdatalayer/models/lab/client_lab.py +13 -0
- healthdatalayer/models/lab/measure_lab.py +11 -0
- healthdatalayer/models/lab/medical_lab.py +17 -0
- healthdatalayer/models/medical_visit/__init__.py +0 -0
- healthdatalayer/models/medical_visit/medical_diagnosis.py +12 -0
- healthdatalayer/models/medical_visit/medical_diagnosis_visit.py +25 -0
- healthdatalayer/models/medical_visit/medical_drug.py +27 -0
- healthdatalayer/models/medical_visit/medical_drug_recipe.py +18 -0
- healthdatalayer/models/medical_visit/medical_recipe_visit.py +28 -0
- healthdatalayer/models/medical_visit/medical_visit.py +51 -0
- healthdatalayer/models/medical_visit/organ_system_review.py +28 -0
- healthdatalayer/models/medical_visit/physical_exam.py +45 -0
- healthdatalayer/models/medical_visit/visit_triage.py +28 -0
- healthdatalayer/models/user/__init__.py +0 -0
- healthdatalayer/models/user/permission.py +27 -0
- healthdatalayer/models/user/permission_user.py +8 -0
- healthdatalayer/models/user/role.py +27 -0
- healthdatalayer/models/user/role_permission.py +8 -0
- healthdatalayer/models/user/role_user.py +8 -0
- healthdatalayer/models/user/user.py +30 -0
- healthdatalayer/repositories/client_repositories/__init__.py +0 -0
- healthdatalayer/repositories/client_repositories/address_repository.py +64 -0
- healthdatalayer/repositories/client_repositories/client_type_repository.py +69 -0
- healthdatalayer/repositories/client_repositories/education_repository.py +70 -0
- healthdatalayer/repositories/client_repositories/gender_repository.py +70 -0
- healthdatalayer/repositories/client_repositories/marriage_status_repository.py +70 -0
- healthdatalayer/repositories/client_repositories/pet_repository.py +126 -0
- healthdatalayer/repositories/client_repositories/profession_repository.py +70 -0
- healthdatalayer/repositories/client_repositories/px_repository.py +210 -0
- healthdatalayer/repositories/collaborator_repositories/__init__.py +0 -0
- healthdatalayer/repositories/collaborator_repositories/collaborator_repository.py +150 -0
- healthdatalayer/repositories/collaborator_repositories/collaborator_type_repository.py +69 -0
- healthdatalayer/repositories/collaborator_repositories/speciality_repository.py +75 -0
- healthdatalayer/repositories/infraestructure_repositories/__init__.py +0 -0
- healthdatalayer/repositories/infraestructure_repositories/area_repository.py +69 -0
- healthdatalayer/repositories/infraestructure_repositories/branch_repository.py +69 -0
- healthdatalayer/repositories/infraestructure_repositories/bridge_repository.py +80 -0
- healthdatalayer/repositories/infraestructure_repositories/floor_repository.py +69 -0
- healthdatalayer/repositories/infraestructure_repositories/room_repository.py +69 -0
- healthdatalayer/repositories/infraestructure_repositories/system_repository.py +69 -0
- healthdatalayer/repositories/lab_repositories/__init__.py +0 -0
- healthdatalayer/repositories/lab_repositories/measure_lab_repository.py +80 -0
- healthdatalayer/repositories/lab_repositories/medical_lab_repository.py +254 -0
- healthdatalayer/repositories/medical_visit_repositories/__init__.py +0 -0
- healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_repository.py +63 -0
- healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py +92 -0
- healthdatalayer/repositories/medical_visit_repositories/medical_drug_recipe_repository.py +70 -0
- healthdatalayer/repositories/medical_visit_repositories/medical_drug_repository.py +63 -0
- healthdatalayer/repositories/medical_visit_repositories/medical_recipe_visit_repository.py +93 -0
- healthdatalayer/repositories/medical_visit_repositories/medical_visit_repository.py +110 -0
- healthdatalayer/repositories/medical_visit_repositories/organ_system_review_repository.py +89 -0
- healthdatalayer/repositories/medical_visit_repositories/physical_exam_repository.py +89 -0
- healthdatalayer/repositories/medical_visit_repositories/visit_triage_repository.py +89 -0
- healthdatalayer/repositories/user_repositories/__init__.py +0 -0
- healthdatalayer/repositories/user_repositories/permission_repository.py +238 -0
- healthdatalayer/repositories/user_repositories/role_repository.py +174 -0
- healthdatalayer/repositories/user_repositories/user_repository.py +251 -0
- {healthdatalayer-1.0.1.dist-info → healthdatalayer-1.2.0.dist-info}/METADATA +2 -2
- healthdatalayer-1.2.0.dist-info/RECORD +94 -0
- healthdatalayer-1.2.0.dist-info/top_level.txt +1 -0
- healthdatalayer-1.0.1.dist-info/RECORD +0 -10
- healthdatalayer-1.0.1.dist-info/top_level.txt +0 -3
- {config → healthdatalayer}/__init__.py +0 -0
- {config → healthdatalayer/config}/config.py +0 -0
- {config → healthdatalayer/config}/db.py +0 -0
- {config → healthdatalayer/config}/vault.py +0 -0
- {models → healthdatalayer/models}/__init__.py +0 -0
- {repositories → healthdatalayer/repositories}/__init__.py +0 -0
- {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
|
|
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.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|