healthdatalayer 1.0.1__tar.gz → 1.2.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.

Potentially problematic release.


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

Files changed (101) hide show
  1. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0}/PKG-INFO +2 -2
  2. healthdatalayer-1.2.0/healthdatalayer/config/__init__.py +0 -0
  3. healthdatalayer-1.2.0/healthdatalayer/models/bridge_area_floor_branch/__init__.py +0 -0
  4. healthdatalayer-1.2.0/healthdatalayer/models/bridge_area_floor_branch/area.py +8 -0
  5. healthdatalayer-1.2.0/healthdatalayer/models/bridge_area_floor_branch/branch.py +16 -0
  6. healthdatalayer-1.2.0/healthdatalayer/models/bridge_area_floor_branch/bridge_area_floor_branch.py +27 -0
  7. healthdatalayer-1.2.0/healthdatalayer/models/bridge_area_floor_branch/floor.py +8 -0
  8. healthdatalayer-1.2.0/healthdatalayer/models/bridge_area_floor_branch/room.py +8 -0
  9. healthdatalayer-1.2.0/healthdatalayer/models/bridge_area_floor_branch/system.py +8 -0
  10. healthdatalayer-1.2.0/healthdatalayer/models/client/__init__.py +0 -0
  11. healthdatalayer-1.2.0/healthdatalayer/models/client/address.py +13 -0
  12. healthdatalayer-1.2.0/healthdatalayer/models/client/client.py +25 -0
  13. healthdatalayer-1.2.0/healthdatalayer/models/client/client_type.py +9 -0
  14. healthdatalayer-1.2.0/healthdatalayer/models/client/education.py +9 -0
  15. healthdatalayer-1.2.0/healthdatalayer/models/client/emergency_contact.py +17 -0
  16. healthdatalayer-1.2.0/healthdatalayer/models/client/gender.py +9 -0
  17. healthdatalayer-1.2.0/healthdatalayer/models/client/marriage_status.py +9 -0
  18. healthdatalayer-1.2.0/healthdatalayer/models/client/nationality.py +10 -0
  19. healthdatalayer-1.2.0/healthdatalayer/models/client/pathological_history.py +29 -0
  20. healthdatalayer-1.2.0/healthdatalayer/models/client/pet.py +16 -0
  21. healthdatalayer-1.2.0/healthdatalayer/models/client/profession.py +9 -0
  22. healthdatalayer-1.2.0/healthdatalayer/models/client/px.py +28 -0
  23. healthdatalayer-1.2.0/healthdatalayer/models/collaborator/__init__.py +0 -0
  24. healthdatalayer-1.2.0/healthdatalayer/models/collaborator/collaborator.py +33 -0
  25. healthdatalayer-1.2.0/healthdatalayer/models/collaborator/collaborator_speciality.py +8 -0
  26. healthdatalayer-1.2.0/healthdatalayer/models/collaborator/collaborator_type.py +9 -0
  27. healthdatalayer-1.2.0/healthdatalayer/models/collaborator/speciality.py +23 -0
  28. healthdatalayer-1.2.0/healthdatalayer/models/lab/__init__.py +0 -0
  29. healthdatalayer-1.2.0/healthdatalayer/models/lab/client_lab.py +13 -0
  30. healthdatalayer-1.2.0/healthdatalayer/models/lab/measure_lab.py +11 -0
  31. healthdatalayer-1.2.0/healthdatalayer/models/lab/medical_lab.py +17 -0
  32. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/__init__.py +0 -0
  33. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/medical_diagnosis.py +12 -0
  34. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/medical_diagnosis_visit.py +25 -0
  35. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/medical_drug.py +27 -0
  36. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/medical_drug_recipe.py +18 -0
  37. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/medical_recipe_visit.py +28 -0
  38. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/medical_visit.py +51 -0
  39. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/organ_system_review.py +28 -0
  40. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/physical_exam.py +45 -0
  41. healthdatalayer-1.2.0/healthdatalayer/models/medical_visit/visit_triage.py +28 -0
  42. healthdatalayer-1.2.0/healthdatalayer/models/user/__init__.py +0 -0
  43. healthdatalayer-1.2.0/healthdatalayer/models/user/permission.py +27 -0
  44. healthdatalayer-1.2.0/healthdatalayer/models/user/permission_user.py +8 -0
  45. healthdatalayer-1.2.0/healthdatalayer/models/user/role.py +27 -0
  46. healthdatalayer-1.2.0/healthdatalayer/models/user/role_permission.py +8 -0
  47. healthdatalayer-1.2.0/healthdatalayer/models/user/role_user.py +8 -0
  48. healthdatalayer-1.2.0/healthdatalayer/models/user/user.py +30 -0
  49. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/__init__.py +0 -0
  50. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/address_repository.py +64 -0
  51. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/client_type_repository.py +69 -0
  52. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/education_repository.py +70 -0
  53. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/gender_repository.py +70 -0
  54. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/marriage_status_repository.py +70 -0
  55. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/pet_repository.py +126 -0
  56. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/profession_repository.py +70 -0
  57. healthdatalayer-1.2.0/healthdatalayer/repositories/client_repositories/px_repository.py +210 -0
  58. healthdatalayer-1.2.0/healthdatalayer/repositories/collaborator_repositories/__init__.py +0 -0
  59. healthdatalayer-1.2.0/healthdatalayer/repositories/collaborator_repositories/collaborator_repository.py +150 -0
  60. healthdatalayer-1.2.0/healthdatalayer/repositories/collaborator_repositories/collaborator_type_repository.py +69 -0
  61. healthdatalayer-1.2.0/healthdatalayer/repositories/collaborator_repositories/speciality_repository.py +75 -0
  62. healthdatalayer-1.2.0/healthdatalayer/repositories/infraestructure_repositories/__init__.py +0 -0
  63. healthdatalayer-1.2.0/healthdatalayer/repositories/infraestructure_repositories/area_repository.py +69 -0
  64. healthdatalayer-1.2.0/healthdatalayer/repositories/infraestructure_repositories/branch_repository.py +69 -0
  65. healthdatalayer-1.2.0/healthdatalayer/repositories/infraestructure_repositories/bridge_repository.py +80 -0
  66. healthdatalayer-1.2.0/healthdatalayer/repositories/infraestructure_repositories/floor_repository.py +69 -0
  67. healthdatalayer-1.2.0/healthdatalayer/repositories/infraestructure_repositories/room_repository.py +69 -0
  68. healthdatalayer-1.2.0/healthdatalayer/repositories/infraestructure_repositories/system_repository.py +69 -0
  69. healthdatalayer-1.2.0/healthdatalayer/repositories/lab_repositories/__init__.py +0 -0
  70. healthdatalayer-1.2.0/healthdatalayer/repositories/lab_repositories/measure_lab_repository.py +80 -0
  71. healthdatalayer-1.2.0/healthdatalayer/repositories/lab_repositories/medical_lab_repository.py +254 -0
  72. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/__init__.py +0 -0
  73. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_repository.py +63 -0
  74. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/medical_diagnosis_visit_repository.py +92 -0
  75. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/medical_drug_recipe_repository.py +70 -0
  76. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/medical_drug_repository.py +63 -0
  77. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/medical_recipe_visit_repository.py +93 -0
  78. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/medical_visit_repository.py +110 -0
  79. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/organ_system_review_repository.py +89 -0
  80. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/physical_exam_repository.py +89 -0
  81. healthdatalayer-1.2.0/healthdatalayer/repositories/medical_visit_repositories/visit_triage_repository.py +89 -0
  82. healthdatalayer-1.2.0/healthdatalayer/repositories/user_repositories/__init__.py +0 -0
  83. healthdatalayer-1.2.0/healthdatalayer/repositories/user_repositories/permission_repository.py +238 -0
  84. healthdatalayer-1.2.0/healthdatalayer/repositories/user_repositories/role_repository.py +174 -0
  85. healthdatalayer-1.2.0/healthdatalayer/repositories/user_repositories/user_repository.py +251 -0
  86. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0}/healthdatalayer.egg-info/PKG-INFO +2 -2
  87. healthdatalayer-1.2.0/healthdatalayer.egg-info/SOURCES.txt +97 -0
  88. healthdatalayer-1.2.0/healthdatalayer.egg-info/top_level.txt +1 -0
  89. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0}/setup.py +2 -2
  90. healthdatalayer-1.0.1/healthdatalayer.egg-info/SOURCES.txt +0 -13
  91. healthdatalayer-1.0.1/healthdatalayer.egg-info/top_level.txt +0 -3
  92. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0}/README.md +0 -0
  93. {healthdatalayer-1.0.1/config → healthdatalayer-1.2.0/healthdatalayer}/__init__.py +0 -0
  94. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0/healthdatalayer}/config/config.py +0 -0
  95. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0/healthdatalayer}/config/db.py +0 -0
  96. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0/healthdatalayer}/config/vault.py +0 -0
  97. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0/healthdatalayer}/models/__init__.py +0 -0
  98. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0/healthdatalayer}/repositories/__init__.py +0 -0
  99. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0}/healthdatalayer.egg-info/dependency_links.txt +0 -0
  100. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0}/healthdatalayer.egg-info/requires.txt +0 -0
  101. {healthdatalayer-1.0.1 → healthdatalayer-1.2.0}/setup.cfg +0 -0
@@ -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,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
@@ -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")
@@ -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
+ )
@@ -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")
@@ -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)
@@ -0,0 +1,28 @@
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
+
7
+ from models import MedicalDrugRecipe
8
+
9
+ if TYPE_CHECKING:
10
+ from models.medical_visit.medical_drug import MedicalDrug
11
+ from models import MedicalVisit
12
+
13
+ class MedicalRecipeVisit(SQLModel, table=True):
14
+ __tablename__ = "medical_recipe_visit"
15
+
16
+ medical_recipe_visit_id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
17
+ completed_supplied: bool
18
+ completed_supplied_date: Optional[datetime] = Field(default=None)
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_recipe_visits")
22
+
23
+ is_active: bool = Field(default=True)
24
+
25
+ medical_drugs: List["MedicalDrug"] = Relationship(
26
+ back_populates="medical_recipe_visits",
27
+ link_model=MedicalDrugRecipe
28
+ )
@@ -0,0 +1,51 @@
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 import Collaborator
7
+
8
+ from models import Speciality
9
+ from models import BridgeAreaFloorBranch
10
+ if TYPE_CHECKING:
11
+ from models import Px
12
+ from models import MedicalDiagnosisVisit
13
+ from models import MedicalRecipeVisit
14
+ from models import OrganSystemReview
15
+ from models import PhysicalExam
16
+ class MedicalVisit(SQLModel, table=True):
17
+ __tablename__ = "medical_visit"
18
+
19
+ medical_visit_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
20
+ visit_date: Optional[datetime] = Field(default=None)
21
+
22
+ collaborator_id:Optional[uuid.UUID]=Field(default=None,foreign_key="collaborator.collaborator_id")
23
+ collaborator: Optional[Collaborator] = Relationship()
24
+
25
+ client_id:Optional[uuid.UUID]=Field(default=None,foreign_key="px.client_id")
26
+ client: Optional["Px"] = Relationship()
27
+
28
+ speciality_id:Optional[uuid.UUID]=Field(default=None,foreign_key="speciality.speciality_id")
29
+ speciality: Optional[Speciality] = Relationship()
30
+
31
+ status_visit:str
32
+
33
+ next_followup_visit_id:Optional[uuid.UUID]=Field(default=None,foreign_key="medical_visit.medical_visit_id")
34
+
35
+ overall_diagnosis:str
36
+
37
+ bridge_area_floor_branch_id:Optional[uuid.UUID]=Field(default=None,foreign_key="bridge_area_floor_branch.bridge_area_floor_branch_id")
38
+ bridge_area_floor_branch: Optional[BridgeAreaFloorBranch] = Relationship()
39
+
40
+ reason_visit:Optional[str]=Field(default=None)
41
+ rest: Optional[bool] = Field(default=None)
42
+ rest_hours: Optional[int] = Field(default=None)
43
+ rest_date_start: Optional[datetime] = Field(default=None)
44
+ rest_date_end: Optional[datetime] = Field(default=None)
45
+
46
+ is_active: bool = Field(default=True)
47
+
48
+ medical_diagnosis_visits: List["MedicalDiagnosisVisit"] = Relationship(back_populates="medical_visit")
49
+ medical_recipe_visits: List["MedicalRecipeVisit"] = Relationship(back_populates="medical_visit")
50
+ organ_system_reviews: List["OrganSystemReview"] = Relationship(back_populates="medical_visit")
51
+ physical_exams: List["PhysicalExam"] = Relationship(back_populates="medical_visit")
@@ -0,0 +1,28 @@
1
+ import uuid
2
+ from typing import Optional,TYPE_CHECKING
3
+ from sqlmodel import SQLModel, Field, Relationship
4
+ if TYPE_CHECKING:
5
+ from models import MedicalVisit
6
+
7
+ class OrganSystemReview(SQLModel, table=True):
8
+ __tablename__ = "organ_system_review"
9
+
10
+ organ_system_review_id:uuid.UUID=Field(default_factory=uuid.uuid4,primary_key=True)
11
+
12
+ medical_visit_id: Optional[uuid.UUID] = Field(default=None, foreign_key="medical_visit.medical_visit_id")
13
+ medical_visit: Optional["MedicalVisit"] = Relationship(back_populates="organ_system_reviews")
14
+
15
+ comment:str
16
+
17
+ skin_attachment: Optional[bool] = Field(default=None)
18
+ sense_organs: Optional[bool] = Field(default=None)
19
+ breathing: Optional[bool] = Field(default=None)
20
+ cardiovascular: Optional[bool] = Field(default=None)
21
+ digestive: Optional[bool] = Field(default=None)
22
+ genitourinary: Optional[bool] = Field(default=None)
23
+ skeletal_muscle: Optional[bool] = Field(default=None)
24
+ endocrine: Optional[bool] = Field(default=None)
25
+ heme_lifatic: Optional[bool] = Field(default=None)
26
+ nervous: Optional[bool] = Field(default=None)
27
+
28
+ is_active: bool = Field(default=True)