this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Update docs (#3282)

* Initial doc setup

* fix makefile

* install missing dependencies

* install required dependencies for build

* fix warnings

authored by

Aakash Singh and committed by
GitHub
75be1cfc 00afad16

+270 -2893
+4 -1
.github/workflows/docs.yml
··· 21 21 steps: 22 22 - uses: actions/checkout@v5 23 23 24 + - name: Install dependencies 25 + run: sudo apt-get install -y libpq-dev 26 + 24 27 - uses: actions/setup-python@v6 25 28 with: 26 29 python-version: "3.13" ··· 30 33 run: pip install pipenv 31 34 32 35 - name: Install dependencies 33 - run: pipenv sync --categories "docs" 36 + run: pipenv sync --categories "packages docs" 34 37 35 38 - name: Build docs 36 39 run: |
+1
.gitignore
··· 55 55 56 56 # Sphinx documentation 57 57 docs/_build/ 58 + docs/source/generated/ 58 59 59 60 # PyBuilder 60 61 target/
+3 -3
Pipfile
··· 77 77 Faker = "==33.3.0" 78 78 79 79 [docs] 80 - furo = "==2024.8.6" 81 - sphinx = "==8.1.3" 82 - myst-parser = "==4.0.0" 80 + sphinx = "==8.2.3" 81 + furo = "==2025.7.19" 82 + myst-parser = "==4.0.1" 83 83 84 84 [requires] 85 85 python_version = "3.13"
+41 -26
Pipfile.lock
··· 1 1 { 2 2 "_meta": { 3 3 "hash": { 4 - "sha256": "dd9a4b8f388d97e73e82c7c47d6ca2f5b919bc7a5e29e8fc6b8353b2110ca311" 4 + "sha256": "d4960092da9010300967cc13098b8c2d1614820ba68951f64d7bc4d1f0ff1304" 5 5 }, 6 6 "pipfile-spec": 6, 7 7 "requires": { ··· 3193 3193 } 3194 3194 }, 3195 3195 "docs": { 3196 + "accessible-pygments": { 3197 + "hashes": [ 3198 + "sha256:40918d3e6a2b619ad424cb91e556bd3bd8865443d9f22f1dcdf79e33c8046872", 3199 + "sha256:88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7" 3200 + ], 3201 + "markers": "python_version >= '3.9'", 3202 + "version": "==0.0.5" 3203 + }, 3196 3204 "alabaster": { 3197 3205 "hashes": [ 3198 3206 "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", ··· 3211 3219 }, 3212 3220 "beautifulsoup4": { 3213 3221 "hashes": [ 3214 - "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", 3215 - "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" 3222 + "sha256:5e70131382930e7c3de33450a2f54a63d5e4b19386eab43a5b34d594268f3695", 3223 + "sha256:642085eaa22233aceadff9c69651bc51e8bf3f874fb6d7104ece2beb24b47c4a" 3216 3224 ], 3217 3225 "markers": "python_full_version >= '3.7.0'", 3218 - "version": "==4.13.4" 3226 + "version": "==4.13.5" 3219 3227 }, 3220 3228 "certifi": { 3221 3229 "hashes": [ ··· 3320 3328 }, 3321 3329 "furo": { 3322 3330 "hashes": [ 3323 - "sha256:6cd97c58b47813d3619e63e9081169880fbe331f0ca883c871ff1f3f11814f5c", 3324 - "sha256:b63e4cee8abfc3136d3bc03a3d45a76a850bada4d6374d24c1716b0e01394a01" 3331 + "sha256:4164b2cafcf4023a59bb3c594e935e2516f6b9d35e9a5ea83d8f6b43808fe91f", 3332 + "sha256:bdea869822dfd2b494ea84c0973937e35d1575af088b6721a29c7f7878adc9e3" 3325 3333 ], 3326 3334 "index": "pypi", 3327 3335 "markers": "python_version >= '3.8'", 3328 - "version": "==2024.8.6" 3336 + "version": "==2025.7.19" 3329 3337 }, 3330 3338 "idna": { 3331 3339 "hashes": [ ··· 3444 3452 }, 3445 3453 "myst-parser": { 3446 3454 "hashes": [ 3447 - "sha256:851c9dfb44e36e56d15d05e72f02b80da21a9e0d07cba96baf5e2d476bb91531", 3448 - "sha256:b9317997552424448c6096c2558872fdb6f81d3ecb3a40ce84a7518798f3f28d" 3455 + "sha256:5cfea715e4f3574138aecbf7d54132296bfd72bb614d31168f48c477a830a7c4", 3456 + "sha256:9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d" 3449 3457 ], 3450 3458 "index": "pypi", 3451 3459 "markers": "python_version >= '3.10'", 3452 - "version": "==4.0.0" 3460 + "version": "==4.0.1" 3453 3461 }, 3454 3462 "packaging": { 3455 3463 "hashes": [ ··· 3528 3536 }, 3529 3537 "requests": { 3530 3538 "hashes": [ 3531 - "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", 3532 - "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" 3539 + "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", 3540 + "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf" 3541 + ], 3542 + "markers": "python_version >= '3.9'", 3543 + "version": "==2.32.5" 3544 + }, 3545 + "roman-numerals-py": { 3546 + "hashes": [ 3547 + "sha256:9da2ad2fb670bcf24e81070ceb3be72f6c11c440d73bd579fbeca1e9f330954c", 3548 + "sha256:be4bf804f083a4ce001b5eb7e3c0862479d10f94c936f6c4e5f250aa5ff5bd2d" 3533 3549 ], 3534 - "index": "pypi", 3535 - "markers": "python_version >= '3.8'", 3536 - "version": "==2.32.4" 3550 + "markers": "python_version >= '3.9'", 3551 + "version": "==3.1.0" 3537 3552 }, 3538 3553 "snowballstemmer": { 3539 3554 "hashes": [ ··· 3545 3560 }, 3546 3561 "soupsieve": { 3547 3562 "hashes": [ 3548 - "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", 3549 - "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" 3563 + "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", 3564 + "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f" 3550 3565 ], 3551 - "markers": "python_version >= '3.8'", 3552 - "version": "==2.7" 3566 + "markers": "python_version >= '3.9'", 3567 + "version": "==2.8" 3553 3568 }, 3554 3569 "sphinx": { 3555 3570 "hashes": [ 3556 - "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2", 3557 - "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927" 3571 + "sha256:398ad29dee7f63a75888314e9424d40f52ce5a6a87ae88e7071e80af296ec348", 3572 + "sha256:4405915165f13521d875a8c29c8970800a0141c14cc5416a38feca4ea5d9b9c3" 3558 3573 ], 3559 3574 "index": "pypi", 3560 - "markers": "python_version >= '3.10'", 3561 - "version": "==8.1.3" 3575 + "markers": "python_version >= '3.11'", 3576 + "version": "==8.2.3" 3562 3577 }, 3563 3578 "sphinx-basic-ng": { 3564 3579 "hashes": [ ··· 3618 3633 }, 3619 3634 "typing-extensions": { 3620 3635 "hashes": [ 3621 - "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", 3622 - "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" 3636 + "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", 3637 + "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" 3623 3638 ], 3624 3639 "markers": "python_version >= '3.9'", 3625 - "version": "==4.14.1" 3640 + "version": "==4.15.0" 3626 3641 }, 3627 3642 "urllib3": { 3628 3643 "hashes": [
+2 -2
README.md
··· 3 3 <p align="center"> 4 4 <a href="https://ohc.network"> 5 5 <picture> 6 - <source media="(prefers-color-scheme: dark)" srcset="./care/static/images/logos/light-logo.svg"> 7 - <img alt="care logo" src="./care/static/images/logos/black-logo.svg" width="300"> 6 + <source media="(prefers-color-scheme: dark)" srcset="./care/static/images/logos/logo-dark.svg"> 7 + <img alt="care logo" src="./care/static/images/logos/logo-light.svg" width="300"> 8 8 </picture> 9 9 </a> 10 10 </p>
care/emr/api/__init__.py

This is a binary file and will not be displayed.

+3 -3
care/emr/reports/discharge_summary.py
··· 153 153 / "staticfiles" 154 154 / "images" 155 155 / "logos" 156 - / "black-logo.svg" 156 + / "logo-light.svg" 157 157 ) 158 158 159 - data["logo_path"] = "black-logo.svg" 159 + data["logo_path"] = "logo-light.svg" 160 160 with tempfile.TemporaryDirectory() as tmpdir: 161 161 template = Path(tmpdir) / "template.typ" 162 162 template.write_text( ··· 168 168 ) 169 169 ) 170 170 171 - logo_dest = Path(tmpdir) / "black-logo.svg" 171 + logo_dest = Path(tmpdir) / "logo-light.svg" 172 172 logo_dest.write_text(logo_path.read_text()) 173 173 174 174 subprocess.run( # noqa: S603
+13 -5
care/emr/resources/questionnaire/utils.py
··· 439 439 def collect_and_validate_enable_when_questions( 440 440 questions, responses, questionnaire_obj, errors, parent=None 441 441 ): 442 - """ 443 - Walk the questions and: 444 - - If enable_when fails → check if it (or its children) were answered → error 445 - - Otherwise recurse into groups and keep the question 446 - Returns the filtered list of “enabled” questions. 442 + """Filter questions by ``enable_when`` rules and record related errors. 443 + 444 + Algorithm: 445 + 446 + - If a question's ``enable_when`` evaluates to False and the question (or any 447 + of its descendant questions) has answers, an ``enable_when_failed`` error 448 + is appended to ``errors``. 449 + - Enabled groups are traversed recursively and pruned so that only their 450 + enabled descendants remain. 451 + 452 + Returns: 453 + list: The filtered list of enabled questions (with nested structure 454 + preserved for groups that remain enabled). 447 455 """ 448 456 449 457 def any_answered(q, resp_map):
+18 -7
care/facility/models/patient_consultation.py
··· 251 251 return f"{self.patient.name}<>{self.facility.name}" 252 252 253 253 def save(self, *args, **kwargs): 254 - """ 255 - # Removing Patient Hospital Change on Referral 256 - if not self.pk or self.referred_to is not None: 257 - # pk is None when the consultation is created 258 - # referred to is not null when the person is being referred to a new facility 259 - self.patient.facility = self.referred_to or self.facility 260 - self.patient.save() 254 + """Persist the consultation and sync related patient fields. 255 + 256 + Currently this method updates the patient's ``death_datetime`` if it 257 + changed here. 258 + 259 + Historical logic that updated the patient's facility on referral has 260 + been intentionally removed. For reference, the deprecated logic looked 261 + like this: 262 + 263 + .. code-block:: python 264 + 265 + # Removed: Patient hospital change on referral 266 + # if not self.pk or self.referred_to is not None: 267 + # # pk is None when the consultation is created 268 + # # referred_to is not null when the person is being referred 269 + # # to a new facility 270 + # self.patient.facility = self.referred_to or self.facility 271 + # self.patient.save() 261 272 """ 262 273 if self.death_datetime and self.patient.death_datetime != self.death_datetime: 263 274 self.patient.death_datetime = self.death_datetime
+12 -7
care/security/authorization/base.py
··· 10 10 11 11 class AuthorizationHandler: 12 12 """ 13 - This is the base class for Authorization Handlers 14 - Authorization handler must define a list of actions that can be performed and define the methods that 15 - actually perform the authorization action. 13 + Base class for Authorization Handlers. 16 14 17 - All Authz methods would be of the signature ( user, obj , **kwargs ) 18 - obj refers to the obj which the user is seeking permission to. obj can also be a string or any datatype as long 19 - as the logic can handle the type. 15 + Handlers must define a list of actions that can be performed and implement 16 + the corresponding ``can_<action>()`` or ``get_<query>()`` methods that 17 + perform the authorization logic. 18 + 19 + All authorization methods use the signature ``(user, obj, **kwargs)``. 20 + ``obj`` refers to the target object for which permission is being 21 + evaluated. It may also be a string or any other type as long as the logic 22 + accounts for it. 20 23 21 - Queries are actions that return a queryset as the response. 24 + Notes: 25 + * Actions (``can_`` prefixed) return booleans. 26 + * Queries (``get_`` prefixed) return querysets or collections. 22 27 """ 23 28 24 29 actions = []
care/static/images/favicons/favicon.ico

This is a binary file and will not be displayed.

care/static/images/favicons/favicon.png

This is a binary file and will not be displayed.

care/static/images/logos/black-logo.svg care/static/images/logos/logo-light.svg
care/static/images/logos/light-logo.svg care/static/images/logos/logo-dark.svg
+2 -2
care/templates/base.html
··· 16 16 <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script> 17 17 <![endif]--> 18 18 19 - <link rel="icon" href="{% static 'images/favicons/favicon.png' %}"> 19 + <link rel="icon" href="{% static 'images/favicons/favicon.ico' %}"> 20 20 21 21 {% block css %} 22 22 ··· 42 42 <div class="container mx-auto p-4 flex flex-wrap items-center md:flex-no-wrap"> 43 43 <div class="mr-4 md:mr-8"> 44 44 <a class="navbar-brand" href="{% url 'home' %}"> 45 - <img class="block w-24 h-auto" src="{% static 'images/logos/black-logo.svg' %}" alt="" /> 45 + <img class="block w-24 h-auto" src="{% static 'images/logos/logo-light.svg' %}" alt="" /> 46 46 </a> 47 47 </div> 48 48 </div>
+16 -12
care/utils/models/validators.py
··· 68 68 @deconstructible 69 69 class PhoneNumberValidator(RegexValidator): 70 70 """ 71 - Any one of the specified types of phone numbers are considered valid. 71 + Validate phone numbers against one or more allowed types. 72 + 73 + Any one of the specified types passed to the validator is considered 74 + sufficient for the value to be valid. 72 75 73 76 Allowed types: 74 - - `mobile` (Indian XOR International) 75 - - `indian_mobile` (Indian only) 76 - - `international_mobile` (International only) 77 - - `landline` (Indian only) 78 - - `support` (Indian only) 79 77 80 - Example usage: 78 + - ``mobile`` (Indian XOR International) 79 + - ``indian_mobile`` (Indian only) 80 + - ``international_mobile`` (International only) 81 + - ``landline`` (Indian only) 82 + - ``support`` (Indian only) 81 83 82 - ``` 83 - field = models.CharField( 84 - validators=[PhoneNumberValidator(types=("mobile", "landline", "support"))]) 85 - ) 86 - ``` 84 + Example usage:: 85 + 86 + field = models.CharField( 87 + validators=[ 88 + PhoneNumberValidator(types=("mobile", "landline", "support")) 89 + ] 90 + ) 87 91 """ 88 92 89 93 indian_mobile_number_regex = r"^(?=^\+91)(^\+91[6-9]\d{9}$)"
+121 -4
docs/conf.py
··· 12 12 # 13 13 14 14 # -- Project information ----------------------------------------------------- 15 + import os 16 + import sys 17 + from datetime import date 18 + from pathlib import Path 19 + 20 + import django 21 + 22 + # import github_links 23 + 24 + sys.path.insert(0, str(Path("..").resolve())) 25 + 26 + os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.base" 27 + django.setup() 15 28 16 29 project = "Care" 17 - copyright = """2023, Open Healthcare Network""" # noqa: A001 30 + copyright = f"{date.today().year}, Open Healthcare Network" # noqa: A001, DTZ011 18 31 author = "ohcnetwork" 19 32 20 33 ··· 23 36 # Add any Sphinx extension module names here, as strings. They can be 24 37 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 25 38 # ones. 26 - extensions = ["myst_parser"] 39 + extensions = [ 40 + "myst_parser", 41 + "sphinx.ext.napoleon", 42 + "sphinx.ext.intersphinx", 43 + "sphinx.ext.extlinks", 44 + # "sphinx.ext.viewcode", 45 + "sphinx.ext.autodoc", 46 + "sphinx.ext.apidoc", 47 + "sphinx.ext.doctest", 48 + ] 49 + 50 + # autosummary_generate = True 51 + 52 + 53 + apidoc_modules = [ 54 + { 55 + "path": "../care", 56 + "destination": "source/generated", 57 + "exclude_patterns": ["**/test*", "**/migrations*", "**/migrations_old*"], 58 + "max_depth": 4, 59 + "follow_links": False, 60 + "separate_modules": True, 61 + "include_private": False, 62 + "no_headings": False, 63 + "module_first": True, 64 + "implicit_namespaces": False, 65 + }, 66 + ] 67 + 68 + autodoc_inherit_docstrings = False 69 + 70 + autodoc_default_options = { 71 + "members": True, 72 + "member-order": "bysource", 73 + "special-members": "__init__", 74 + "undoc-members": False, 75 + "show-inheritance": True, 76 + "inherited-members": False, 77 + } 78 + 79 + extlinks = { 80 + "commit": ("https://github.com/ohcnetwork/care/commit/%s", "%s"), 81 + # A file or directory. GitHub redirects from blob to tree if needed. 82 + "source": ("https://github.com/ohcnetwork/care/blob/develop/%s", "%s"), 83 + "issue": ("https://github.com/ohcnetwork/care/issues/%s", "#%s"), 84 + "pr": ("https://github.com/ohcnetwork/care/pull/%s", "PR #%s"), 85 + } 27 86 28 87 # Add any paths that contain templates here, relative to this directory. 29 88 templates_path = ["_templates"] ··· 31 90 # List of patterns, relative to source directory, that match files and 32 91 # directories to ignore when looking for source files. 33 92 # This pattern also affects html_static_path and html_extra_path. 34 - exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] 93 + exclude_patterns = [ 94 + "_build", 95 + "Thumbs.db", 96 + ".DS_Store", 97 + ".git", 98 + "**/tests*", 99 + "**/migrations*", 100 + ] 101 + 102 + 103 + # Spelling check needs an additional module that is not installed by default. 104 + # Add it only if spelling check is requested so docs can be generated without 105 + # it. 106 + if "spelling" in sys.argv: 107 + extensions.append("sphinxcontrib.spelling") 108 + 109 + # Spelling language. 110 + spelling_lang = "en_US" 111 + 112 + # Location of word list. 113 + spelling_word_list_filename = "spelling_wordlist" 114 + 115 + spelling_warning = True 116 + 117 + # The reST default role (used for this markup: `text`) to use for all 118 + # documents. 119 + # default_role = "default-role-error" 120 + 121 + # If true, '()' will be appended to :func: etc. cross-reference text. 122 + add_function_parentheses = True 123 + 124 + # If true, the current module name will be prepended to all description 125 + # unit titles (such as .. function::). 126 + add_module_names = False 127 + 128 + # The name of the Pygments (syntax highlighting) style to use. 129 + pygments_style = "trac" 130 + 131 + # Links to Python's docs should reference the most recent version of the 3.x 132 + # branch, which is located at this URL. 133 + intersphinx_mapping = { 134 + "python": ("https://docs.python.org/3", None), 135 + "sphinx": ("https://www.sphinx-doc.org/en/master", None), 136 + "psycopg": ("https://www.psycopg.org/psycopg3/docs", None), 137 + "django": ("https://docs.djangoproject.com/en/stable/", None), 138 + } 35 139 36 140 37 141 # -- Options for HTML output ------------------------------------------------- ··· 44 148 # Add any paths that contain custom static files (such as style sheets) here, 45 149 # relative to this directory. They are copied after the builtin static files, 46 150 # so a file named "default.css" will overwrite the builtin "default.css". 47 - html_static_path = ["_static"] 151 + html_static_path = ["_static", "../care/static"] 152 + html_favicon = "../care/static/images/favicons/favicon.ico" 153 + html_theme_options = { 154 + "light_logo": "images/logos/logo-light.svg", 155 + "dark_logo": "images/logos/logo-dark.svg", 156 + } 157 + 158 + # def version_github_linkcode_resolve(domain, info): 159 + # return github_links.github_linkcode_resolve( 160 + # domain, info, version=version, next_version=django_next_version 161 + # ) 162 + 163 + 164 + # linkcode_resolve = version_github_linkcode_resolve
+5 -1
docs/databases/backup.rst docs/setup/database-backup.rst
··· 4 4 This page explains how to automate the backup process of a Docker database on a daily basis and restore the backup snapshot created by the `backup script <../../scripts/backup.sh>`_. 5 5 6 6 Note: This documentation assumes that you are using a Linux-based system. 7 + 7 8 ------------------------------------------------------------------------------- 8 9 9 10 Here's how the script works ··· 34 35 Automate the cronjob 35 36 ~~~~~~~~~~~~~~~~~~~~ 36 37 Note: Make sure you are inside the care directory at the time of executing the following. 38 + 37 39 ------------------------------------------------------------------------------- 38 40 39 41 Open up a crontab: ··· 71 73 sudo systemctl status cron 72 74 73 75 Verify the cron job 74 - ~~~~~~~~~~~~~~~~~ 76 + ~~~~~~~~~~~~~~~~~~~ 77 + 75 78 To verify the cron job is working: 76 79 77 80 1. Check the system logs for cron activity, which is usually somewhere in ··· 88 91 We are basically deleting the container's existing database and creating a new database with the same name. Then we will use ``pg_restore`` to restore the database. Run the following commands in your terminal. 89 92 90 93 Make sure you have stopped all the containers except the db before proceeding. And be inside the care directory at the time of executing the following. 94 + 91 95 ------------------------------------------------------------------------------ 92 96 93 97 Delete the existing database:
+11
docs/development/index.rst
··· 1 + Developing Care 2 + =============== 3 + 4 + 5 + .. toctree:: 6 + :maxdepth: 4 7 + 8 + github-repo/index 9 + local-setup 10 + nix-development 11 + pluggable-apps
-32
docs/django-commands/configuration.rst
··· 1 - Django Commands 2 - =============== 3 - 4 - All Django commands must be executed by invoking :code:`python manage.py`, so for example, if the command is :code:`do_something` then the correct way to call the command is :code:`python manage.py do_something`. Make sure that the command is run in the root directory of the project and any virtual environment present must be activated before running the command. 5 - 6 - +---------------------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 7 - | command | Arguments | Description | 8 - +=====================+===============================================================+==================================================================================================================================================================================================================================================================================================================================+ 9 - | createsuperuser | None | This command is used to create a superuser in the care application, Superusers are able to log in through the Django Admin panel and Access Scopes do not apply to them. Please take caution when creating them, apply strict password policies for accounts created as superusers. ideally, there should only be one superuser. | 10 - | | | | 11 - | | | Example Invocation: :code:`python manage.py createsuperuser` | 12 - +---------------------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 13 - | load_fixtures | None | This command is used to load fixtures for testing and development purposes only. User "devdistrictadmin" with password "Coronasafe@123" is populated, invokes :code:`load_data kerala` and :code:`seed_data`. This command will intentionally fail to run in staging or production environment. | 14 - | | | | 15 - | | | Example Invocation: :code:`python manage.py load_fixtures` | 16 - +---------------------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 17 - | load_data | state_name | This command is used to load all the District/Lsg/Ward Level data for a given state, The data that is imported is scraped from various sources, The admin can change this data at any point through the admin panel, If the state name is given as "all" then all available data is imported into care. | 18 - | | | | 19 - | | | Example Invocation: :code:`python manage.py load_data kerala` | 20 - +---------------------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 21 - | seed_data | None | This command loads all static data that the application needs to run, this includes inventory seed data for Oxygen, Medical Tests data, etc. All this data can be changed by the superuser from the admin panel. | 22 - | | | | 23 - | | | Example Invocation: :code:`python manage.py seed_data` | 24 - +---------------------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 25 - | load_skill_data | None | This command loads default skills | 26 - | | | | 27 - | | | Example Invocation: :code:`python manage.py load_skill_data` | 28 - +---------------------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 29 - | summarize | None | The summary jobs are run by Celery every 10 mins, but we can force Django to summarize the current data and update the summary table with this command | 30 - | | | | 31 - | | | Example Invocation: :code:`python manage.py summarize` | 32 - +---------------------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-7
docs/django-configuration/configuration.rst
··· 1 - Environment Variables 2 - ===================== 3 - 4 - ``MIN_ENCOUNTER_DATE`` 5 - ---------------------- 6 - Default value is `2020-01-01`. This is the minimum date for a possible consultation encounter. 7 - Example: `MIN_ENCOUNTER_DATE=2000-01-01`
docs/github-repo/configuration.rst docs/development/github-repo/index.rst
-96
docs/glossary/configuration.rst
··· 1 - =============== 2 - Glossary 3 - =============== 4 - 5 - **CARE** is a comprehensive capacity and patient management tool, built specifically for the COVID Pandemic Management. It is a web-based application hosted at  https://care.ohcnetwork.network/ 6 - 7 - This document gives an overview of the Care System for the developers who are willing to contribute to it. 8 - 9 - Hierarchy 10 - ************ 11 - 12 - Care Systems maintain and process data up to **Ward** Level right from State. This means the each record of a model will be associated up to Ward Level. 13 - 14 - .. image:: images/Hierarchy.png 15 - 16 - Models 17 - ************ 18 - 19 - 20 - Facility 21 - ----------- 22 - 23 - - Facilities represent **Hospitals** associated with the Ward. 24 - - There are 15+ Facility **Types** in the Care System with its `ID Number Conventions <https://github.com/ohcnetwork/care/blob/6b39d0c8c2cd65c5f86db3fc667456f2d28db70c/care/facility/models/facility.py#L44>`_ 25 - - Each Facility record has its Basic information, Bed Capacity, Oxygen Cylinder Capacity and Doctor Capacity. 26 - - Reference: Karunya Arogya Suraksha Padhathi `(KASP) <https://sha.kerala.gov.in/karunya-arogya-suraksha-padhathi/>`_ - Health Care Scheme 27 - 28 - .. image:: images/Facility.png 29 - 30 - 31 - Inventory 32 - -------------- 33 - 34 - - Inventory refers to all the items, goods, merchandise, and materials held by a Facility. 35 - - Inventory Management helps us keep track of stocks of the items. 36 - - Examples of Inventories could be PPE Kits, Rice, Masks etc. 37 - - We can also set minimum quantities to each inventories. We will be notified when we run out of stock. 38 - 39 - .. image:: images/Inventory.png 40 - 41 - 42 - Capacity 43 - -------------- 44 - 45 - 46 - - Each facility can hold the details of **Bed Capacity and Doctor Count.** 47 - - Bed Capacity details would include Type of Beds, Occupied Beds and Total Beds. 48 - - Doctor Count details would include Type of Doctor and their count. 49 - 50 - .. image:: images/Capacity.png 51 - 52 - 53 - Location 54 - -------------- 55 - 56 - - Facilities can have multiple locations. These locations has name and description which gives flexibility to customize according to Facility’s need. 57 - - Bed Details can be added to each locations if need. 58 - - *Examples*: Different Departments and Wards 59 - 60 - .. image:: images/Location.png 61 - 62 - 63 - Assets 64 - ------------ 65 - 66 - - Assets refers to things such as instrument, equipment and other properties. 67 - - Assets are different from Inventory. Inventories are based on the stocks and quantities. 68 - - Assets are **linked with a specific location** of a Facility. 69 - - Assets can be moved from one location to another location within a Facility. 70 - 71 - .. image:: images/Assets.png 72 - 73 - 74 - External Results 75 - -------------------- 76 - 77 - - External Results hold the data of test results that comes from External Sources. 78 - - Examples would include RT-PCR / ANTIGEN test from a private lab. 79 - - These Result can be used to create Patient if they are found to be COVID suspect. 80 - 81 - .. image:: images/External.png 82 - 83 - 84 - Patient 85 - -------- 86 - 87 - - Patients should be created under a Facility. 88 - - Patients can be created manually or directly by pulling the data from a External Result. 89 - - Patient has three main sections namely **Personal Details**, **Health Details** and **Medical History.** 90 - - Each patient in the system is uniquely identifiable by the Phone Number and Date of Birth. 91 - 92 - Resources 93 - --------- 94 - 95 - - Overall Concept Diagram - :download:`Download <contents/CareConceptDiagram.png>` 96 - - Excalidraw Diagram file - :download:`Download <contents/CareConceptDiagram.excalidraw>`
-2547
docs/glossary/contents/CareConceptDiagram.excalidraw
··· 1 - { 2 - "type": "excalidraw", 3 - "version": 2, 4 - "source": "https://excalidraw.com", 5 - "elements": [ 6 - { 7 - "type": "rectangle", 8 - "version": 117, 9 - "versionNonce": 348617055, 10 - "isDeleted": false, 11 - "id": "qkZkeM-HJE6uTy837FAa-", 12 - "fillStyle": "solid", 13 - "strokeWidth": 4, 14 - "strokeStyle": "solid", 15 - "roughness": 1, 16 - "opacity": 100, 17 - "angle": 0, 18 - "x": 775.75, 19 - "y": 317, 20 - "strokeColor": "#000000", 21 - "backgroundColor": "#fff", 22 - "width": 330, 23 - "height": 93, 24 - "seed": 907521666, 25 - "groupIds": [], 26 - "strokeSharpness": "round", 27 - "boundElements": [ 28 - { 29 - "id": "yk3ONf28UWUe3dAzP6SnF", 30 - "type": "text" 31 - }, 32 - { 33 - "type": "text", 34 - "id": "yk3ONf28UWUe3dAzP6SnF" 35 - }, 36 - { 37 - "id": "sN9WSA6bsm01kIv2Qqy9h", 38 - "type": "arrow" 39 - }, 40 - { 41 - "id": "CWZ8eCq837dlgTZHOHd1i", 42 - "type": "arrow" 43 - }, 44 - { 45 - "id": "nTT5Rv4GrVnOJkyNbugsk", 46 - "type": "arrow" 47 - } 48 - ], 49 - "updated": 1645425849416, 50 - "link": null, 51 - "locked": false 52 - }, 53 - { 54 - "type": "text", 55 - "version": 50, 56 - "versionNonce": 411996177, 57 - "isDeleted": false, 58 - "id": "yk3ONf28UWUe3dAzP6SnF", 59 - "fillStyle": "hachure", 60 - "strokeWidth": 4, 61 - "strokeStyle": "solid", 62 - "roughness": 1, 63 - "opacity": 100, 64 - "angle": 0, 65 - "x": 780.75, 66 - "y": 341, 67 - "strokeColor": "#000000", 68 - "backgroundColor": "transparent", 69 - "width": 320, 70 - "height": 45, 71 - "seed": 971148866, 72 - "groupIds": [], 73 - "strokeSharpness": "round", 74 - "boundElements": [], 75 - "updated": 1645425849416, 76 - "link": null, 77 - "locked": false, 78 - "fontSize": 36, 79 - "fontFamily": 1, 80 - "text": "🌎 State", 81 - "baseline": 32, 82 - "textAlign": "center", 83 - "verticalAlign": "middle", 84 - "containerId": "qkZkeM-HJE6uTy837FAa-", 85 - "originalText": "🌎 State" 86 - }, 87 - { 88 - "type": "rectangle", 89 - "version": 192, 90 - "versionNonce": 1768879487, 91 - "isDeleted": false, 92 - "id": "t5hyo9-RRnxb0fRhomAfp", 93 - "fillStyle": "solid", 94 - "strokeWidth": 4, 95 - "strokeStyle": "solid", 96 - "roughness": 1, 97 - "opacity": 100, 98 - "angle": 0, 99 - "x": 777, 100 - "y": 460.75, 101 - "strokeColor": "#000000", 102 - "backgroundColor": "#fff", 103 - "width": 330, 104 - "height": 93, 105 - "seed": 1069825026, 106 - "groupIds": [], 107 - "strokeSharpness": "round", 108 - "boundElements": [ 109 - { 110 - "id": "tggFKiimCvGPFNE4YTuvN", 111 - "type": "text" 112 - }, 113 - { 114 - "type": "text", 115 - "id": "tggFKiimCvGPFNE4YTuvN" 116 - }, 117 - { 118 - "id": "nTT5Rv4GrVnOJkyNbugsk", 119 - "type": "arrow" 120 - } 121 - ], 122 - "updated": 1645425849416, 123 - "link": null, 124 - "locked": false 125 - }, 126 - { 127 - "type": "text", 128 - "version": 140, 129 - "versionNonce": 1631872497, 130 - "isDeleted": false, 131 - "id": "tggFKiimCvGPFNE4YTuvN", 132 - "fillStyle": "hachure", 133 - "strokeWidth": 4, 134 - "strokeStyle": "solid", 135 - "roughness": 1, 136 - "opacity": 100, 137 - "angle": 0, 138 - "x": 782, 139 - "y": 484.75, 140 - "strokeColor": "#000000", 141 - "backgroundColor": "transparent", 142 - "width": 320, 143 - "height": 45, 144 - "seed": 1235315650, 145 - "groupIds": [], 146 - "strokeSharpness": "round", 147 - "boundElements": [], 148 - "updated": 1645425849416, 149 - "link": null, 150 - "locked": false, 151 - "fontSize": 36, 152 - "fontFamily": 1, 153 - "text": "🗺 District", 154 - "baseline": 32, 155 - "textAlign": "center", 156 - "verticalAlign": "middle", 157 - "containerId": "t5hyo9-RRnxb0fRhomAfp", 158 - "originalText": "🗺 District" 159 - }, 160 - { 161 - "type": "rectangle", 162 - "version": 261, 163 - "versionNonce": 269610399, 164 - "isDeleted": false, 165 - "id": "-z2WWTupYIeqeEKvBrjPe", 166 - "fillStyle": "solid", 167 - "strokeWidth": 4, 168 - "strokeStyle": "solid", 169 - "roughness": 1, 170 - "opacity": 100, 171 - "angle": 0, 172 - "x": 780, 173 - "y": 599.6483940788638, 174 - "strokeColor": "#000000", 175 - "backgroundColor": "#fff", 176 - "width": 330, 177 - "height": 100, 178 - "seed": 2040184642, 179 - "groupIds": [], 180 - "strokeSharpness": "round", 181 - "boundElements": [ 182 - { 183 - "id": "VsQVrloehz--FDxU4TN0y", 184 - "type": "text" 185 - }, 186 - { 187 - "id": "VsQVrloehz--FDxU4TN0y", 188 - "type": "text" 189 - }, 190 - { 191 - "id": "AXIODW4GaYJnlrzp-wyes", 192 - "type": "arrow" 193 - }, 194 - { 195 - "type": "text", 196 - "id": "VsQVrloehz--FDxU4TN0y" 197 - } 198 - ], 199 - "updated": 1645425849416, 200 - "link": null, 201 - "locked": false 202 - }, 203 - { 204 - "type": "text", 205 - "version": 264, 206 - "versionNonce": 612663249, 207 - "isDeleted": false, 208 - "id": "VsQVrloehz--FDxU4TN0y", 209 - "fillStyle": "hachure", 210 - "strokeWidth": 4, 211 - "strokeStyle": "solid", 212 - "roughness": 1, 213 - "opacity": 100, 214 - "angle": 0, 215 - "x": 785, 216 - "y": 627.1483940788638, 217 - "strokeColor": "#000000", 218 - "backgroundColor": "transparent", 219 - "width": 320, 220 - "height": 45, 221 - "seed": 300240350, 222 - "groupIds": [], 223 - "strokeSharpness": "round", 224 - "boundElements": [], 225 - "updated": 1645425849416, 226 - "link": null, 227 - "locked": false, 228 - "fontSize": 36, 229 - "fontFamily": 1, 230 - "text": "💪 Local Body", 231 - "baseline": 32, 232 - "textAlign": "center", 233 - "verticalAlign": "middle", 234 - "containerId": "-z2WWTupYIeqeEKvBrjPe", 235 - "originalText": "💪 Local Body" 236 - }, 237 - { 238 - "type": "rectangle", 239 - "version": 264, 240 - "versionNonce": 870375871, 241 - "isDeleted": false, 242 - "id": "Bz9dwONllisp9G7c2xsfL", 243 - "fillStyle": "solid", 244 - "strokeWidth": 4, 245 - "strokeStyle": "solid", 246 - "roughness": 1, 247 - "opacity": 100, 248 - "angle": 0, 249 - "x": 780, 250 - "y": 740, 251 - "strokeColor": "#000000", 252 - "backgroundColor": "#fff", 253 - "width": 330, 254 - "height": 100, 255 - "seed": 1654612062, 256 - "groupIds": [], 257 - "strokeSharpness": "round", 258 - "boundElements": [ 259 - { 260 - "id": "rgaRuiyedlbepcrWt0Ms4", 261 - "type": "text" 262 - }, 263 - { 264 - "type": "text", 265 - "id": "rgaRuiyedlbepcrWt0Ms4" 266 - } 267 - ], 268 - "updated": 1645425849416, 269 - "link": null, 270 - "locked": false 271 - }, 272 - { 273 - "type": "text", 274 - "version": 282, 275 - "versionNonce": 543579569, 276 - "isDeleted": false, 277 - "id": "rgaRuiyedlbepcrWt0Ms4", 278 - "fillStyle": "hachure", 279 - "strokeWidth": 4, 280 - "strokeStyle": "solid", 281 - "roughness": 1, 282 - "opacity": 100, 283 - "angle": 0, 284 - "x": 785, 285 - "y": 767.5, 286 - "strokeColor": "#000000", 287 - "backgroundColor": "transparent", 288 - "width": 320, 289 - "height": 45, 290 - "seed": 567008386, 291 - "groupIds": [], 292 - "strokeSharpness": "round", 293 - "boundElements": [], 294 - "updated": 1645425849416, 295 - "link": null, 296 - "locked": false, 297 - "fontSize": 36, 298 - "fontFamily": 1, 299 - "text": "🏢 Ward", 300 - "baseline": 32, 301 - "textAlign": "center", 302 - "verticalAlign": "middle", 303 - "containerId": "Bz9dwONllisp9G7c2xsfL", 304 - "originalText": "🏢 Ward" 305 - }, 306 - { 307 - "type": "arrow", 308 - "version": 20, 309 - "versionNonce": 1174163935, 310 - "isDeleted": false, 311 - "id": "nTT5Rv4GrVnOJkyNbugsk", 312 - "fillStyle": "hachure", 313 - "strokeWidth": 4, 314 - "strokeStyle": "solid", 315 - "roughness": 1, 316 - "opacity": 100, 317 - "angle": 0, 318 - "x": 940, 319 - "y": 420, 320 - "strokeColor": "#000000", 321 - "backgroundColor": "transparent", 322 - "width": 0, 323 - "height": 40, 324 - "seed": 1059472386, 325 - "groupIds": [], 326 - "strokeSharpness": "round", 327 - "boundElements": [], 328 - "updated": 1645425849416, 329 - "link": null, 330 - "locked": false, 331 - "startBinding": { 332 - "elementId": "qkZkeM-HJE6uTy837FAa-", 333 - "focus": 0.004545454545454545, 334 - "gap": 10 335 - }, 336 - "endBinding": { 337 - "elementId": "t5hyo9-RRnxb0fRhomAfp", 338 - "focus": -0.012121212121212121, 339 - "gap": 1 340 - }, 341 - "lastCommittedPoint": null, 342 - "startArrowhead": null, 343 - "endArrowhead": "arrow", 344 - "points": [ 345 - [ 346 - 0, 347 - 0 348 - ], 349 - [ 350 - 0, 351 - 40 352 - ] 353 - ] 354 - }, 355 - { 356 - "type": "arrow", 357 - "version": 22, 358 - "versionNonce": 1678868369, 359 - "isDeleted": false, 360 - "id": "AXIODW4GaYJnlrzp-wyes", 361 - "fillStyle": "hachure", 362 - "strokeWidth": 4, 363 - "strokeStyle": "solid", 364 - "roughness": 1, 365 - "opacity": 100, 366 - "angle": 0, 367 - "x": 940, 368 - "y": 559.6483940788638, 369 - "strokeColor": "#000000", 370 - "backgroundColor": "transparent", 371 - "width": 0, 372 - "height": 40, 373 - "seed": 1682278146, 374 - "groupIds": [], 375 - "strokeSharpness": "round", 376 - "boundElements": [], 377 - "updated": 1645425849416, 378 - "link": null, 379 - "locked": false, 380 - "startBinding": null, 381 - "endBinding": { 382 - "focus": -0.030303030303030304, 383 - "gap": 1, 384 - "elementId": "-z2WWTupYIeqeEKvBrjPe" 385 - }, 386 - "lastCommittedPoint": null, 387 - "startArrowhead": null, 388 - "endArrowhead": "arrow", 389 - "points": [ 390 - [ 391 - 0, 392 - 0 393 - ], 394 - [ 395 - 0, 396 - 40 397 - ] 398 - ] 399 - }, 400 - { 401 - "type": "arrow", 402 - "version": 18, 403 - "versionNonce": 1064615423, 404 - "isDeleted": false, 405 - "id": "9c1aIPc3Z6jBpNAKsR05s", 406 - "fillStyle": "hachure", 407 - "strokeWidth": 4, 408 - "strokeStyle": "solid", 409 - "roughness": 1, 410 - "opacity": 100, 411 - "angle": 0, 412 - "x": 941.2270895981137, 413 - "y": 700, 414 - "strokeColor": "#000000", 415 - "backgroundColor": "transparent", 416 - "width": 0, 417 - "height": 40, 418 - "seed": 767249602, 419 - "groupIds": [], 420 - "strokeSharpness": "round", 421 - "boundElements": [], 422 - "updated": 1645425849416, 423 - "link": null, 424 - "locked": false, 425 - "startBinding": null, 426 - "endBinding": null, 427 - "lastCommittedPoint": null, 428 - "startArrowhead": null, 429 - "endArrowhead": "arrow", 430 - "points": [ 431 - [ 432 - 0, 433 - 0 434 - ], 435 - [ 436 - 0, 437 - 40 438 - ] 439 - ] 440 - }, 441 - { 442 - "type": "rectangle", 443 - "version": 43, 444 - "versionNonce": 767386993, 445 - "isDeleted": false, 446 - "id": "NJeAM0oxCUIbxjLbhT7ah", 447 - "fillStyle": "solid", 448 - "strokeWidth": 4, 449 - "strokeStyle": "solid", 450 - "roughness": 1, 451 - "opacity": 100, 452 - "angle": 0, 453 - "x": 680, 454 - "y": 880, 455 - "strokeColor": "#000000", 456 - "backgroundColor": "#fff", 457 - "width": 560, 458 - "height": 160, 459 - "seed": 1685391682, 460 - "groupIds": [], 461 - "strokeSharpness": "round", 462 - "boundElements": [ 463 - { 464 - "type": "text", 465 - "id": "8TDbn1gtsERKjcQPgOJFk" 466 - }, 467 - { 468 - "id": "0bS4EryfAXSJyTih75CED", 469 - "type": "arrow" 470 - } 471 - ], 472 - "updated": 1645425849416, 473 - "link": null, 474 - "locked": false 475 - }, 476 - { 477 - "type": "text", 478 - "version": 57, 479 - "versionNonce": 592094751, 480 - "isDeleted": false, 481 - "id": "8TDbn1gtsERKjcQPgOJFk", 482 - "fillStyle": "hachure", 483 - "strokeWidth": 4, 484 - "strokeStyle": "solid", 485 - "roughness": 1, 486 - "opacity": 100, 487 - "angle": 0, 488 - "x": 685, 489 - "y": 937.5, 490 - "strokeColor": "#000000", 491 - "backgroundColor": "transparent", 492 - "width": 550, 493 - "height": 45, 494 - "seed": 1118934658, 495 - "groupIds": [], 496 - "strokeSharpness": "round", 497 - "boundElements": [], 498 - "updated": 1645425849416, 499 - "link": null, 500 - "locked": false, 501 - "fontSize": 36, 502 - "fontFamily": 1, 503 - "text": " CARE System", 504 - "baseline": 32, 505 - "textAlign": "center", 506 - "verticalAlign": "middle", 507 - "containerId": "NJeAM0oxCUIbxjLbhT7ah", 508 - "originalText": " CARE System" 509 - }, 510 - { 511 - "type": "image", 512 - "version": 94, 513 - "versionNonce": 145854289, 514 - "isDeleted": false, 515 - "id": "Nyzn83w0KzyjoWyxhrLnI", 516 - "fillStyle": "hachure", 517 - "strokeWidth": 4, 518 - "strokeStyle": "solid", 519 - "roughness": 1, 520 - "opacity": 100, 521 - "angle": 0, 522 - "x": 775, 523 - "y": 906, 524 - "strokeColor": "transparent", 525 - "backgroundColor": "transparent", 526 - "width": 100, 527 - "height": 100, 528 - "seed": 1112493982, 529 - "groupIds": [], 530 - "strokeSharpness": "round", 531 - "boundElements": [], 532 - "updated": 1645425849416, 533 - "link": null, 534 - "locked": false, 535 - "status": "saved", 536 - "fileId": "6e7f938662c850d09594b17cfe4272f22e2a8062", 537 - "scale": [ 538 - 1, 539 - 1 540 - ] 541 - }, 542 - { 543 - "type": "arrow", 544 - "version": 30, 545 - "versionNonce": 1080986175, 546 - "isDeleted": false, 547 - "id": "0bS4EryfAXSJyTih75CED", 548 - "fillStyle": "hachure", 549 - "strokeWidth": 4, 550 - "strokeStyle": "solid", 551 - "roughness": 1, 552 - "opacity": 100, 553 - "angle": 0, 554 - "x": 940, 555 - "y": 839.4019905450102, 556 - "strokeColor": "#000000", 557 - "backgroundColor": "transparent", 558 - "width": 0, 559 - "height": 40, 560 - "seed": 601558878, 561 - "groupIds": [], 562 - "strokeSharpness": "round", 563 - "boundElements": [], 564 - "updated": 1645425849416, 565 - "link": null, 566 - "locked": false, 567 - "startBinding": null, 568 - "endBinding": { 569 - "focus": -0.07142857142857142, 570 - "gap": 1, 571 - "elementId": "NJeAM0oxCUIbxjLbhT7ah" 572 - }, 573 - "lastCommittedPoint": null, 574 - "startArrowhead": null, 575 - "endArrowhead": "arrow", 576 - "points": [ 577 - [ 578 - 0, 579 - 0 580 - ], 581 - [ 582 - 0, 583 - 40 584 - ] 585 - ] 586 - }, 587 - { 588 - "type": "rectangle", 589 - "version": 349, 590 - "versionNonce": 725974321, 591 - "isDeleted": false, 592 - "id": "_Uu0G3Db9HZigdwzFlcMD", 593 - "fillStyle": "solid", 594 - "strokeWidth": 4, 595 - "strokeStyle": "solid", 596 - "roughness": 1, 597 - "opacity": 100, 598 - "angle": 0, 599 - "x": 780, 600 - "y": 1200, 601 - "strokeColor": "#000000", 602 - "backgroundColor": "#fff", 603 - "width": 330, 604 - "height": 100, 605 - "seed": 508115714, 606 - "groupIds": [], 607 - "strokeSharpness": "round", 608 - "boundElements": [ 609 - { 610 - "id": "vgGGmdHPqFmJnte-C7W1N", 611 - "type": "text" 612 - }, 613 - { 614 - "id": "8FE7wLkICJapzVCxuqVAG", 615 - "type": "arrow" 616 - }, 617 - { 618 - "type": "text", 619 - "id": "vgGGmdHPqFmJnte-C7W1N" 620 - }, 621 - { 622 - "id": "P5FhobDneFAt4G0gp4nfc", 623 - "type": "arrow" 624 - }, 625 - { 626 - "id": "hjzcdZslDwds6XCsACBJ5", 627 - "type": "arrow" 628 - }, 629 - { 630 - "id": "92iAFtFJsQLdAJ4s02TRE", 631 - "type": "arrow" 632 - }, 633 - { 634 - "id": "_qMOIGQ1SG9TADc8J6PuG", 635 - "type": "arrow" 636 - }, 637 - { 638 - "id": "R0whqZHzbVI0T_y1-0r1F", 639 - "type": "arrow" 640 - }, 641 - { 642 - "id": "x_dHZSxV7Wk5G01-A09B0", 643 - "type": "arrow" 644 - } 645 - ], 646 - "updated": 1645425849416, 647 - "link": null, 648 - "locked": false 649 - }, 650 - { 651 - "type": "text", 652 - "version": 362, 653 - "versionNonce": 868280927, 654 - "isDeleted": false, 655 - "id": "vgGGmdHPqFmJnte-C7W1N", 656 - "fillStyle": "hachure", 657 - "strokeWidth": 4, 658 - "strokeStyle": "solid", 659 - "roughness": 1, 660 - "opacity": 100, 661 - "angle": 0, 662 - "x": 785, 663 - "y": 1227.5, 664 - "strokeColor": "#000000", 665 - "backgroundColor": "transparent", 666 - "width": 320, 667 - "height": 45, 668 - "seed": 842886686, 669 - "groupIds": [], 670 - "strokeSharpness": "round", 671 - "boundElements": [], 672 - "updated": 1645425849416, 673 - "link": null, 674 - "locked": false, 675 - "fontSize": 36, 676 - "fontFamily": 1, 677 - "text": "🏥 Facility", 678 - "baseline": 32, 679 - "textAlign": "center", 680 - "verticalAlign": "middle", 681 - "containerId": "_Uu0G3Db9HZigdwzFlcMD", 682 - "originalText": "🏥 Facility" 683 - }, 684 - { 685 - "type": "arrow", 686 - "version": 68, 687 - "versionNonce": 350269201, 688 - "isDeleted": false, 689 - "id": "rArQWiq_vx5aN3GI24fBn", 690 - "fillStyle": "hachure", 691 - "strokeWidth": 4, 692 - "strokeStyle": "solid", 693 - "roughness": 1, 694 - "opacity": 100, 695 - "angle": 0, 696 - "x": 941.2270895981137, 697 - "y": 1059.4019905450102, 698 - "strokeColor": "#000000", 699 - "backgroundColor": "transparent", 700 - "width": 0, 701 - "height": 120.59800945498978, 702 - "seed": 702599298, 703 - "groupIds": [], 704 - "strokeSharpness": "round", 705 - "boundElements": [], 706 - "updated": 1645425849416, 707 - "link": null, 708 - "locked": false, 709 - "startBinding": null, 710 - "endBinding": null, 711 - "lastCommittedPoint": null, 712 - "startArrowhead": null, 713 - "endArrowhead": "arrow", 714 - "points": [ 715 - [ 716 - 0, 717 - 0 718 - ], 719 - [ 720 - 0, 721 - 120.59800945498978 722 - ] 723 - ] 724 - }, 725 - { 726 - "type": "arrow", 727 - "version": 728, 728 - "versionNonce": 323412241, 729 - "isDeleted": false, 730 - "id": "hjzcdZslDwds6XCsACBJ5", 731 - "fillStyle": "hachure", 732 - "strokeWidth": 4, 733 - "strokeStyle": "solid", 734 - "roughness": 1, 735 - "opacity": 100, 736 - "angle": 0, 737 - "x": 797.2476990976329, 738 - "y": 1320.6670189353358, 739 - "strokeColor": "#000000", 740 - "backgroundColor": "transparent", 741 - "width": 400.6537064583134, 742 - "height": 200.26742892057632, 743 - "seed": 1326290718, 744 - "groupIds": [], 745 - "strokeSharpness": "round", 746 - "boundElements": [], 747 - "updated": 1645433371530, 748 - "link": null, 749 - "locked": false, 750 - "startBinding": { 751 - "focus": 0.024533636141904056, 752 - "gap": 20.66701893533582, 753 - "elementId": "_Uu0G3Db9HZigdwzFlcMD" 754 - }, 755 - "endBinding": { 756 - "focus": -0.03187397377340925, 757 - "gap": 20, 758 - "elementId": "88CC1LK21m4BqzmEbriu1" 759 - }, 760 - "lastCommittedPoint": null, 761 - "startArrowhead": null, 762 - "endArrowhead": "arrow", 763 - "points": [ 764 - [ 765 - 0, 766 - 0 767 - ], 768 - [ 769 - -400.6537064583134, 770 - 200.26742892057632 771 - ] 772 - ] 773 - }, 774 - { 775 - "type": "rectangle", 776 - "version": 562, 777 - "versionNonce": 1811588337, 778 - "isDeleted": false, 779 - "id": "88CC1LK21m4BqzmEbriu1", 780 - "fillStyle": "solid", 781 - "strokeWidth": 4, 782 - "strokeStyle": "solid", 783 - "roughness": 1, 784 - "opacity": 100, 785 - "angle": 0, 786 - "x": 100, 787 - "y": 1540.9344478559121, 788 - "strokeColor": "#000000", 789 - "backgroundColor": "#fff", 790 - "width": 330, 791 - "height": 100, 792 - "seed": 478143261, 793 - "groupIds": [], 794 - "strokeSharpness": "round", 795 - "boundElements": [ 796 - { 797 - "id": "1zy7pUDwri4kaPO5-J_af", 798 - "type": "text" 799 - }, 800 - { 801 - "id": "8FE7wLkICJapzVCxuqVAG", 802 - "type": "arrow" 803 - }, 804 - { 805 - "id": "1zy7pUDwri4kaPO5-J_af", 806 - "type": "text" 807 - }, 808 - { 809 - "id": "hjzcdZslDwds6XCsACBJ5", 810 - "type": "arrow" 811 - }, 812 - { 813 - "id": "1zy7pUDwri4kaPO5-J_af", 814 - "type": "text" 815 - }, 816 - { 817 - "id": "1zy7pUDwri4kaPO5-J_af", 818 - "type": "text" 819 - }, 820 - { 821 - "id": "kwcZGLpgnJ5w8pJtQ9skY", 822 - "type": "arrow" 823 - }, 824 - { 825 - "id": "x95g0mQsnbmS34SN4gGFp", 826 - "type": "arrow" 827 - }, 828 - { 829 - "id": "sNWIn0XXeDeADuf42h5sm", 830 - "type": "arrow" 831 - }, 832 - { 833 - "type": "text", 834 - "id": "1zy7pUDwri4kaPO5-J_af" 835 - } 836 - ], 837 - "updated": 1645425849416, 838 - "link": null, 839 - "locked": false 840 - }, 841 - { 842 - "type": "text", 843 - "version": 622, 844 - "versionNonce": 1646468767, 845 - "isDeleted": false, 846 - "id": "1zy7pUDwri4kaPO5-J_af", 847 - "fillStyle": "hachure", 848 - "strokeWidth": 4, 849 - "strokeStyle": "solid", 850 - "roughness": 1, 851 - "opacity": 100, 852 - "angle": 0, 853 - "x": 105, 854 - "y": 1568.4344478559121, 855 - "strokeColor": "#000000", 856 - "backgroundColor": "transparent", 857 - "width": 320, 858 - "height": 45, 859 - "seed": 1446586675, 860 - "groupIds": [], 861 - "strokeSharpness": "round", 862 - "boundElements": [], 863 - "updated": 1645425849416, 864 - "link": null, 865 - "locked": false, 866 - "fontSize": 36, 867 - "fontFamily": 1, 868 - "text": "🧰 Assets", 869 - "baseline": 32, 870 - "textAlign": "center", 871 - "verticalAlign": "middle", 872 - "containerId": "88CC1LK21m4BqzmEbriu1", 873 - "originalText": "🧰 Assets" 874 - }, 875 - { 876 - "type": "arrow", 877 - "version": 640, 878 - "versionNonce": 471523025, 879 - "isDeleted": false, 880 - "id": "92iAFtFJsQLdAJ4s02TRE", 881 - "fillStyle": "hachure", 882 - "strokeWidth": 4, 883 - "strokeStyle": "solid", 884 - "roughness": 1, 885 - "opacity": 100, 886 - "angle": 0, 887 - "x": 760, 888 - "y": 1260, 889 - "strokeColor": "#000000", 890 - "backgroundColor": "transparent", 891 - "width": 320, 892 - "height": 0, 893 - "seed": 968143006, 894 - "groupIds": [], 895 - "strokeSharpness": "round", 896 - "boundElements": [], 897 - "updated": 1645425849416, 898 - "link": null, 899 - "locked": false, 900 - "startBinding": { 901 - "focus": -0.2, 902 - "gap": 20, 903 - "elementId": "_Uu0G3Db9HZigdwzFlcMD" 904 - }, 905 - "endBinding": { 906 - "focus": 0.2, 907 - "gap": 10, 908 - "elementId": "3nhq_FhtKPAnFY0yujszx" 909 - }, 910 - "lastCommittedPoint": null, 911 - "startArrowhead": null, 912 - "endArrowhead": "arrow", 913 - "points": [ 914 - [ 915 - 0, 916 - 0 917 - ], 918 - [ 919 - -320, 920 - 0 921 - ] 922 - ] 923 - }, 924 - { 925 - "type": "rectangle", 926 - "version": 511, 927 - "versionNonce": 1856238271, 928 - "isDeleted": false, 929 - "id": "3nhq_FhtKPAnFY0yujszx", 930 - "fillStyle": "solid", 931 - "strokeWidth": 4, 932 - "strokeStyle": "solid", 933 - "roughness": 1, 934 - "opacity": 100, 935 - "angle": 0, 936 - "x": 100, 937 - "y": 1200, 938 - "strokeColor": "#000000", 939 - "backgroundColor": "#fff", 940 - "width": 330, 941 - "height": 100, 942 - "seed": 1839378498, 943 - "groupIds": [], 944 - "strokeSharpness": "round", 945 - "boundElements": [ 946 - { 947 - "id": "XXDmhY6UQF6ehHiZ_WNQ6", 948 - "type": "text" 949 - }, 950 - { 951 - "id": "8FE7wLkICJapzVCxuqVAG", 952 - "type": "arrow" 953 - }, 954 - { 955 - "id": "XXDmhY6UQF6ehHiZ_WNQ6", 956 - "type": "text" 957 - }, 958 - { 959 - "id": "92iAFtFJsQLdAJ4s02TRE", 960 - "type": "arrow" 961 - }, 962 - { 963 - "type": "text", 964 - "id": "XXDmhY6UQF6ehHiZ_WNQ6" 965 - }, 966 - { 967 - "id": "kwcZGLpgnJ5w8pJtQ9skY", 968 - "type": "arrow" 969 - } 970 - ], 971 - "updated": 1645425849416, 972 - "link": null, 973 - "locked": false 974 - }, 975 - { 976 - "type": "text", 977 - "version": 579, 978 - "versionNonce": 869850289, 979 - "isDeleted": false, 980 - "id": "XXDmhY6UQF6ehHiZ_WNQ6", 981 - "fillStyle": "hachure", 982 - "strokeWidth": 4, 983 - "strokeStyle": "solid", 984 - "roughness": 1, 985 - "opacity": 100, 986 - "angle": 0, 987 - "x": 105, 988 - "y": 1227.5, 989 - "strokeColor": "#000000", 990 - "backgroundColor": "transparent", 991 - "width": 320, 992 - "height": 45, 993 - "seed": 928050398, 994 - "groupIds": [], 995 - "strokeSharpness": "round", 996 - "boundElements": [], 997 - "updated": 1645425849416, 998 - "link": null, 999 - "locked": false, 1000 - "fontSize": 36, 1001 - "fontFamily": 1, 1002 - "text": "📦 Inventory", 1003 - "baseline": 32, 1004 - "textAlign": "center", 1005 - "verticalAlign": "middle", 1006 - "containerId": "3nhq_FhtKPAnFY0yujszx", 1007 - "originalText": "📦 Inventory" 1008 - }, 1009 - { 1010 - "type": "arrow", 1011 - "version": 826, 1012 - "versionNonce": 943014623, 1013 - "isDeleted": false, 1014 - "id": "_qMOIGQ1SG9TADc8J6PuG", 1015 - "fillStyle": "hachure", 1016 - "strokeWidth": 4, 1017 - "strokeStyle": "solid", 1018 - "roughness": 1, 1019 - "opacity": 100, 1020 - "angle": 3.141592653589793, 1021 - "x": 1480.1398086792697, 1022 - "y": 1259.969981009461, 1023 - "strokeColor": "#000000", 1024 - "backgroundColor": "transparent", 1025 - "width": 360, 1026 - "height": 0.7245913486310656, 1027 - "seed": 939884994, 1028 - "groupIds": [], 1029 - "strokeSharpness": "round", 1030 - "boundElements": [], 1031 - "updated": 1645425849416, 1032 - "link": null, 1033 - "locked": false, 1034 - "startBinding": { 1035 - "elementId": "_Uu0G3Db9HZigdwzFlcMD", 1036 - "focus": 0.220093584888546, 1037 - "gap": 10 1038 - }, 1039 - "endBinding": { 1040 - "elementId": "CcXxe5CpimteQRPbSDqF5", 1041 - "focus": -0.19130117266069646, 1042 - "gap": 20 1043 - }, 1044 - "lastCommittedPoint": null, 1045 - "startArrowhead": null, 1046 - "endArrowhead": "arrow", 1047 - "points": [ 1048 - [ 1049 - 0, 1050 - 0 1051 - ], 1052 - [ 1053 - -360, 1054 - 0.7245913486310656 1055 - ] 1056 - ] 1057 - }, 1058 - { 1059 - "type": "rectangle", 1060 - "version": 546, 1061 - "versionNonce": 47980177, 1062 - "isDeleted": false, 1063 - "id": "CcXxe5CpimteQRPbSDqF5", 1064 - "fillStyle": "solid", 1065 - "strokeWidth": 4, 1066 - "strokeStyle": "solid", 1067 - "roughness": 1, 1068 - "opacity": 100, 1069 - "angle": 0, 1070 - "x": 1500, 1071 - "y": 1200, 1072 - "strokeColor": "#000000", 1073 - "backgroundColor": "#fff", 1074 - "width": 330, 1075 - "height": 100, 1076 - "seed": 145859458, 1077 - "groupIds": [], 1078 - "strokeSharpness": "round", 1079 - "boundElements": [ 1080 - { 1081 - "id": "z_gykRYa7sgYS8bqHY6Uh", 1082 - "type": "text" 1083 - }, 1084 - { 1085 - "id": "8FE7wLkICJapzVCxuqVAG", 1086 - "type": "arrow" 1087 - }, 1088 - { 1089 - "type": "text", 1090 - "id": "z_gykRYa7sgYS8bqHY6Uh" 1091 - }, 1092 - { 1093 - "id": "_qMOIGQ1SG9TADc8J6PuG", 1094 - "type": "arrow" 1095 - }, 1096 - { 1097 - "id": "0H3ZpMitqjgcdj4qZKHed", 1098 - "type": "arrow" 1099 - } 1100 - ], 1101 - "updated": 1645425849416, 1102 - "link": null, 1103 - "locked": false 1104 - }, 1105 - { 1106 - "type": "text", 1107 - "version": 610, 1108 - "versionNonce": 1063751423, 1109 - "isDeleted": false, 1110 - "id": "z_gykRYa7sgYS8bqHY6Uh", 1111 - "fillStyle": "hachure", 1112 - "strokeWidth": 4, 1113 - "strokeStyle": "solid", 1114 - "roughness": 1, 1115 - "opacity": 100, 1116 - "angle": 0, 1117 - "x": 1505, 1118 - "y": 1227.5, 1119 - "strokeColor": "#000000", 1120 - "backgroundColor": "transparent", 1121 - "width": 320, 1122 - "height": 45, 1123 - "seed": 1869996866, 1124 - "groupIds": [], 1125 - "strokeSharpness": "round", 1126 - "boundElements": [], 1127 - "updated": 1645425849416, 1128 - "link": null, 1129 - "locked": false, 1130 - "fontSize": 36, 1131 - "fontFamily": 1, 1132 - "text": "🛌 Capacity", 1133 - "baseline": 32, 1134 - "textAlign": "center", 1135 - "verticalAlign": "middle", 1136 - "containerId": "CcXxe5CpimteQRPbSDqF5", 1137 - "originalText": "🛌 Capacity" 1138 - }, 1139 - { 1140 - "type": "arrow", 1141 - "version": 1096, 1142 - "versionNonce": 2010915953, 1143 - "isDeleted": false, 1144 - "id": "R0whqZHzbVI0T_y1-0r1F", 1145 - "fillStyle": "hachure", 1146 - "strokeWidth": 4, 1147 - "strokeStyle": "solid", 1148 - "roughness": 1, 1149 - "opacity": 100, 1150 - "angle": 0, 1151 - "x": 1099.9999999999998, 1152 - "y": 1320, 1153 - "strokeColor": "#000000", 1154 - "backgroundColor": "transparent", 1155 - "width": 440, 1156 - "height": 200, 1157 - "seed": 1413872350, 1158 - "groupIds": [], 1159 - "strokeSharpness": "round", 1160 - "boundElements": [], 1161 - "updated": 1645425849416, 1162 - "link": null, 1163 - "locked": false, 1164 - "startBinding": { 1165 - "focus": -0.0036363636363636364, 1166 - "gap": 20, 1167 - "elementId": "_Uu0G3Db9HZigdwzFlcMD" 1168 - }, 1169 - "endBinding": { 1170 - "focus": 0.03272727272727273, 1171 - "gap": 20, 1172 - "elementId": "lFmjpyFXvmHGmxfzn7ybr" 1173 - }, 1174 - "lastCommittedPoint": null, 1175 - "startArrowhead": null, 1176 - "endArrowhead": "arrow", 1177 - "points": [ 1178 - [ 1179 - 0, 1180 - 0 1181 - ], 1182 - [ 1183 - 440, 1184 - 200 1185 - ] 1186 - ] 1187 - }, 1188 - { 1189 - "type": "rectangle", 1190 - "version": 634, 1191 - "versionNonce": 515594015, 1192 - "isDeleted": false, 1193 - "id": "lFmjpyFXvmHGmxfzn7ybr", 1194 - "fillStyle": "solid", 1195 - "strokeWidth": 4, 1196 - "strokeStyle": "solid", 1197 - "roughness": 1, 1198 - "opacity": 100, 1199 - "angle": 0, 1200 - "x": 1520, 1201 - "y": 1540, 1202 - "strokeColor": "#000000", 1203 - "backgroundColor": "#fff", 1204 - "width": 330, 1205 - "height": 100, 1206 - "seed": 1067643635, 1207 - "groupIds": [], 1208 - "strokeSharpness": "round", 1209 - "boundElements": [ 1210 - { 1211 - "id": "v4ypl23n6uR_83yEsQ_Kh", 1212 - "type": "text" 1213 - }, 1214 - { 1215 - "id": "8FE7wLkICJapzVCxuqVAG", 1216 - "type": "arrow" 1217 - }, 1218 - { 1219 - "id": "v4ypl23n6uR_83yEsQ_Kh", 1220 - "type": "text" 1221 - }, 1222 - { 1223 - "id": "R0whqZHzbVI0T_y1-0r1F", 1224 - "type": "arrow" 1225 - }, 1226 - { 1227 - "id": "v4ypl23n6uR_83yEsQ_Kh", 1228 - "type": "text" 1229 - }, 1230 - { 1231 - "id": "sNWIn0XXeDeADuf42h5sm", 1232 - "type": "arrow" 1233 - }, 1234 - { 1235 - "id": "0H3ZpMitqjgcdj4qZKHed", 1236 - "type": "arrow" 1237 - }, 1238 - { 1239 - "type": "text", 1240 - "id": "v4ypl23n6uR_83yEsQ_Kh" 1241 - } 1242 - ], 1243 - "updated": 1645425849416, 1244 - "link": null, 1245 - "locked": false 1246 - }, 1247 - { 1248 - "type": "text", 1249 - "version": 699, 1250 - "versionNonce": 1050701393, 1251 - "isDeleted": false, 1252 - "id": "v4ypl23n6uR_83yEsQ_Kh", 1253 - "fillStyle": "hachure", 1254 - "strokeWidth": 4, 1255 - "strokeStyle": "solid", 1256 - "roughness": 1, 1257 - "opacity": 100, 1258 - "angle": 0, 1259 - "x": 1525, 1260 - "y": 1567.5, 1261 - "strokeColor": "#000000", 1262 - "backgroundColor": "transparent", 1263 - "width": 320, 1264 - "height": 45, 1265 - "seed": 913320381, 1266 - "groupIds": [], 1267 - "strokeSharpness": "round", 1268 - "boundElements": [], 1269 - "updated": 1645425849416, 1270 - "link": null, 1271 - "locked": false, 1272 - "fontSize": 36, 1273 - "fontFamily": 1, 1274 - "text": "📍 Location", 1275 - "baseline": 32, 1276 - "textAlign": "center", 1277 - "verticalAlign": "middle", 1278 - "containerId": "lFmjpyFXvmHGmxfzn7ybr", 1279 - "originalText": "📍 Location" 1280 - }, 1281 - { 1282 - "type": "rectangle", 1283 - "version": 350, 1284 - "versionNonce": 1112760625, 1285 - "isDeleted": false, 1286 - "id": "KHrTtlpOhcS_24CDkPWS9", 1287 - "fillStyle": "solid", 1288 - "strokeWidth": 4, 1289 - "strokeStyle": "solid", 1290 - "roughness": 1, 1291 - "opacity": 100, 1292 - "angle": 0, 1293 - "x": 780, 1294 - "y": 1820, 1295 - "strokeColor": "#000000", 1296 - "backgroundColor": "#fff", 1297 - "width": 330, 1298 - "height": 100, 1299 - "seed": 2067574239, 1300 - "groupIds": [], 1301 - "strokeSharpness": "round", 1302 - "boundElements": [ 1303 - { 1304 - "id": "UJdjs_3YTgtLbAxVope1L", 1305 - "type": "text" 1306 - }, 1307 - { 1308 - "id": "UJdjs_3YTgtLbAxVope1L", 1309 - "type": "text" 1310 - }, 1311 - { 1312 - "id": "x_dHZSxV7Wk5G01-A09B0", 1313 - "type": "arrow" 1314 - }, 1315 - { 1316 - "id": "x95g0mQsnbmS34SN4gGFp", 1317 - "type": "arrow" 1318 - }, 1319 - { 1320 - "id": "sNWIn0XXeDeADuf42h5sm", 1321 - "type": "arrow" 1322 - }, 1323 - { 1324 - "id": "98jNHdE2NTnwoAdy1TUGj", 1325 - "type": "arrow" 1326 - }, 1327 - { 1328 - "type": "text", 1329 - "id": "UJdjs_3YTgtLbAxVope1L" 1330 - } 1331 - ], 1332 - "updated": 1645432659246, 1333 - "link": null, 1334 - "locked": false 1335 - }, 1336 - { 1337 - "type": "text", 1338 - "version": 348, 1339 - "versionNonce": 1379158385, 1340 - "isDeleted": false, 1341 - "id": "UJdjs_3YTgtLbAxVope1L", 1342 - "fillStyle": "hachure", 1343 - "strokeWidth": 4, 1344 - "strokeStyle": "solid", 1345 - "roughness": 1, 1346 - "opacity": 100, 1347 - "angle": 0, 1348 - "x": 785, 1349 - "y": 1847.5, 1350 - "strokeColor": "#000000", 1351 - "backgroundColor": "transparent", 1352 - "width": 320, 1353 - "height": 45, 1354 - "seed": 1721033617, 1355 - "groupIds": [], 1356 - "strokeSharpness": "round", 1357 - "boundElements": [], 1358 - "updated": 1645432659245, 1359 - "link": null, 1360 - "locked": false, 1361 - "fontSize": 36, 1362 - "fontFamily": 1, 1363 - "text": "😷 Patient", 1364 - "baseline": 32, 1365 - "textAlign": "center", 1366 - "verticalAlign": "middle", 1367 - "containerId": "KHrTtlpOhcS_24CDkPWS9", 1368 - "originalText": "😷 Patient" 1369 - }, 1370 - { 1371 - "type": "arrow", 1372 - "version": 562, 1373 - "versionNonce": 201344273, 1374 - "isDeleted": false, 1375 - "id": "x_dHZSxV7Wk5G01-A09B0", 1376 - "fillStyle": "hachure", 1377 - "strokeWidth": 4, 1378 - "strokeStyle": "solid", 1379 - "roughness": 1, 1380 - "opacity": 100, 1381 - "angle": 0, 1382 - "x": 940, 1383 - "y": 1320, 1384 - "strokeColor": "#000000", 1385 - "backgroundColor": "transparent", 1386 - "width": 0, 1387 - "height": 480, 1388 - "seed": 2012316354, 1389 - "groupIds": [], 1390 - "strokeSharpness": "round", 1391 - "boundElements": [], 1392 - "updated": 1645460646683, 1393 - "link": null, 1394 - "locked": false, 1395 - "startBinding": { 1396 - "focus": 0.030303030303030304, 1397 - "gap": 20, 1398 - "elementId": "_Uu0G3Db9HZigdwzFlcMD" 1399 - }, 1400 - "endBinding": { 1401 - "focus": -0.030303030303030304, 1402 - "gap": 20, 1403 - "elementId": "KHrTtlpOhcS_24CDkPWS9" 1404 - }, 1405 - "lastCommittedPoint": null, 1406 - "startArrowhead": null, 1407 - "endArrowhead": "arrow", 1408 - "points": [ 1409 - [ 1410 - 0, 1411 - 0 1412 - ], 1413 - [ 1414 - 0, 1415 - 480 1416 - ] 1417 - ] 1418 - }, 1419 - { 1420 - "type": "arrow", 1421 - "version": 30, 1422 - "versionNonce": 1373647999, 1423 - "isDeleted": false, 1424 - "id": "kwcZGLpgnJ5w8pJtQ9skY", 1425 - "fillStyle": "hachure", 1426 - "strokeWidth": 4, 1427 - "strokeStyle": "dotted", 1428 - "roughness": 1, 1429 - "opacity": 100, 1430 - "angle": 0, 1431 - "x": 260, 1432 - "y": 1320, 1433 - "strokeColor": "#000000", 1434 - "backgroundColor": "transparent", 1435 - "width": 0, 1436 - "height": 200, 1437 - "seed": 736527069, 1438 - "groupIds": [], 1439 - "strokeSharpness": "round", 1440 - "boundElements": [], 1441 - "updated": 1645433371530, 1442 - "link": null, 1443 - "locked": false, 1444 - "startBinding": { 1445 - "focus": 0.030303030303030304, 1446 - "gap": 20, 1447 - "elementId": "3nhq_FhtKPAnFY0yujszx" 1448 - }, 1449 - "endBinding": { 1450 - "focus": -0.030303030303030304, 1451 - "gap": 20.93444785591214, 1452 - "elementId": "88CC1LK21m4BqzmEbriu1" 1453 - }, 1454 - "lastCommittedPoint": null, 1455 - "startArrowhead": null, 1456 - "endArrowhead": null, 1457 - "points": [ 1458 - [ 1459 - 0, 1460 - 0 1461 - ], 1462 - [ 1463 - 0, 1464 - 200 1465 - ] 1466 - ] 1467 - }, 1468 - { 1469 - "type": "arrow", 1470 - "version": 273, 1471 - "versionNonce": 1725894783, 1472 - "isDeleted": false, 1473 - "id": "sNWIn0XXeDeADuf42h5sm", 1474 - "fillStyle": "hachure", 1475 - "strokeWidth": 4, 1476 - "strokeStyle": "dotted", 1477 - "roughness": 1, 1478 - "opacity": 100, 1479 - "angle": 0, 1480 - "x": 440, 1481 - "y": 1580, 1482 - "strokeColor": "#000000", 1483 - "backgroundColor": "transparent", 1484 - "width": 1060, 1485 - "height": 0, 1486 - "seed": 2044444509, 1487 - "groupIds": [], 1488 - "strokeSharpness": "round", 1489 - "boundElements": [], 1490 - "updated": 1645460646683, 1491 - "link": null, 1492 - "locked": false, 1493 - "startBinding": { 1494 - "focus": -0.21868895711824282, 1495 - "gap": 10, 1496 - "elementId": "88CC1LK21m4BqzmEbriu1" 1497 - }, 1498 - "endBinding": { 1499 - "focus": 0.2, 1500 - "gap": 20, 1501 - "elementId": "lFmjpyFXvmHGmxfzn7ybr" 1502 - }, 1503 - "lastCommittedPoint": null, 1504 - "startArrowhead": null, 1505 - "endArrowhead": null, 1506 - "points": [ 1507 - [ 1508 - 0, 1509 - 0 1510 - ], 1511 - [ 1512 - 1060, 1513 - 0 1514 - ] 1515 - ] 1516 - }, 1517 - { 1518 - "type": "arrow", 1519 - "version": 25, 1520 - "versionNonce": 1027728369, 1521 - "isDeleted": false, 1522 - "id": "0H3ZpMitqjgcdj4qZKHed", 1523 - "fillStyle": "hachure", 1524 - "strokeWidth": 4, 1525 - "strokeStyle": "dotted", 1526 - "roughness": 1, 1527 - "opacity": 100, 1528 - "angle": 0, 1529 - "x": 1680.5300759341567, 1530 - "y": 1321.130229953304, 1531 - "strokeColor": "#000000", 1532 - "backgroundColor": "transparent", 1533 - "width": 0, 1534 - "height": 200, 1535 - "seed": 995918653, 1536 - "groupIds": [], 1537 - "strokeSharpness": "round", 1538 - "boundElements": [], 1539 - "updated": 1645425849417, 1540 - "link": null, 1541 - "locked": false, 1542 - "startBinding": { 1543 - "focus": -0.09412167232822233, 1544 - "gap": 21.130229953304024, 1545 - "elementId": "CcXxe5CpimteQRPbSDqF5" 1546 - }, 1547 - "endBinding": { 1548 - "focus": -0.02709044888389888, 1549 - "gap": 18.869770046695976, 1550 - "elementId": "lFmjpyFXvmHGmxfzn7ybr" 1551 - }, 1552 - "lastCommittedPoint": null, 1553 - "startArrowhead": null, 1554 - "endArrowhead": null, 1555 - "points": [ 1556 - [ 1557 - 0, 1558 - 0 1559 - ], 1560 - [ 1561 - 0, 1562 - 200 1563 - ] 1564 - ] 1565 - }, 1566 - { 1567 - "type": "rectangle", 1568 - "version": 741, 1569 - "versionNonce": 1050134207, 1570 - "isDeleted": false, 1571 - "id": "pQPySPsT6v6O0aLlUxm0u", 1572 - "fillStyle": "solid", 1573 - "strokeWidth": 4, 1574 - "strokeStyle": "solid", 1575 - "roughness": 1, 1576 - "opacity": 100, 1577 - "angle": 0, 1578 - "x": 2520, 1579 - "y": 700, 1580 - "strokeColor": "#000000", 1581 - "backgroundColor": "#fff", 1582 - "width": 330, 1583 - "height": 100, 1584 - "seed": 1455461169, 1585 - "groupIds": [], 1586 - "strokeSharpness": "round", 1587 - "boundElements": [ 1588 - { 1589 - "id": "eXnZm06LBcggIuGAsUnbk", 1590 - "type": "text" 1591 - }, 1592 - { 1593 - "id": "8FE7wLkICJapzVCxuqVAG", 1594 - "type": "arrow" 1595 - }, 1596 - { 1597 - "id": "eXnZm06LBcggIuGAsUnbk", 1598 - "type": "text" 1599 - }, 1600 - { 1601 - "id": "R0whqZHzbVI0T_y1-0r1F", 1602 - "type": "arrow" 1603 - }, 1604 - { 1605 - "id": "eXnZm06LBcggIuGAsUnbk", 1606 - "type": "text" 1607 - }, 1608 - { 1609 - "id": "sNWIn0XXeDeADuf42h5sm", 1610 - "type": "arrow" 1611 - }, 1612 - { 1613 - "id": "0H3ZpMitqjgcdj4qZKHed", 1614 - "type": "arrow" 1615 - }, 1616 - { 1617 - "id": "47wOYDjcE11pBKXBN296U", 1618 - "type": "arrow" 1619 - }, 1620 - { 1621 - "type": "text", 1622 - "id": "eXnZm06LBcggIuGAsUnbk" 1623 - }, 1624 - { 1625 - "id": "dzo1aCJ_MUHHl5SOsBGQj", 1626 - "type": "arrow" 1627 - } 1628 - ], 1629 - "updated": 1645433380594, 1630 - "link": null, 1631 - "locked": false 1632 - }, 1633 - { 1634 - "type": "text", 1635 - "version": 800, 1636 - "versionNonce": 1672958033, 1637 - "isDeleted": false, 1638 - "id": "eXnZm06LBcggIuGAsUnbk", 1639 - "fillStyle": "hachure", 1640 - "strokeWidth": 4, 1641 - "strokeStyle": "solid", 1642 - "roughness": 1, 1643 - "opacity": 100, 1644 - "angle": 0, 1645 - "x": 2525, 1646 - "y": 727.5, 1647 - "strokeColor": "#000000", 1648 - "backgroundColor": "transparent", 1649 - "width": 320, 1650 - "height": 45, 1651 - "seed": 1638544479, 1652 - "groupIds": [], 1653 - "strokeSharpness": "round", 1654 - "boundElements": [], 1655 - "updated": 1645433349444, 1656 - "link": null, 1657 - "locked": false, 1658 - "fontSize": 36, 1659 - "fontFamily": 1, 1660 - "text": "📍 Location", 1661 - "baseline": 32, 1662 - "textAlign": "center", 1663 - "verticalAlign": "middle", 1664 - "containerId": "pQPySPsT6v6O0aLlUxm0u", 1665 - "originalText": "📍 Location" 1666 - }, 1667 - { 1668 - "type": "rectangle", 1669 - "version": 790, 1670 - "versionNonce": 439442705, 1671 - "isDeleted": false, 1672 - "id": "jdZGh39LmJ7LJzmYND8-7", 1673 - "fillStyle": "solid", 1674 - "strokeWidth": 4, 1675 - "strokeStyle": "solid", 1676 - "roughness": 1, 1677 - "opacity": 100, 1678 - "angle": 0, 1679 - "x": 2340, 1680 - "y": 980, 1681 - "strokeColor": "#000000", 1682 - "backgroundColor": "#fff", 1683 - "width": 330, 1684 - "height": 100, 1685 - "seed": 10240337, 1686 - "groupIds": [], 1687 - "strokeSharpness": "round", 1688 - "boundElements": [ 1689 - { 1690 - "id": "Edl-N5KftPwASuWhursHF", 1691 - "type": "text" 1692 - }, 1693 - { 1694 - "id": "8FE7wLkICJapzVCxuqVAG", 1695 - "type": "arrow" 1696 - }, 1697 - { 1698 - "id": "Edl-N5KftPwASuWhursHF", 1699 - "type": "text" 1700 - }, 1701 - { 1702 - "id": "hjzcdZslDwds6XCsACBJ5", 1703 - "type": "arrow" 1704 - }, 1705 - { 1706 - "id": "Edl-N5KftPwASuWhursHF", 1707 - "type": "text" 1708 - }, 1709 - { 1710 - "id": "Edl-N5KftPwASuWhursHF", 1711 - "type": "text" 1712 - }, 1713 - { 1714 - "id": "kwcZGLpgnJ5w8pJtQ9skY", 1715 - "type": "arrow" 1716 - }, 1717 - { 1718 - "id": "x95g0mQsnbmS34SN4gGFp", 1719 - "type": "arrow" 1720 - }, 1721 - { 1722 - "id": "sNWIn0XXeDeADuf42h5sm", 1723 - "type": "arrow" 1724 - }, 1725 - { 1726 - "id": "47wOYDjcE11pBKXBN296U", 1727 - "type": "arrow" 1728 - }, 1729 - { 1730 - "id": "Edl-N5KftPwASuWhursHF", 1731 - "type": "text" 1732 - }, 1733 - { 1734 - "type": "text", 1735 - "id": "Edl-N5KftPwASuWhursHF" 1736 - } 1737 - ], 1738 - "updated": 1645433375929, 1739 - "link": null, 1740 - "locked": false 1741 - }, 1742 - { 1743 - "type": "text", 1744 - "version": 848, 1745 - "versionNonce": 1244960863, 1746 - "isDeleted": false, 1747 - "id": "Edl-N5KftPwASuWhursHF", 1748 - "fillStyle": "hachure", 1749 - "strokeWidth": 4, 1750 - "strokeStyle": "solid", 1751 - "roughness": 1, 1752 - "opacity": 100, 1753 - "angle": 0, 1754 - "x": 2345, 1755 - "y": 1007.5, 1756 - "strokeColor": "#000000", 1757 - "backgroundColor": "transparent", 1758 - "width": 320, 1759 - "height": 45, 1760 - "seed": 390068287, 1761 - "groupIds": [], 1762 - "strokeSharpness": "round", 1763 - "boundElements": [], 1764 - "updated": 1645433371530, 1765 - "link": null, 1766 - "locked": false, 1767 - "fontSize": 36, 1768 - "fontFamily": 1, 1769 - "text": "🧰 Assets", 1770 - "baseline": 32, 1771 - "textAlign": "center", 1772 - "verticalAlign": "middle", 1773 - "containerId": "jdZGh39LmJ7LJzmYND8-7", 1774 - "originalText": "🧰 Assets" 1775 - }, 1776 - { 1777 - "type": "arrow", 1778 - "version": 1086, 1779 - "versionNonce": 1217653553, 1780 - "isDeleted": false, 1781 - "id": "47wOYDjcE11pBKXBN296U", 1782 - "fillStyle": "hachure", 1783 - "strokeWidth": 4, 1784 - "strokeStyle": "solid", 1785 - "roughness": 1, 1786 - "opacity": 100, 1787 - "angle": 0, 1788 - "x": 2630.6574091419484, 1789 - "y": 819.49875489356, 1790 - "strokeColor": "#000000", 1791 - "backgroundColor": "transparent", 1792 - "width": 89.99994210899786, 1793 - "height": 140, 1794 - "seed": 579615807, 1795 - "groupIds": [], 1796 - "strokeSharpness": "round", 1797 - "boundElements": [], 1798 - "updated": 1645433375929, 1799 - "link": null, 1800 - "locked": false, 1801 - "startBinding": { 1802 - "focus": 0.030303030303030304, 1803 - "gap": 20, 1804 - "elementId": "pQPySPsT6v6O0aLlUxm0u" 1805 - }, 1806 - "endBinding": { 1807 - "focus": -0.030303030303030304, 1808 - "gap": 20, 1809 - "elementId": "jdZGh39LmJ7LJzmYND8-7" 1810 - }, 1811 - "lastCommittedPoint": null, 1812 - "startArrowhead": null, 1813 - "endArrowhead": "triangle", 1814 - "points": [ 1815 - [ 1816 - 0, 1817 - 0 1818 - ], 1819 - [ 1820 - -89.99994210899786, 1821 - 140 1822 - ] 1823 - ] 1824 - }, 1825 - { 1826 - "type": "rectangle", 1827 - "version": 689, 1828 - "versionNonce": 13630047, 1829 - "isDeleted": false, 1830 - "id": "4cXzp0BorbS6YEgj2M2gZ", 1831 - "fillStyle": "solid", 1832 - "strokeWidth": 4, 1833 - "strokeStyle": "solid", 1834 - "roughness": 1, 1835 - "opacity": 100, 1836 - "angle": 0, 1837 - "x": 2440, 1838 - "y": 1540, 1839 - "strokeColor": "#000000", 1840 - "backgroundColor": "#fff", 1841 - "width": 530, 1842 - "height": 100, 1843 - "seed": 2001873410, 1844 - "groupIds": [], 1845 - "strokeSharpness": "round", 1846 - "boundElements": [ 1847 - { 1848 - "id": "Pn9ScApytEXfWZZ6ZsQ93", 1849 - "type": "text" 1850 - }, 1851 - { 1852 - "id": "8FE7wLkICJapzVCxuqVAG", 1853 - "type": "arrow" 1854 - }, 1855 - { 1856 - "id": "Pn9ScApytEXfWZZ6ZsQ93", 1857 - "type": "text" 1858 - }, 1859 - { 1860 - "id": "R0whqZHzbVI0T_y1-0r1F", 1861 - "type": "arrow" 1862 - }, 1863 - { 1864 - "type": "text", 1865 - "id": "Pn9ScApytEXfWZZ6ZsQ93" 1866 - }, 1867 - { 1868 - "id": "sNWIn0XXeDeADuf42h5sm", 1869 - "type": "arrow" 1870 - }, 1871 - { 1872 - "id": "0H3ZpMitqjgcdj4qZKHed", 1873 - "type": "arrow" 1874 - }, 1875 - { 1876 - "id": "veDpKHoVufaxUazAgWc6p", 1877 - "type": "arrow" 1878 - } 1879 - ], 1880 - "updated": 1645425858827, 1881 - "link": null, 1882 - "locked": false 1883 - }, 1884 - { 1885 - "type": "text", 1886 - "version": 779, 1887 - "versionNonce": 806002449, 1888 - "isDeleted": false, 1889 - "id": "Pn9ScApytEXfWZZ6ZsQ93", 1890 - "fillStyle": "hachure", 1891 - "strokeWidth": 4, 1892 - "strokeStyle": "solid", 1893 - "roughness": 1, 1894 - "opacity": 100, 1895 - "angle": 0, 1896 - "x": 2445, 1897 - "y": 1567.5, 1898 - "strokeColor": "#000000", 1899 - "backgroundColor": "transparent", 1900 - "width": 520, 1901 - "height": 45, 1902 - "seed": 2109665054, 1903 - "groupIds": [], 1904 - "strokeSharpness": "round", 1905 - "boundElements": [], 1906 - "updated": 1645425858827, 1907 - "link": null, 1908 - "locked": false, 1909 - "fontSize": 36, 1910 - "fontFamily": 1, 1911 - "text": "🧪 External Results", 1912 - "baseline": 32, 1913 - "textAlign": "center", 1914 - "verticalAlign": "middle", 1915 - "containerId": "4cXzp0BorbS6YEgj2M2gZ", 1916 - "originalText": "🧪 External Results" 1917 - }, 1918 - { 1919 - "type": "rectangle", 1920 - "version": 637, 1921 - "versionNonce": 940303217, 1922 - "isDeleted": false, 1923 - "id": "_B5DvibyQRcm6M2yTcIPb", 1924 - "fillStyle": "solid", 1925 - "strokeWidth": 4, 1926 - "strokeStyle": "solid", 1927 - "roughness": 1, 1928 - "opacity": 100, 1929 - "angle": 0, 1930 - "x": 2540, 1931 - "y": 1760, 1932 - "strokeColor": "#000000", 1933 - "backgroundColor": "#fff", 1934 - "width": 330, 1935 - "height": 100, 1936 - "seed": 596734402, 1937 - "groupIds": [], 1938 - "strokeSharpness": "round", 1939 - "boundElements": [ 1940 - { 1941 - "id": "4X4CtQfK3FOS-et5hoS2G", 1942 - "type": "text" 1943 - }, 1944 - { 1945 - "id": "8FE7wLkICJapzVCxuqVAG", 1946 - "type": "arrow" 1947 - }, 1948 - { 1949 - "id": "4X4CtQfK3FOS-et5hoS2G", 1950 - "type": "text" 1951 - }, 1952 - { 1953 - "id": "hjzcdZslDwds6XCsACBJ5", 1954 - "type": "arrow" 1955 - }, 1956 - { 1957 - "id": "4X4CtQfK3FOS-et5hoS2G", 1958 - "type": "text" 1959 - }, 1960 - { 1961 - "type": "text", 1962 - "id": "4X4CtQfK3FOS-et5hoS2G" 1963 - }, 1964 - { 1965 - "id": "kwcZGLpgnJ5w8pJtQ9skY", 1966 - "type": "arrow" 1967 - }, 1968 - { 1969 - "id": "x95g0mQsnbmS34SN4gGFp", 1970 - "type": "arrow" 1971 - }, 1972 - { 1973 - "id": "sNWIn0XXeDeADuf42h5sm", 1974 - "type": "arrow" 1975 - }, 1976 - { 1977 - "id": "veDpKHoVufaxUazAgWc6p", 1978 - "type": "arrow" 1979 - } 1980 - ], 1981 - "updated": 1645425849417, 1982 - "link": null, 1983 - "locked": false 1984 - }, 1985 - { 1986 - "type": "text", 1987 - "version": 699, 1988 - "versionNonce": 1405262463, 1989 - "isDeleted": false, 1990 - "id": "4X4CtQfK3FOS-et5hoS2G", 1991 - "fillStyle": "hachure", 1992 - "strokeWidth": 4, 1993 - "strokeStyle": "solid", 1994 - "roughness": 1, 1995 - "opacity": 100, 1996 - "angle": 0, 1997 - "x": 2545, 1998 - "y": 1787.5, 1999 - "strokeColor": "#000000", 2000 - "backgroundColor": "transparent", 2001 - "width": 320, 2002 - "height": 45, 2003 - "seed": 768148318, 2004 - "groupIds": [], 2005 - "strokeSharpness": "round", 2006 - "boundElements": [], 2007 - "updated": 1645425894464, 2008 - "link": null, 2009 - "locked": false, 2010 - "fontSize": 36, 2011 - "fontFamily": 1, 2012 - "text": "😷 Patient", 2013 - "baseline": 32, 2014 - "textAlign": "center", 2015 - "verticalAlign": "middle", 2016 - "containerId": "_B5DvibyQRcm6M2yTcIPb", 2017 - "originalText": "😷 Patient" 2018 - }, 2019 - { 2020 - "type": "arrow", 2021 - "version": 426, 2022 - "versionNonce": 1183202641, 2023 - "isDeleted": false, 2024 - "id": "veDpKHoVufaxUazAgWc6p", 2025 - "fillStyle": "hachure", 2026 - "strokeWidth": 4, 2027 - "strokeStyle": "solid", 2028 - "roughness": 1, 2029 - "opacity": 100, 2030 - "angle": 0, 2031 - "x": 2697.9130144421642, 2032 - "y": 1660, 2033 - "strokeColor": "#000000", 2034 - "backgroundColor": "transparent", 2035 - "width": 1.1019283745372377, 2036 - "height": 80.00000000000023, 2037 - "seed": 737321885, 2038 - "groupIds": [], 2039 - "strokeSharpness": "round", 2040 - "boundElements": [], 2041 - "updated": 1645425859250, 2042 - "link": null, 2043 - "locked": false, 2044 - "startBinding": { 2045 - "elementId": "4cXzp0BorbS6YEgj2M2gZ", 2046 - "gap": 20, 2047 - "focus": 0.030303030303030304 2048 - }, 2049 - "endBinding": { 2050 - "elementId": "_B5DvibyQRcm6M2yTcIPb", 2051 - "gap": 20, 2052 - "focus": -0.030303030303030304 2053 - }, 2054 - "lastCommittedPoint": null, 2055 - "startArrowhead": null, 2056 - "endArrowhead": "triangle", 2057 - "points": [ 2058 - [ 2059 - 0, 2060 - 0 2061 - ], 2062 - [ 2063 - 1.1019283745372377, 2064 - 80.00000000000023 2065 - ] 2066 - ] 2067 - }, 2068 - { 2069 - "type": "arrow", 2070 - "version": 91, 2071 - "versionNonce": 1186429681, 2072 - "isDeleted": false, 2073 - "id": "98jNHdE2NTnwoAdy1TUGj", 2074 - "fillStyle": "solid", 2075 - "strokeWidth": 4, 2076 - "strokeStyle": "solid", 2077 - "roughness": 1, 2078 - "opacity": 100, 2079 - "angle": 0, 2080 - "x": 941.4010001204693, 2081 - "y": 1940.8555611979218, 2082 - "strokeColor": "#000000", 2083 - "backgroundColor": "#fff", 2084 - "width": 1.1387902393875038, 2085 - "height": 99.14443880207818, 2086 - "seed": 1820530847, 2087 - "groupIds": [], 2088 - "strokeSharpness": "round", 2089 - "boundElements": [], 2090 - "updated": 1645460646683, 2091 - "link": null, 2092 - "locked": false, 2093 - "startBinding": { 2094 - "focus": 0.016821099798808987, 2095 - "gap": 20.85556119792159, 2096 - "elementId": "KHrTtlpOhcS_24CDkPWS9" 2097 - }, 2098 - "endBinding": { 2099 - "focus": -0.03347030295786816, 2100 - "gap": 20, 2101 - "elementId": "7SRIIItAa_jEd8r-gFxtj" 2102 - }, 2103 - "lastCommittedPoint": null, 2104 - "startArrowhead": null, 2105 - "endArrowhead": "triangle", 2106 - "points": [ 2107 - [ 2108 - 0, 2109 - 0 2110 - ], 2111 - [ 2112 - -1.1387902393875038, 2113 - 99.14443880207818 2114 - ] 2115 - ] 2116 - }, 2117 - { 2118 - "type": "rectangle", 2119 - "version": 379, 2120 - "versionNonce": 1549626943, 2121 - "isDeleted": false, 2122 - "id": "7SRIIItAa_jEd8r-gFxtj", 2123 - "fillStyle": "solid", 2124 - "strokeWidth": 4, 2125 - "strokeStyle": "solid", 2126 - "roughness": 1, 2127 - "opacity": 100, 2128 - "angle": 0, 2129 - "x": 780, 2130 - "y": 2060, 2131 - "strokeColor": "#000000", 2132 - "backgroundColor": "#fff", 2133 - "width": 330, 2134 - "height": 100, 2135 - "seed": 1523956145, 2136 - "groupIds": [], 2137 - "strokeSharpness": "round", 2138 - "boundElements": [ 2139 - { 2140 - "id": "9oTetVfySqoiYvC6892oW", 2141 - "type": "text" 2142 - }, 2143 - { 2144 - "id": "9oTetVfySqoiYvC6892oW", 2145 - "type": "text" 2146 - }, 2147 - { 2148 - "id": "x_dHZSxV7Wk5G01-A09B0", 2149 - "type": "arrow" 2150 - }, 2151 - { 2152 - "id": "x95g0mQsnbmS34SN4gGFp", 2153 - "type": "arrow" 2154 - }, 2155 - { 2156 - "id": "sNWIn0XXeDeADuf42h5sm", 2157 - "type": "arrow" 2158 - }, 2159 - { 2160 - "id": "98jNHdE2NTnwoAdy1TUGj", 2161 - "type": "arrow" 2162 - }, 2163 - { 2164 - "type": "text", 2165 - "id": "9oTetVfySqoiYvC6892oW" 2166 - } 2167 - ], 2168 - "updated": 1645460602067, 2169 - "link": null, 2170 - "locked": false 2171 - }, 2172 - { 2173 - "type": "text", 2174 - "version": 390, 2175 - "versionNonce": 2097979903, 2176 - "isDeleted": false, 2177 - "id": "9oTetVfySqoiYvC6892oW", 2178 - "fillStyle": "hachure", 2179 - "strokeWidth": 4, 2180 - "strokeStyle": "solid", 2181 - "roughness": 1, 2182 - "opacity": 100, 2183 - "angle": 0, 2184 - "x": 785, 2185 - "y": 2087.5, 2186 - "strokeColor": "#000000", 2187 - "backgroundColor": "transparent", 2188 - "width": 320, 2189 - "height": 45, 2190 - "seed": 834713055, 2191 - "groupIds": [], 2192 - "strokeSharpness": "round", 2193 - "boundElements": [], 2194 - "updated": 1645460602067, 2195 - "link": null, 2196 - "locked": false, 2197 - "fontSize": 36, 2198 - "fontFamily": 1, 2199 - "text": "🚚 Shifting", 2200 - "baseline": 32, 2201 - "textAlign": "center", 2202 - "verticalAlign": "middle", 2203 - "containerId": "7SRIIItAa_jEd8r-gFxtj", 2204 - "originalText": "🚚 Shifting" 2205 - }, 2206 - { 2207 - "type": "rectangle", 2208 - "version": 814, 2209 - "versionNonce": 1981413201, 2210 - "isDeleted": false, 2211 - "id": "OAFsv-nGLkUB2l2Jhkjdz", 2212 - "fillStyle": "solid", 2213 - "strokeWidth": 4, 2214 - "strokeStyle": "solid", 2215 - "roughness": 1, 2216 - "opacity": 100, 2217 - "angle": 0, 2218 - "x": 2780, 2219 - "y": 980, 2220 - "strokeColor": "#000000", 2221 - "backgroundColor": "#fff", 2222 - "width": 330, 2223 - "height": 100, 2224 - "seed": 210306321, 2225 - "groupIds": [], 2226 - "strokeSharpness": "round", 2227 - "boundElements": [ 2228 - { 2229 - "id": "WdAWfiRgaXE25MVVxfzVm", 2230 - "type": "text" 2231 - }, 2232 - { 2233 - "id": "8FE7wLkICJapzVCxuqVAG", 2234 - "type": "arrow" 2235 - }, 2236 - { 2237 - "id": "WdAWfiRgaXE25MVVxfzVm", 2238 - "type": "text" 2239 - }, 2240 - { 2241 - "id": "hjzcdZslDwds6XCsACBJ5", 2242 - "type": "arrow" 2243 - }, 2244 - { 2245 - "id": "WdAWfiRgaXE25MVVxfzVm", 2246 - "type": "text" 2247 - }, 2248 - { 2249 - "id": "WdAWfiRgaXE25MVVxfzVm", 2250 - "type": "text" 2251 - }, 2252 - { 2253 - "id": "kwcZGLpgnJ5w8pJtQ9skY", 2254 - "type": "arrow" 2255 - }, 2256 - { 2257 - "id": "x95g0mQsnbmS34SN4gGFp", 2258 - "type": "arrow" 2259 - }, 2260 - { 2261 - "id": "sNWIn0XXeDeADuf42h5sm", 2262 - "type": "arrow" 2263 - }, 2264 - { 2265 - "id": "dzo1aCJ_MUHHl5SOsBGQj", 2266 - "type": "arrow" 2267 - }, 2268 - { 2269 - "type": "text", 2270 - "id": "WdAWfiRgaXE25MVVxfzVm" 2271 - } 2272 - ], 2273 - "updated": 1645433397611, 2274 - "link": null, 2275 - "locked": false 2276 - }, 2277 - { 2278 - "type": "text", 2279 - "version": 883, 2280 - "versionNonce": 385139775, 2281 - "isDeleted": false, 2282 - "id": "WdAWfiRgaXE25MVVxfzVm", 2283 - "fillStyle": "hachure", 2284 - "strokeWidth": 4, 2285 - "strokeStyle": "solid", 2286 - "roughness": 1, 2287 - "opacity": 100, 2288 - "angle": 0, 2289 - "x": 2785, 2290 - "y": 1007.5, 2291 - "strokeColor": "#000000", 2292 - "backgroundColor": "transparent", 2293 - "width": 320, 2294 - "height": 45, 2295 - "seed": 541216895, 2296 - "groupIds": [], 2297 - "strokeSharpness": "round", 2298 - "boundElements": [], 2299 - "updated": 1645433405358, 2300 - "link": null, 2301 - "locked": false, 2302 - "fontSize": 36, 2303 - "fontFamily": 1, 2304 - "text": "🛌 Beds", 2305 - "baseline": 32, 2306 - "textAlign": "center", 2307 - "verticalAlign": "middle", 2308 - "containerId": "OAFsv-nGLkUB2l2Jhkjdz", 2309 - "originalText": "🛌 Beds" 2310 - }, 2311 - { 2312 - "type": "arrow", 2313 - "version": 1182, 2314 - "versionNonce": 201895807, 2315 - "isDeleted": false, 2316 - "id": "dzo1aCJ_MUHHl5SOsBGQj", 2317 - "fillStyle": "hachure", 2318 - "strokeWidth": 4, 2319 - "strokeStyle": "solid", 2320 - "roughness": 1, 2321 - "opacity": 100, 2322 - "angle": 0, 2323 - "x": 2750.2526616107816, 2324 - "y": 819.4987548935601, 2325 - "strokeColor": "#000000", 2326 - "backgroundColor": "transparent", 2327 - "width": 100.72773055995731, 2328 - "height": 140.5012451064399, 2329 - "seed": 942160625, 2330 - "groupIds": [], 2331 - "strokeSharpness": "round", 2332 - "boundElements": [], 2333 - "updated": 1645433398900, 2334 - "link": null, 2335 - "locked": false, 2336 - "startBinding": { 2337 - "elementId": "pQPySPsT6v6O0aLlUxm0u", 2338 - "focus": -0.07681424833982711, 2339 - "gap": 19.498754893559976 2340 - }, 2341 - "endBinding": { 2342 - "elementId": "OAFsv-nGLkUB2l2Jhkjdz", 2343 - "focus": -0.21825403991236692, 2344 - "gap": 20 2345 - }, 2346 - "lastCommittedPoint": null, 2347 - "startArrowhead": null, 2348 - "endArrowhead": "triangle", 2349 - "points": [ 2350 - [ 2351 - 0, 2352 - 0 2353 - ], 2354 - [ 2355 - 100.72773055995731, 2356 - 140.5012451064399 2357 - ] 2358 - ] 2359 - }, 2360 - { 2361 - "type": "rectangle", 2362 - "version": 404, 2363 - "versionNonce": 1053206687, 2364 - "isDeleted": false, 2365 - "id": "ImQZ8mAS4VKAI3OzCqGyQ", 2366 - "fillStyle": "solid", 2367 - "strokeWidth": 4, 2368 - "strokeStyle": "solid", 2369 - "roughness": 1, 2370 - "opacity": 100, 2371 - "angle": 0, 2372 - "x": 1260, 2373 - "y": 2060, 2374 - "strokeColor": "#000000", 2375 - "backgroundColor": "#fff", 2376 - "width": 420, 2377 - "height": 100, 2378 - "seed": 329164113, 2379 - "groupIds": [], 2380 - "strokeSharpness": "round", 2381 - "boundElements": [ 2382 - { 2383 - "id": "0dlSfJc_XpCNEWIAWt0qU", 2384 - "type": "text" 2385 - }, 2386 - { 2387 - "id": "0dlSfJc_XpCNEWIAWt0qU", 2388 - "type": "text" 2389 - }, 2390 - { 2391 - "id": "x_dHZSxV7Wk5G01-A09B0", 2392 - "type": "arrow" 2393 - }, 2394 - { 2395 - "id": "x95g0mQsnbmS34SN4gGFp", 2396 - "type": "arrow" 2397 - }, 2398 - { 2399 - "id": "sNWIn0XXeDeADuf42h5sm", 2400 - "type": "arrow" 2401 - }, 2402 - { 2403 - "id": "98jNHdE2NTnwoAdy1TUGj", 2404 - "type": "arrow" 2405 - }, 2406 - { 2407 - "type": "text", 2408 - "id": "0dlSfJc_XpCNEWIAWt0qU" 2409 - } 2410 - ], 2411 - "updated": 1645460646683, 2412 - "link": null, 2413 - "locked": false 2414 - }, 2415 - { 2416 - "type": "text", 2417 - "version": 444, 2418 - "versionNonce": 1826550879, 2419 - "isDeleted": false, 2420 - "id": "0dlSfJc_XpCNEWIAWt0qU", 2421 - "fillStyle": "hachure", 2422 - "strokeWidth": 4, 2423 - "strokeStyle": "solid", 2424 - "roughness": 1, 2425 - "opacity": 100, 2426 - "angle": 0, 2427 - "x": 1265, 2428 - "y": 2087.5, 2429 - "strokeColor": "#000000", 2430 - "backgroundColor": "transparent", 2431 - "width": 410, 2432 - "height": 45, 2433 - "seed": 1996870719, 2434 - "groupIds": [], 2435 - "strokeSharpness": "round", 2436 - "boundElements": [], 2437 - "updated": 1645460646683, 2438 - "link": null, 2439 - "locked": false, 2440 - "fontSize": 36, 2441 - "fontFamily": 1, 2442 - "text": "📄 Consultation", 2443 - "baseline": 32, 2444 - "textAlign": "center", 2445 - "verticalAlign": "middle", 2446 - "containerId": "ImQZ8mAS4VKAI3OzCqGyQ", 2447 - "originalText": "📄 Consultation" 2448 - }, 2449 - { 2450 - "type": "rectangle", 2451 - "version": 445, 2452 - "versionNonce": 1083987487, 2453 - "isDeleted": false, 2454 - "id": "Hv-68mjx-mgufRlmiaZA4", 2455 - "fillStyle": "solid", 2456 - "strokeWidth": 4, 2457 - "strokeStyle": "solid", 2458 - "roughness": 1, 2459 - "opacity": 100, 2460 - "angle": 0, 2461 - "x": 180, 2462 - "y": 2060, 2463 - "strokeColor": "#000000", 2464 - "backgroundColor": "#fff", 2465 - "width": 420, 2466 - "height": 100, 2467 - "seed": 98298078, 2468 - "groupIds": [], 2469 - "strokeSharpness": "round", 2470 - "boundElements": [ 2471 - { 2472 - "id": "Cda75FkxVeHPZyEIcRiOd", 2473 - "type": "text" 2474 - }, 2475 - { 2476 - "type": "text", 2477 - "id": "Cda75FkxVeHPZyEIcRiOd" 2478 - }, 2479 - { 2480 - "id": "x_dHZSxV7Wk5G01-A09B0", 2481 - "type": "arrow" 2482 - }, 2483 - { 2484 - "id": "x95g0mQsnbmS34SN4gGFp", 2485 - "type": "arrow" 2486 - }, 2487 - { 2488 - "id": "sNWIn0XXeDeADuf42h5sm", 2489 - "type": "arrow" 2490 - }, 2491 - { 2492 - "id": "98jNHdE2NTnwoAdy1TUGj", 2493 - "type": "arrow" 2494 - } 2495 - ], 2496 - "updated": 1645460650783, 2497 - "link": null, 2498 - "locked": false 2499 - }, 2500 - { 2501 - "type": "text", 2502 - "version": 486, 2503 - "versionNonce": 1720901457, 2504 - "isDeleted": false, 2505 - "id": "Cda75FkxVeHPZyEIcRiOd", 2506 - "fillStyle": "hachure", 2507 - "strokeWidth": 4, 2508 - "strokeStyle": "solid", 2509 - "roughness": 1, 2510 - "opacity": 100, 2511 - "angle": 0, 2512 - "x": 185, 2513 - "y": 2087.5, 2514 - "strokeColor": "#000000", 2515 - "backgroundColor": "transparent", 2516 - "width": 410, 2517 - "height": 45, 2518 - "seed": 1155144706, 2519 - "groupIds": [], 2520 - "strokeSharpness": "round", 2521 - "boundElements": [], 2522 - "updated": 1645460650783, 2523 - "link": null, 2524 - "locked": false, 2525 - "fontSize": 36, 2526 - "fontFamily": 1, 2527 - "text": "📄 Consultation", 2528 - "baseline": 32, 2529 - "textAlign": "center", 2530 - "verticalAlign": "middle", 2531 - "containerId": "Hv-68mjx-mgufRlmiaZA4", 2532 - "originalText": "📄 Consultation" 2533 - } 2534 - ], 2535 - "appState": { 2536 - "gridSize": 20, 2537 - "viewBackgroundColor": "#ffffff" 2538 - }, 2539 - "files": { 2540 - "6e7f938662c850d09594b17cfe4272f22e2a8062": { 2541 - "mimeType": "image/png", 2542 - "id": "6e7f938662c850d09594b17cfe4272f22e2a8062", 2543 - "dataURL": "data:image/png;base64,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", 2544 - "created": 1645965487597 2545 - } 2546 - } 2547 - }
docs/glossary/contents/CareConceptDiagram.png

This is a binary file and will not be displayed.

docs/glossary/images/Assets.png

This is a binary file and will not be displayed.

docs/glossary/images/Capacity.png

This is a binary file and will not be displayed.

docs/glossary/images/External.png

This is a binary file and will not be displayed.

docs/glossary/images/Facility.png

This is a binary file and will not be displayed.

docs/glossary/images/Hierarchy.png

This is a binary file and will not be displayed.

docs/glossary/images/Inventory.png

This is a binary file and will not be displayed.

docs/glossary/images/Location.png

This is a binary file and will not be displayed.

+3 -20
docs/index.rst
··· 10 10 :maxdepth: 4 11 11 :caption: Contents: 12 12 13 - local-setup/configuration 14 - pycharm/configuration 15 - working-components/configuration 16 - django-configuration/configuration 17 - pluggable-apps/configuration 18 - django-commands/configuration 19 - github-repo/configuration 20 - others/configuration 21 - glossary/configuration 22 - middleware/configuration 23 - databases/backup 24 - 25 - 26 - 27 - Indices and tables 28 - ================== 29 - 30 - * :ref:`genindex` 31 - * :ref:`modindex` 32 - * :ref:`search` 13 + development/index 14 + setup/index 15 + source/index
docs/local-setup/configuration.rst docs/development/local-setup.rst
-8
docs/middleware/configuration.rst
··· 1 - Connecting with Middleware 2 - ========================== 3 - 4 - The requests from middleware server should contain: 5 - 6 - - The auth token must be of :code:`Middleware_Bearer` realm. 7 - - The configured :code:`facility_id` in :code:`X-Facility-Id` header. 8 - - The authentication header must contain :code:`asset_id` in the JWT.
docs/nix-development.md docs/development/nix-development.md
docs/others/configuration.rst docs/setup/keys.rst
docs/pluggable-apps/configuration.md docs/development/pluggable-apps.md
-70
docs/pycharm/configuration.rst
··· 1 - Debugging with Pycharm 2 - ======================= 3 - 4 - To connect to python remote interpreter inside docker, you have to make sure first, that Pycharm is aware of your docker. 5 - 6 - Go to *Settings > Build, Execution, Deployment > Docker*. If you are on linux, you can use docker directly using its socket `unix:///var/run/docker.sock`, if you are on Windows or Mac, make sure that you have docker-machine installed, then you can simply *Import credentials from Docker Machine*. 7 - 8 - .. image:: images/1.png 9 - 10 - Configure Remote Python Interpreter 11 - ----------------------------------- 12 - 13 - This repository comes with already prepared "Run/Debug Configurations" for docker. 14 - 15 - .. image:: images/2.png 16 - 17 - But as you can see, at the beginning there is something wrong with them. They have red X on django icon, and they cannot be used, without configuring remote python interpteter. To do that, you have to go to *Settings > Build, Execution, Deployment* first. 18 - 19 - 20 - Next, you have to add new remote python interpreter, based on already tested deployment settings. Go to *Settings > Project > Project Interpreter*. Click on the cog icon, and click *Add Remote*. 21 - 22 - .. image:: images/3.png 23 - 24 - Switch to *Docker Compose* and select `local.yml` file from directory of your project, next set *Service name* to `django` 25 - 26 - .. image:: images/4.png 27 - 28 - Having that, click *OK*. Close *Settings* panel, and wait few seconds... 29 - 30 - .. image:: images/7.png 31 - 32 - After few seconds, all *Run/Debug Configurations* should be ready to use. 33 - 34 - .. image:: images/8.png 35 - 36 - **Things you can do with provided configuration**: 37 - 38 - * run and debug python code 39 - 40 - .. image:: images/f1.png 41 - 42 - * run and debug tests 43 - 44 - .. image:: images/f2.png 45 - .. image:: images/f3.png 46 - 47 - * run and debug migrations or different django management commands 48 - 49 - .. image:: images/f4.png 50 - 51 - * and many others.. 52 - 53 - Known issues 54 - ------------ 55 - 56 - * Pycharm hangs on "Connecting to Debugger" 57 - 58 - .. image:: images/issue1.png 59 - 60 - This might be fault of your firewall. Take a look on this ticket - https://youtrack.jetbrains.com/issue/PY-18913 61 - 62 - * Modified files in `.idea` directory 63 - 64 - Most of the files from `.idea/` were added to `.gitignore` with a few exceptions, which were made, to provide "ready to go" configuration. After adding remote interpreter some of these files are altered by PyCharm: 65 - 66 - .. image:: images/issue2.png 67 - 68 - In theory you can remove them from repository, but then, other people will lose a ability to initialize a project from provided configurations as you did. To get rid of this annoying state, you can run command:: 69 - 70 - $ git update-index --assume-unchanged care.iml
docs/pycharm/images/1.png

This is a binary file and will not be displayed.

docs/pycharm/images/2.png

This is a binary file and will not be displayed.

docs/pycharm/images/3.png

This is a binary file and will not be displayed.

docs/pycharm/images/4.png

This is a binary file and will not be displayed.

docs/pycharm/images/7.png

This is a binary file and will not be displayed.

docs/pycharm/images/8.png

This is a binary file and will not be displayed.

docs/pycharm/images/f1.png

This is a binary file and will not be displayed.

docs/pycharm/images/f2.png

This is a binary file and will not be displayed.

docs/pycharm/images/f3.png

This is a binary file and will not be displayed.

docs/pycharm/images/f4.png

This is a binary file and will not be displayed.

docs/pycharm/images/issue1.png

This is a binary file and will not be displayed.

docs/pycharm/images/issue2.png

This is a binary file and will not be displayed.

+8
docs/setup/index.rst
··· 1 + Setting Up Care 2 + =============== 3 + 4 + .. toctree:: 5 + :maxdepth: 4 6 + 7 + keys 8 + database-backup
+7
docs/source/index.rst
··· 1 + Care source code documentation 2 + ============================== 3 + 4 + .. toctree:: 5 + :maxdepth: 10 6 + 7 + generated/modules
-40
docs/working-components/configuration.rst
··· 1 - Working Components 2 - ================== 3 - 4 - This page explains the various components that make up the backend 5 - 6 - Backend (Django) 7 - ---------------- 8 - The Backend is a Django application server with gunicorn, it uses the default gunicorn workers and processes count, It can only serve ( 2 * No of cores ) requests at a time per deployed instance, Since the application involves very little CPU, ideally The Backend Deployments need very little CPU and memory allocation. Increasing the number of gunicorn instances with the help of a load balancer can scale the application up. 9 - 10 - Task Scheduler (celery beat) 11 - ---------------------------- 12 - This is a scheduler that schedules jobs at certain intervals similar to at Cron Job, The task scheduler is responsible for summarizing data at periodic intervals, the scheduler only schedules the job, it does not execute the actual job, because of this it is crucial that there is always only one instance of the scheduler running at any scale. 13 - 14 - Task Worker (celery worker) 15 - --------------------------- 16 - The celery worker is used to asynchronously execute code, The summary jobs are an example of a task that should be executed asynchronously. This project also creates notifications for events, produces discharge summaries which are all run as background tasks with celery. Celery requires a scheduler to schedule its tasks, by default it uses Redis to Schedule jobs and to store the results, this can be changed to use RabbitMq Instead. Using the database for this purpose is highly discouraged. 17 - 18 - Database (PostgreSQL) 19 - --------------------- 20 - Care uses a Postgresql database. 21 - 22 - Cache (Redis) 23 - ------------- 24 - Redis is used in a lot on API routes to cache data at the Request Layer, it is also used in various contexts to store intermediate query results, all permissions structures are cached in redis to avoid multiple queries to be executed on each API request, it is also intelligent enough to remove the caches when the permission model it describes changes. 25 - 26 - Bucket (S3) 27 - ----------- 28 - Care is built to use AWS S3 as the primary object storage but it can work with any provider that supports the S3 API, it primarily uses three buckets, one public bucket to store static data like CSS/js/images used by the Backend and one bucket stores facility data (e.g., Facility Cover Image). There is a private bucket to store confidential patient information, ideally, this bucket should have encryption at rest and encryption in transit enabled. Access to the patient bucket is given on request only through signed requests, Uploads also happen in a similar manner, The Upload mechanism randomizes names and removes all relations with the patient so that even in a worst-case scenario the damages can be minimalized. 29 - 30 - SMS Gateway (AWS SNS) 31 - --------------------- 32 - Care uses SNS as an SMS Gateway, the SMS feature is used for patient login via OTP and for Shifting updates. 33 - 34 - Email Gateway (AWS SES) 35 - ----------------------- 36 - Care uses emails to send discharge summaries, reset password tokens, and crash reports. 37 - 38 - Reporting Infrastructure 39 - ------------------------ 40 - Since care by itself cannot produce a really detailed summary of its data, it is advised to use Metabase or Superset as external Business Intelligence tools and connect a Read Replica of the primary database with PII fields masked. This will allow much higher visibility into the actual data and make better data-driven decisions. If you are using Metabase you can ask the ohcnetwork team to share the existing dashboard structure for simplicity. Care Databases are designed to provide easy and configurable Reporting.