healthdatalayer 1.0.0__tar.gz → 1.1.0__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.
Files changed (99) hide show
  1. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/PKG-INFO +3 -3
  2. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/healthdatalayer.egg-info/PKG-INFO +3 -3
  3. healthdatalayer-1.1.0/healthdatalayer.egg-info/SOURCES.txt +96 -0
  4. healthdatalayer-1.1.0/models/bridge_area_floor_branch/__init__.py +0 -0
  5. healthdatalayer-1.1.0/models/bridge_area_floor_branch/area.py +8 -0
  6. healthdatalayer-1.1.0/models/bridge_area_floor_branch/branch.py +16 -0
  7. healthdatalayer-1.1.0/models/bridge_area_floor_branch/bridge_area_floor_branch.py +27 -0
  8. healthdatalayer-1.1.0/models/bridge_area_floor_branch/floor.py +8 -0
  9. healthdatalayer-1.1.0/models/bridge_area_floor_branch/room.py +8 -0
  10. healthdatalayer-1.1.0/models/bridge_area_floor_branch/system.py +8 -0
  11. healthdatalayer-1.1.0/models/client/__init__.py +0 -0
  12. healthdatalayer-1.1.0/models/client/address.py +13 -0
  13. healthdatalayer-1.1.0/models/client/client.py +25 -0
  14. healthdatalayer-1.1.0/models/client/client_type.py +9 -0
  15. healthdatalayer-1.1.0/models/client/education.py +9 -0
  16. healthdatalayer-1.1.0/models/client/emergency_contact.py +17 -0
  17. healthdatalayer-1.1.0/models/client/gender.py +9 -0
  18. healthdatalayer-1.1.0/models/client/marriage_status.py +9 -0
  19. healthdatalayer-1.1.0/models/client/nationality.py +10 -0
  20. healthdatalayer-1.1.0/models/client/pathological_history.py +29 -0
  21. healthdatalayer-1.1.0/models/client/pet.py +16 -0
  22. healthdatalayer-1.1.0/models/client/profession.py +9 -0
  23. healthdatalayer-1.1.0/models/client/px.py +28 -0
  24. healthdatalayer-1.1.0/models/collaborator/__init__.py +0 -0
  25. healthdatalayer-1.1.0/models/collaborator/collaborator.py +33 -0
  26. healthdatalayer-1.1.0/models/collaborator/collaborator_speciality.py +8 -0
  27. healthdatalayer-1.1.0/models/collaborator/collaborator_type.py +9 -0
  28. healthdatalayer-1.1.0/models/collaborator/speciality.py +23 -0
  29. healthdatalayer-1.1.0/models/lab/__init__.py +0 -0
  30. healthdatalayer-1.1.0/models/lab/client_lab.py +13 -0
  31. healthdatalayer-1.1.0/models/lab/measure_lab.py +11 -0
  32. healthdatalayer-1.1.0/models/lab/medical_lab.py +17 -0
  33. healthdatalayer-1.1.0/models/medical_visit/__init__.py +0 -0
  34. healthdatalayer-1.1.0/models/medical_visit/medical_diagnosis.py +12 -0
  35. healthdatalayer-1.1.0/models/medical_visit/medical_diagnosis_visit.py +25 -0
  36. healthdatalayer-1.1.0/models/medical_visit/medical_drug.py +27 -0
  37. healthdatalayer-1.1.0/models/medical_visit/medical_drug_recipe.py +18 -0
  38. healthdatalayer-1.1.0/models/medical_visit/medical_recipe_visit.py +28 -0
  39. healthdatalayer-1.1.0/models/medical_visit/medical_visit.py +51 -0
  40. healthdatalayer-1.1.0/models/medical_visit/organ_system_review.py +28 -0
  41. healthdatalayer-1.1.0/models/medical_visit/physical_exam.py +45 -0
  42. healthdatalayer-1.1.0/models/medical_visit/visit_triage.py +28 -0
  43. healthdatalayer-1.1.0/models/user/__init__.py +0 -0
  44. healthdatalayer-1.1.0/models/user/permission.py +27 -0
  45. healthdatalayer-1.1.0/models/user/permission_user.py +8 -0
  46. healthdatalayer-1.1.0/models/user/role.py +27 -0
  47. healthdatalayer-1.1.0/models/user/role_permission.py +8 -0
  48. healthdatalayer-1.1.0/models/user/role_user.py +8 -0
  49. healthdatalayer-1.1.0/models/user/user.py +30 -0
  50. healthdatalayer-1.1.0/repositories/client_repositories/__init__.py +0 -0
  51. healthdatalayer-1.1.0/repositories/client_repositories/address_repository.py +64 -0
  52. healthdatalayer-1.1.0/repositories/client_repositories/client_type_repository.py +69 -0
  53. healthdatalayer-1.1.0/repositories/client_repositories/education_repository.py +70 -0
  54. healthdatalayer-1.1.0/repositories/client_repositories/gender_repository.py +70 -0
  55. healthdatalayer-1.1.0/repositories/client_repositories/marriage_status_repository.py +70 -0
  56. healthdatalayer-1.1.0/repositories/client_repositories/pet_repository.py +126 -0
  57. healthdatalayer-1.1.0/repositories/client_repositories/profession_repository.py +70 -0
  58. healthdatalayer-1.1.0/repositories/client_repositories/px_repository.py +210 -0
  59. healthdatalayer-1.1.0/repositories/collaborator_repositories/__init__.py +0 -0
  60. healthdatalayer-1.1.0/repositories/collaborator_repositories/collaborator_repository.py +150 -0
  61. healthdatalayer-1.1.0/repositories/collaborator_repositories/collaborator_type_repository.py +69 -0
  62. healthdatalayer-1.1.0/repositories/collaborator_repositories/speciality_repository.py +75 -0
  63. healthdatalayer-1.1.0/repositories/infraestructure_repositories/__init__.py +0 -0
  64. healthdatalayer-1.1.0/repositories/infraestructure_repositories/area_repository.py +69 -0
  65. healthdatalayer-1.1.0/repositories/infraestructure_repositories/branch_repository.py +69 -0
  66. healthdatalayer-1.1.0/repositories/infraestructure_repositories/bridge_repository.py +80 -0
  67. healthdatalayer-1.1.0/repositories/infraestructure_repositories/floor_repository.py +69 -0
  68. healthdatalayer-1.1.0/repositories/infraestructure_repositories/room_repository.py +69 -0
  69. healthdatalayer-1.1.0/repositories/infraestructure_repositories/system_repository.py +69 -0
  70. healthdatalayer-1.1.0/repositories/lab_repositories/__init__.py +0 -0
  71. healthdatalayer-1.1.0/repositories/lab_repositories/measure_lab_repository.py +80 -0
  72. healthdatalayer-1.1.0/repositories/lab_repositories/medical_lab_repository.py +254 -0
  73. healthdatalayer-1.1.0/repositories/medical_visit_repositories/__init__.py +0 -0
  74. healthdatalayer-1.1.0/repositories/medical_visit_repositories/medical_diagnosis_repository.py +63 -0
  75. healthdatalayer-1.1.0/repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py +92 -0
  76. healthdatalayer-1.1.0/repositories/medical_visit_repositories/medical_drug_recipe_repository.py +70 -0
  77. healthdatalayer-1.1.0/repositories/medical_visit_repositories/medical_drug_repository.py +63 -0
  78. healthdatalayer-1.1.0/repositories/medical_visit_repositories/medical_recipe_visit_repository.py +93 -0
  79. healthdatalayer-1.1.0/repositories/medical_visit_repositories/medical_visit_repository.py +110 -0
  80. healthdatalayer-1.1.0/repositories/medical_visit_repositories/organ_system_review_repository.py +89 -0
  81. healthdatalayer-1.1.0/repositories/medical_visit_repositories/physical_exam_repository.py +89 -0
  82. healthdatalayer-1.1.0/repositories/medical_visit_repositories/visit_triage_repository.py +89 -0
  83. healthdatalayer-1.1.0/repositories/user_repositories/__init__.py +0 -0
  84. healthdatalayer-1.1.0/repositories/user_repositories/permission_repository.py +238 -0
  85. healthdatalayer-1.1.0/repositories/user_repositories/role_repository.py +174 -0
  86. healthdatalayer-1.1.0/repositories/user_repositories/user_repository.py +251 -0
  87. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/setup.py +3 -3
  88. healthdatalayer-1.0.0/healthdatalayer.egg-info/SOURCES.txt +0 -13
  89. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/README.md +0 -0
  90. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/config/__init__.py +0 -0
  91. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/config/config.py +0 -0
  92. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/config/db.py +0 -0
  93. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/config/vault.py +0 -0
  94. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/healthdatalayer.egg-info/dependency_links.txt +0 -0
  95. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/healthdatalayer.egg-info/requires.txt +0 -0
  96. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/healthdatalayer.egg-info/top_level.txt +0 -0
  97. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/models/__init__.py +0 -0
  98. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/repositories/__init__.py +0 -0
  99. {healthdatalayer-1.0.0 → healthdatalayer-1.1.0}/setup.cfg +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: healthdatalayer
3
- Version: 1.0.0
3
+ Version: 1.1.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
- Requires-Python: >=3.13
10
+ Requires-Python: >=3.10
11
11
  Description-Content-Type: text/markdown
12
12
  Requires-Dist: setuptools
13
13
  Requires-Dist: wheel
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: healthdatalayer
3
- Version: 1.0.0
3
+ Version: 1.1.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
- Requires-Python: >=3.13
10
+ Requires-Python: >=3.10
11
11
  Description-Content-Type: text/markdown
12
12
  Requires-Dist: setuptools
13
13
  Requires-Dist: wheel
@@ -0,0 +1,96 @@
1
+ README.md
2
+ setup.py
3
+ config/__init__.py
4
+ config/config.py
5
+ config/db.py
6
+ config/vault.py
7
+ healthdatalayer.egg-info/PKG-INFO
8
+ healthdatalayer.egg-info/SOURCES.txt
9
+ healthdatalayer.egg-info/dependency_links.txt
10
+ healthdatalayer.egg-info/requires.txt
11
+ healthdatalayer.egg-info/top_level.txt
12
+ models/__init__.py
13
+ models/bridge_area_floor_branch/__init__.py
14
+ models/bridge_area_floor_branch/area.py
15
+ models/bridge_area_floor_branch/branch.py
16
+ models/bridge_area_floor_branch/bridge_area_floor_branch.py
17
+ models/bridge_area_floor_branch/floor.py
18
+ models/bridge_area_floor_branch/room.py
19
+ models/bridge_area_floor_branch/system.py
20
+ models/client/__init__.py
21
+ models/client/address.py
22
+ models/client/client.py
23
+ models/client/client_type.py
24
+ models/client/education.py
25
+ models/client/emergency_contact.py
26
+ models/client/gender.py
27
+ models/client/marriage_status.py
28
+ models/client/nationality.py
29
+ models/client/pathological_history.py
30
+ models/client/pet.py
31
+ models/client/profession.py
32
+ models/client/px.py
33
+ models/collaborator/__init__.py
34
+ models/collaborator/collaborator.py
35
+ models/collaborator/collaborator_speciality.py
36
+ models/collaborator/collaborator_type.py
37
+ models/collaborator/speciality.py
38
+ models/lab/__init__.py
39
+ models/lab/client_lab.py
40
+ models/lab/measure_lab.py
41
+ models/lab/medical_lab.py
42
+ models/medical_visit/__init__.py
43
+ models/medical_visit/medical_diagnosis.py
44
+ models/medical_visit/medical_diagnosis_visit.py
45
+ models/medical_visit/medical_drug.py
46
+ models/medical_visit/medical_drug_recipe.py
47
+ models/medical_visit/medical_recipe_visit.py
48
+ models/medical_visit/medical_visit.py
49
+ models/medical_visit/organ_system_review.py
50
+ models/medical_visit/physical_exam.py
51
+ models/medical_visit/visit_triage.py
52
+ models/user/__init__.py
53
+ models/user/permission.py
54
+ models/user/permission_user.py
55
+ models/user/role.py
56
+ models/user/role_permission.py
57
+ models/user/role_user.py
58
+ models/user/user.py
59
+ repositories/__init__.py
60
+ repositories/client_repositories/__init__.py
61
+ repositories/client_repositories/address_repository.py
62
+ repositories/client_repositories/client_type_repository.py
63
+ repositories/client_repositories/education_repository.py
64
+ repositories/client_repositories/gender_repository.py
65
+ repositories/client_repositories/marriage_status_repository.py
66
+ repositories/client_repositories/pet_repository.py
67
+ repositories/client_repositories/profession_repository.py
68
+ repositories/client_repositories/px_repository.py
69
+ repositories/collaborator_repositories/__init__.py
70
+ repositories/collaborator_repositories/collaborator_repository.py
71
+ repositories/collaborator_repositories/collaborator_type_repository.py
72
+ repositories/collaborator_repositories/speciality_repository.py
73
+ repositories/infraestructure_repositories/__init__.py
74
+ repositories/infraestructure_repositories/area_repository.py
75
+ repositories/infraestructure_repositories/branch_repository.py
76
+ repositories/infraestructure_repositories/bridge_repository.py
77
+ repositories/infraestructure_repositories/floor_repository.py
78
+ repositories/infraestructure_repositories/room_repository.py
79
+ repositories/infraestructure_repositories/system_repository.py
80
+ repositories/lab_repositories/__init__.py
81
+ repositories/lab_repositories/measure_lab_repository.py
82
+ repositories/lab_repositories/medical_lab_repository.py
83
+ repositories/medical_visit_repositories/__init__.py
84
+ repositories/medical_visit_repositories/medical_diagnosis_repository.py
85
+ repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py
86
+ repositories/medical_visit_repositories/medical_drug_recipe_repository.py
87
+ repositories/medical_visit_repositories/medical_drug_repository.py
88
+ repositories/medical_visit_repositories/medical_recipe_visit_repository.py
89
+ repositories/medical_visit_repositories/medical_visit_repository.py
90
+ repositories/medical_visit_repositories/organ_system_review_repository.py
91
+ repositories/medical_visit_repositories/physical_exam_repository.py
92
+ repositories/medical_visit_repositories/visit_triage_repository.py
93
+ repositories/user_repositories/__init__.py
94
+ repositories/user_repositories/permission_repository.py
95
+ repositories/user_repositories/role_repository.py
96
+ repositories/user_repositories/user_repository.py
@@ -0,0 +1,8 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel, Field
3
+
4
+ class Area(SQLModel, table=True):
5
+ __tablename__ = "area"
6
+
7
+ area_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
@@ -0,0 +1,16 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel, Field, Relationship
3
+ from typing import Optional
4
+
5
+ from models import System
6
+
7
+ class Branch(SQLModel, table=True):
8
+ __tablename__ = "branch"
9
+
10
+ branch_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
11
+ name: str
12
+ location_x: Optional[float] = None
13
+ location_y: Optional[float] = None
14
+
15
+ system_id: Optional[uuid.UUID] = Field(default=None, foreign_key="system.system_id")
16
+ system: Optional[System] = Relationship()
@@ -0,0 +1,27 @@
1
+ import uuid
2
+ from typing import Optional
3
+ from sqlmodel import SQLModel, Field, Relationship
4
+
5
+ from .area import Area
6
+ from .branch import Branch
7
+ from .floor import Floor
8
+ from .room import Room
9
+
10
+ class BridgeAreaFloorBranch(SQLModel, table=True):
11
+ __tablename__ = "bridge_area_floor_branch"
12
+
13
+ bridge_area_floor_branch_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
14
+
15
+ area_id:Optional[uuid.UUID]=Field(default=None,foreign_key="area.area_id")
16
+ area: Optional[Area] = Relationship()
17
+
18
+ branch_id:Optional[uuid.UUID]=Field(default=None,foreign_key="branch.branch_id")
19
+ branch: Optional[Branch] = Relationship()
20
+
21
+ floor_id:Optional[uuid.UUID]=Field(default=None,foreign_key="floor.floor_id")
22
+ floor: Optional[Floor] = Relationship()
23
+
24
+ room_id:Optional[uuid.UUID]=Field(default=None,foreign_key="room.room_id")
25
+ room: Optional[Room] = Relationship()
26
+
27
+ is_active: bool = Field(default=True)
@@ -0,0 +1,8 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel, Field
3
+
4
+ class Floor(SQLModel, table=True):
5
+ __tablename__ = "floor"
6
+
7
+ floor_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
@@ -0,0 +1,8 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel, Field
3
+
4
+ class Room(SQLModel, table=True):
5
+ __tablename__ = "room"
6
+
7
+ room_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
@@ -0,0 +1,8 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel, Field
3
+
4
+ class System(SQLModel, table=True):
5
+ __tablename__ = "system"
6
+
7
+ system_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
8
+ name: str
File without changes
@@ -0,0 +1,13 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class Address(SQLModel,table=True):
5
+ __tablename__ = "address"
6
+
7
+ address_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ postal_code:str = Field(default=None)
9
+ state:str
10
+ country:str
11
+ city:str
12
+ neighborhood:str
13
+ is_active: bool = Field(default=True)
@@ -0,0 +1,25 @@
1
+ import uuid
2
+ from datetime import datetime
3
+ from typing import Optional, TYPE_CHECKING
4
+ from sqlmodel import SQLModel, Field, Relationship
5
+
6
+ if TYPE_CHECKING:
7
+ from .address import Address
8
+ from .gender import Gender
9
+
10
+ class Client(SQLModel):
11
+ __abstract__ = True
12
+
13
+ client_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
14
+ first_name: str
15
+ birth_date: Optional[datetime] = Field(default=None)
16
+ identification: str
17
+
18
+ gender_id: Optional[uuid.UUID] = Field(default=None, foreign_key="gender.gender_id")
19
+ address_id: Optional[uuid.UUID] = Field(default=None, foreign_key="address.address_id")
20
+
21
+ blood_type: Optional[str] = None
22
+ is_active: bool = Field(default=True)
23
+
24
+ Client.gender = Relationship()
25
+ Client.address = Relationship()
@@ -0,0 +1,9 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class ClientType(SQLModel,table=True):
5
+ __tablename__ = "client_type"
6
+
7
+ client_type_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
9
+ is_active: bool = Field(default=True)
@@ -0,0 +1,9 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class Education(SQLModel,table=True):
5
+ __tablename__ = "education"
6
+
7
+ education_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
9
+ is_active: bool = Field(default=True)
@@ -0,0 +1,17 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field, Relationship
3
+ from typing import Optional
4
+
5
+ from models.client.px import Px
6
+
7
+ class EmergencyContact(SQLModel,table=True):
8
+ __tablename__ = "emergency_contact"
9
+
10
+ emergency_contact_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
11
+
12
+ client_id:Optional[uuid.UUID]=Field(default=None,foreign_key="px.client_id")
13
+ client: Optional[Px] = Relationship()
14
+
15
+ name:str
16
+ phone:str
17
+ is_active: bool = Field(default=True)
@@ -0,0 +1,9 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class Gender(SQLModel,table=True):
5
+ __tablename__ = "gender"
6
+
7
+ gender_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
9
+ is_active: bool = Field(default=True)
@@ -0,0 +1,9 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class MarriageStatus(SQLModel,table=True):
5
+ __tablename__ = "marriage_status"
6
+
7
+ marriage_status_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
9
+ is_active: bool = Field(default=True)
@@ -0,0 +1,10 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class Nationality(SQLModel,table=True):
5
+ __tablename__ = "nationality"
6
+
7
+ nationality_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
9
+ code:str
10
+ is_active: bool = Field(default=True)
@@ -0,0 +1,29 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field,Relationship
3
+ from typing import Optional
4
+
5
+ from models.client.px import Px
6
+
7
+ class PathologicalHistory(SQLModel,table=True):
8
+ __tablename__ = "pathological_history"
9
+
10
+ pathological_history_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
11
+
12
+ client_id:Optional[uuid.UUID]=Field(default=None,foreign_key="px.client_id")
13
+ client: Optional[Px] = Relationship()
14
+
15
+ type_name:str
16
+
17
+ heart_disease: Optional[bool] = Field(default=None)
18
+ hypertension: Optional[bool] = Field(default=None)
19
+ cardiovascular_disease: Optional[bool] = Field(default=None)
20
+ endocrine_metabolic: Optional[bool] = Field(default=None)
21
+ cancer: Optional[bool] = Field(default=None)
22
+ tuberculosis: Optional[bool] = Field(default=None)
23
+ mental_illness: Optional[bool] = Field(default=None)
24
+ malformation: Optional[bool] = Field(default=None)
25
+ other: Optional[bool] = Field(default=None)
26
+
27
+ comment:str
28
+
29
+ is_active: bool = Field(default=True)
@@ -0,0 +1,16 @@
1
+ import uuid
2
+ from models import Client
3
+ from typing import Optional
4
+ from sqlmodel import Field, Relationship
5
+
6
+ from .client_type import ClientType
7
+ from .px import Px
8
+
9
+ class Pet(Client, table=True):
10
+ __tablename__ = "pet"
11
+
12
+ parent_id:Optional[uuid.UUID]=Field(default=None,foreign_key="px.client_id")
13
+ parent: Optional[Px] = Relationship()
14
+
15
+ client_type_id:Optional[uuid.UUID]=Field(default=None,foreign_key="client_type.client_type_id")
16
+ client_type: Optional[ClientType] = Relationship()
@@ -0,0 +1,9 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class Profession(SQLModel,table=True):
5
+ __tablename__ = "profession"
6
+
7
+ profession_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
9
+ is_active: bool = Field(default=True)
@@ -0,0 +1,28 @@
1
+ from typing import Optional, TYPE_CHECKING
2
+ from sqlmodel import Field, Relationship
3
+ import uuid
4
+
5
+ from models import Client
6
+
7
+
8
+ if TYPE_CHECKING:
9
+ from models import ClientLab
10
+
11
+
12
+ class Px(Client, table=True):
13
+ __tablename__ = "px"
14
+
15
+ last_name: str
16
+ phone: Optional[str] = None
17
+ email: Optional[str] = None
18
+
19
+ marriage_status_id: Optional[uuid.UUID] = Field(default=None, foreign_key="marriage_status.marriage_status_id")
20
+ profession_id: Optional[uuid.UUID] = Field(default=None, foreign_key="profession.profession_id")
21
+ education_id: Optional[uuid.UUID] = Field(default=None, foreign_key="education.education_id")
22
+ user_id: Optional[uuid.UUID] = Field(default=None, foreign_key="user.user_id")
23
+
24
+ Px.marriage_status = Relationship()
25
+ Px.profession = Relationship()
26
+ Px.education = Relationship()
27
+ Px.user = Relationship()
28
+ Px.medical_labs = Relationship(back_populates="pxs", link_model="ClientLab")
File without changes
@@ -0,0 +1,33 @@
1
+ import uuid
2
+ from typing import Optional, List, TYPE_CHECKING
3
+ from sqlmodel import SQLModel, Field, Relationship
4
+
5
+ from models import User
6
+ from models import CollaboratorSpeciality
7
+
8
+
9
+ if TYPE_CHECKING:
10
+ from models import Speciality
11
+ from models import CollaboratorType
12
+
13
+
14
+ class Collaborator(SQLModel, table=True):
15
+ __tablename__ = "collaborator"
16
+
17
+ collaborator_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
18
+ name: str
19
+ ruc: str
20
+ code: str
21
+
22
+ collaborator_type_id: Optional[uuid.UUID] = Field(default=None, foreign_key="collaborator_type.collaborator_type_id")
23
+ collaborator_type: Optional["CollaboratorType"] = Relationship()
24
+
25
+ user_id: Optional[uuid.UUID] = Field(default=None, foreign_key="user.user_id")
26
+ user: Optional[User] = Relationship()
27
+
28
+ is_active: bool = Field(default=True)
29
+
30
+ specialties: List["Speciality"] = Relationship(
31
+ back_populates="collaborators",
32
+ link_model=CollaboratorSpeciality
33
+ )
@@ -0,0 +1,8 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class CollaboratorSpeciality(SQLModel,table=True):
5
+ __tablename__ = "collaborator_speciality"
6
+
7
+ speciality_id: uuid.UUID = Field(foreign_key="speciality.speciality_id", primary_key=True)
8
+ collaborator_id: uuid.UUID = Field(foreign_key="collaborator.collaborator_id", primary_key=True)
@@ -0,0 +1,9 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+
4
+ class CollaboratorType(SQLModel,table=True):
5
+ __tablename__ = "collaborator_type"
6
+
7
+ collaborator_type_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+ name:str
9
+ is_active: bool = Field(default=True)
@@ -0,0 +1,23 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field
3
+ from typing import List, TYPE_CHECKING
4
+ from sqlmodel import Relationship
5
+
6
+ from .collaborator_speciality import CollaboratorSpeciality
7
+
8
+ if TYPE_CHECKING:
9
+ from .collaborator import Collaborator
10
+
11
+ class Speciality(SQLModel,table=True):
12
+ __tablename__ = "speciality"
13
+
14
+ speciality_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
15
+ subspeciality:str
16
+ name:str
17
+
18
+ is_active: bool = Field(default=True)
19
+
20
+ collaborators: List["Collaborator"] = Relationship(
21
+ back_populates="specialties",
22
+ link_model=CollaboratorSpeciality
23
+ )
File without changes
@@ -0,0 +1,13 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel,Field,Relationship
3
+ from typing import Optional, TYPE_CHECKING
4
+
5
+ if TYPE_CHECKING:
6
+ from models.client.px import Px
7
+
8
+ class ClientLab(SQLModel,table=True):
9
+ __tablename__ = "client_lab"
10
+
11
+ client_id: uuid.UUID = Field(foreign_key="px.client_id", primary_key=True)
12
+ client: Optional["Px"] = Relationship()
13
+ medical_lab_id: uuid.UUID = Field(foreign_key="medical_lab.medical_lab_id", primary_key=True)
@@ -0,0 +1,11 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel, Field, Relationship
3
+
4
+ class MeasureLab(SQLModel, table=True):
5
+ __tablename__ = "measure_lab"
6
+
7
+ measure_lab_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
8
+ name: str
9
+ is_active: bool = Field(default=True)
10
+
11
+ MeasureLab.medical_labs = Relationship(back_populates="measure_lab")
@@ -0,0 +1,17 @@
1
+ import uuid
2
+ from typing import Optional,List,TYPE_CHECKING
3
+ from sqlmodel import SQLModel, Field, Relationship
4
+ from .measure_lab import MeasureLab
5
+ if TYPE_CHECKING:
6
+ from .client_lab import ClientLab
7
+
8
+ class MedicalLab(SQLModel, table=True):
9
+ __tablename__ = "medical_lab"
10
+
11
+ medical_lab_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
12
+ parameter: str
13
+ measure_lab_id: Optional[uuid.UUID] = Field(default=None, foreign_key="measure_lab.measure_lab_id")
14
+ is_active: bool = Field(default=True)
15
+
16
+ MedicalLab.measure_lab = Relationship(back_populates="medical_labs")
17
+ MedicalLab.pxs = Relationship(back_populates="medical_labs", link_model="ClientLab")
File without changes
@@ -0,0 +1,12 @@
1
+ import uuid
2
+ from sqlmodel import SQLModel, Field
3
+
4
+ class MedicalDiagnosis(SQLModel, table=True):
5
+ __tablename__ = "medical_diagnosis"
6
+
7
+ medical_diagnosis_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
8
+
9
+ name:str
10
+ cie_10_code: str = Field(index=True, max_length=10)
11
+
12
+ is_active: bool = Field(default=True)
@@ -0,0 +1,25 @@
1
+ import uuid
2
+ from datetime import datetime
3
+ from typing import Optional, TYPE_CHECKING
4
+ from sqlmodel import SQLModel, Field, Relationship
5
+ from models import MedicalDiagnosis
6
+
7
+ if TYPE_CHECKING:
8
+ from models import MedicalVisit
9
+
10
+ class MedicalDiagnosisVisit(SQLModel, table=True):
11
+ __tablename__ = "medical_diagnosis_visit"
12
+
13
+ medical_diagnosis_visit_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
14
+ diagnosis_date: Optional[datetime] = Field(default=None)
15
+ comments: str
16
+
17
+ medical_diagnosis_id: Optional[uuid.UUID] = Field(default=None, foreign_key="medical_diagnosis.medical_diagnosis_id")
18
+ medical_diagnosis: Optional[MedicalDiagnosis] = Relationship()
19
+
20
+ medical_visit_id: Optional[uuid.UUID] = Field(default=None, foreign_key="medical_visit.medical_visit_id")
21
+ medical_visit: Optional["MedicalVisit"] = Relationship(back_populates="medical_diagnosis_visits")
22
+
23
+ type_diagnosis: str
24
+
25
+ is_active: bool = Field(default=True)
@@ -0,0 +1,27 @@
1
+ import uuid
2
+ from datetime import datetime
3
+ from typing import Optional, List, TYPE_CHECKING
4
+ from sqlmodel import SQLModel, Field, Relationship
5
+
6
+ from models.medical_visit.medical_drug_recipe import MedicalDrugRecipe
7
+
8
+ if TYPE_CHECKING:
9
+ from models.medical_visit.medical_recipe_visit import MedicalRecipeVisit
10
+
11
+ class MedicalDrug(SQLModel, table=True):
12
+ __tablename__ = "medical_drug"
13
+
14
+ medical_drug_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
15
+
16
+ drug_name:str
17
+ stock:int
18
+ drug_code:str
19
+ supply_date: Optional[datetime] = Field(default=None)
20
+ public_price:float
21
+
22
+ is_active: bool = Field(default=True)
23
+
24
+ medical_recipe_visits: List["MedicalRecipeVisit"] = Relationship(
25
+ back_populates="medical_drugs",
26
+ link_model=MedicalDrugRecipe
27
+ )
@@ -0,0 +1,18 @@
1
+ import uuid
2
+ from datetime import datetime
3
+ from typing import Optional
4
+ from sqlmodel import SQLModel, Field
5
+
6
+ class MedicalDrugRecipe(SQLModel, table=True):
7
+ __tablename__ = "medical_drug_recipe"
8
+
9
+ medical_drug_recipe_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
10
+
11
+ medical_drug_id: uuid.UUID = Field(foreign_key="medical_drug.medical_drug_id", primary_key=True)
12
+ medical_recipe_visit_id: uuid.UUID = Field(foreign_key="medical_recipe_visit.medical_recipe_visit_id", primary_key=True)
13
+
14
+ quantity:int
15
+ suplied:bool
16
+ suplied_date: Optional[datetime] = Field(default=None)
17
+
18
+ is_active: bool = Field(default=True)