class="time-since" title="Fri, 26 Nov 2021 04:40:11 UTC">4 年之前 woocommerce-th-a65b4ddf263e8c410e9bcbfd6e6d72e4.json d01d7cf85d first commit 4 年之前 woocommerce-th-a8b73b087444470c8f4396b7142908f6.json d01d7cf85d first commit 4 年之前 woocommerce-th-abb904b047b7be3be9d638e2c6144691.json d01d7cf85d first commit 4 年之前 woocommerce-th-ae1c49c8c0597593a9c36e106a04bd60.json d01d7cf85d first commit 4 年之前 woocommerce-th-aed4ce3ede1d44a8fecfe0edfbf8421c.json d01d7cf85d first commit 4 年之前 woocommerce-th-af52ab8cb2e7713cf3037751dd593965.json d01d7cf85d first commit 4 年之前 woocommerce-th-afbede9cda22f594a80ae8b178e0e98c.json d01d7cf85d first commit 4 年之前 woocommerce-th-afd1e270efc2e8283acfd50ccab18d2b.json d01d7cf85d first commit 4 年之前 woocommerce-th-b007baff76144318d6c33cd26f4bfdb9.json d01d7cf85d first commit 4 年之前 woocommerce-th-b0a592b6fe83588c5d1b8ed6850b6a74.json d01d7cf85d first commit 4 年之前 woocommerce-th-b155b7bf28890099b74a84417cbaafe9.json d01d7cf85d first commit 4 年之前 woocommerce-th-b1bb8fbd24d68a9c893faf1a6f7b493b.json d01d7cf85d first commit 4 年之前 woocommerce-th-b1bcbab1d6a7ca6b0433d67776f347f1.json d01d7cf85d first commit 4 年之前 woocommerce-th-b239ff15197a133498a4b025f002dee5.json d01d7cf85d first commit 4 年之前 woocommerce-th-b2e956ee35340f6e47f27f8a54309ac3.json d01d7cf85d first commit 4 年之前 woocommerce-th-b31f51fa0bb40ceb060aaa9f77ca1771.json d01d7cf85d first commit 4 年之前 woocommerce-th-b3f83696a2cb49f571043ce14a384a76.json d01d7cf85d first commit 4 年之前 woocommerce-th-b4bf1e55ca6145f38f1b2f104201da21.json d01d7cf85d first commit 4 年之前 woocommerce-th-b826befd7acca93e8e4c12b7cd2fc7f1.json d01d7cf85d first commit 4 年之前 woocommerce-th-b9bf1ca91d393a30e2461ef709f8fa10.json d01d7cf85d first commit 4 年之前 woocommerce-th-ba8d2fb7c85928310d4f3a907b7d9bdd.json d01d7cf85d first commit 4 年之前 woocommerce-th-bb0f027faa1257de4b730158475093de.json d01d7cf85d first commit 4 年之前 woocommerce-th-bb5c5935ec0d64e8880b1c7794470460.json d01d7cf85d first commit 4 年之前 woocommerce-th-bc1f4f7aec77a0a6dd229cc910f601f1.json d01d7cf85d first commit 4 年之前 woocommerce-th-bc9c3f9eda462d6d9968c1dca51e7c62.json d01d7cf85d first commit 4 年之前 woocommerce-th-bcb06ab6e8931a862dec9c07c66df45b.json d01d7cf85d first commit 4 年之前 woocommerce-th-c06829f63f73ae430c10ae700fb1eb6d.json d01d7cf85d first commit 4 年之前 woocommerce-th-c0faba84c7842505f8893c2c327a9f78.json d01d7cf85d first commit 4 年之前 woocommerce-th-c13acd243559529a685813d9871026a1.json d01d7cf85d first commit 4 年之前 woocommerce-th-c1bc39bcdee2da3c0b62bcd5372120f4.json d01d7cf85d first commit 4 年之前 woocommerce-th-c22945301f466e2d78d6e80404a22664.json d01d7cf85d first commit 4 年之前 woocommerce-th-c2435bc8dfd186b147aba658416d115e.json d01d7cf85d first commit 4 年之前 woocommerce-th-c257c024e3db4e010644d2c7be3c7090.json d01d7cf85d first commit 4 年之前 woocommerce-th-c2d9a34cf502bd5b5a80ca646a1420b3.json d01d7cf85d first commit 4 年之前 woocommerce-th-c5702ace609dd30ccabd4c999de43096.json d01d7cf85d first commit 4 年之前 woocommerce-th-c608fe5deda8db7667c8431ca6fd222a.json d01d7cf85d first commit 4 年之前 woocommerce-th-c6c5331d3afe1391f2ca83e991ccc086.json d01d7cf85d first commit 4 年之前 woocommerce-th-c70671124b0e00661f88fe1616dfc9f0.json d01d7cf85d first commit 4 年之前 woocommerce-th-c8cbe8ef95155db152b270d441fc8528.json d01d7cf85d first commit 4 年之前 woocommerce-th-c8ddf2164475a213274d06873bfbb73a.json d01d7cf85d first commit 4 年之前 woocommerce-th-c93706e596cbd46fb0d621f4fe3efb80.json d01d7cf85d first commit 4 年之前 woocommerce-th-ca3cd4394cb082bde7555ebd3bb5f143.json d01d7cf85d first commit 4 年之前 woocommerce-th-cb71ce5ddcc7c808172e80a0dc9833d5.json d01d7cf85d first commit 4 年之前 woocommerce-th-cc16013df9d4b0a0ba45297b90b06f20.json d01d7cf85d first commit 4 年之前 woocommerce-th-ccc500b0b722a0c96712f1634cbb7289.json d01d7cf85d first commit 4 年之前 woocommerce-th-cd9fc1d9fc46b55bb32d0fd471457690.json d01d7cf85d first commit 4 年之前 woocommerce-th-ce3f8f2f3e0f3c58f8aea5b7aa5cc6f4.json d01d7cf85d first commit 4 年之前 woocommerce-th-d05ee634b22d05f0055b724443f05a68.json d01d7cf85d first commit 4 年之前 woocommerce-th-d0d05e0dda872b433f260969b4d53b30.json d01d7cf85d first commit 4 年之前 woocommerce-th-d0fa7cd1cd624e53cc7b4fde655c20af.json d01d7cf85d first commit 4 年之前 woocommerce-th-d2b4400b6de0e69404e0f7f61d16bc55.json d01d7cf85d first commit 4 年之前 woocommerce-th-d3e57c518feb58ab8ea4f9d2d8e66160.json d01d7cf85d first commit 4 年之前 woocommerce-th-d4c505e96199e8c818fc6d24151d9c4a.json d01d7cf85d first commit 4 年之前 woocommerce-th-d5ea33028f13b50f40bbcce807e37fc0.json d01d7cf85d first commit 4 年之前 woocommerce-th-d6f4faa954a31ef3d5b74c2dfe13f141.json d01d7cf85d first commit 4 年之前 woocommerce-th-d7bbe90eb59636eb8a6f31c7979ab6f5.json d01d7cf85d first commit 4 年之前 woocommerce-th-d80020dab74131d7f0c108526c0fbebe.json d01d7cf85d first commit 4 年之前 woocommerce-th-da92a9b2d4c08762c60d7c4c569eb5db.json d01d7cf85d first commit 4 年之前 woocommerce-th-de12a4697822740a2fbaeb47c5062af1.json d01d7cf85d first commit 4 年之前 woocommerce-th-deed2aed3392b43c83c7cea296b154af.json d01d7cf85d first commit 4 年之前 woocommerce-th-df51042cba56a4e9fcac0e5db643906a.json d01d7cf85d first commit 4 年之前 woocommerce-th-dfb09f9953676bbc1de4eb2b9f232c6d.json d01d7cf85d first commit 4 年之前 woocommerce-th-dfbfe3d556f60ebbd62c2b5c8e0fa466.json d01d7cf85d first commit 4 年之前 woocommerce-th-e03ec35386c2705c11cebd6288b33cf8.json d01d7cf85d first commit 4 年之前 woocommerce-th-e0bde0ac58f55fc6b1426844e6697db3.json d01d7cf85d first commit 4 年之前 woocommerce-th-e0f9c7d89b1b130a9023c5c2fde2815e.json d01d7cf85d first commit 4 年之前 woocommerce-th-e41c58d5fb39f750efcbf65a2b55460b.json d01d7cf85d first commit 4 年之前 woocommerce-th-e44671e4528b0da3a0fd6feaf8abadca.json d01d7cf85d first commit 4 年之前 woocommerce-th-e4fbc8d7fc7a16bd8cf2e0522a199de0.json d01d7cf85d first commit 4 年之前 woocommerce-th-e690486b33a7bb1944a37f6e734d734f.json d01d7cf85d first commit 4 年之前 woocommerce-th-e80539b9960e930bf0dcd334d99eb128.json d01d7cf85d first commit 4 年之前 woocommerce-th-e885442559cb44e8b827f0e0ca0a14c9.json d01d7cf85d first commit 4 年之前 woocommerce-th-e88dc35c02f6fa832e90fac5a122323c.json d01d7cf85d first commit 4 年之前 woocommerce-th-ea6fb371f81c4d3584bbc795fa4ac09c.json d01d7cf85d first commit 4 年之前 woocommerce-th-ed9b16000a6d37c51bf23c61f4df878e.json d01d7cf85d first commit 4 年之前 woocommerce-th-ef5798395d7601ab6fea0f1efd60f40a.json d01d7cf85d first commit 4 年之前 woocommerce-th-f31b0aa0c71dd74b7103120610ca6253.json d01d7cf85d first commit 4 年之前 woocommerce-th-f34924aeff974b0bdbfac124c23fbfe3.json d01d7cf85d first commit 4 年之前 woocommerce-th-f39008456fd28b2f79cdb0964ff294e1.json d01d7cf85d first commit 4 年之前 woocommerce-th-f3f1cc4f5811d4bf8a04a58feca06858.json d01d7cf85d first commit 4 年之前 woocommerce-th-f56e66fd08c07abc78cd844f7e83af8c.json d01d7cf85d first commit 4 年之前 woocommerce-th-f60049653c419cfb1e3dc8876e7a8bdb.json d01d7cf85d first commit 4 年之前 woocommerce-th-f686a272add740773cdcb730afdb5454.json d01d7cf85d first commit 4 年之前 woocommerce-th-f976da155dfdd080588c50ccda5af747.json d01d7cf85d first commit 4 年之前 woocommerce-th-f9c56a0cbb6710505047e6c835953c82.json d01d7cf85d first commit 4 年之前 woocommerce-th-fb2ef023bdd44902b5a309e25e0b7792.json d01d7cf85d first commit 4 年之前 woocommerce-th-fc1fe56fadfdeeb25d1bc441581d92b6.json d01d7cf85d first commit 4 年之前 woocommerce-th-fc4895b6508f32c16c4d8bc69f8162b6.json d01d7cf85d first commit 4 年之前 woocommerce-th-fd20fc8ea1484781160e8ea0d229d5e9.json d01d7cf85d first commit 4 年之前 woocommerce-th-fffdec5db595ec0ca7d043c87bae79b8.json d01d7cf85d first commit 4 年之前 woocommerce-th-wc-admin-app.json d01d7cf85d first commit 4 年之前 woocommerce-th.mo d01d7cf85d first commit 4 年之前 woocommerce-th.po d01d7cf85d first commit 4 年之前 first commit · a4345e5759 - Gogs: Simplico Git Service
tum 4 lat temu
commit
a4345e5759
100 zmienionych plików z 836 dodań i 0 usunięć
  1. 11 0
      Dockerfile
  2. 0 0
      backend/__init__.py
  3. BIN
      backend/__pycache__/__init__.cpython-39.pyc
  4. BIN
      backend/__pycache__/admin.cpython-39.pyc
  5. BIN
      backend/__pycache__/apps.cpython-39.pyc
  6. BIN
      backend/__pycache__/models.cpython-39.pyc
  7. BIN
      backend/__pycache__/urls.cpython-39.pyc
  8. BIN
      backend/__pycache__/views.cpython-39.pyc
  9. 57 0
      backend/admin.py
  10. 6 0
      backend/apps.py
  11. 26 0
      backend/migrations/0001_initial.py
  12. 20 0
      backend/migrations/0002_hospital_geolocation.py
  13. 19 0
      backend/migrations/0003_alter_hospital_address.py
  14. 19 0
      backend/migrations/0004_alter_hospital_location.py
  15. 18 0
      backend/migrations/0005_hospital_address_text.py
  16. 34 0
      backend/migrations/0006_bed_patient.py
  17. 24 0
      backend/migrations/0007_auto_20210718_0249.py
  18. 23 0
      backend/migrations/0008_auto_20210718_0659.py
  19. 23 0
      backend/migrations/0009_auto_20210718_0702.py
  20. 24 0
      backend/migrations/0010_auto_20210718_0713.py
  21. 29 0
      backend/migrations/0011_auto_20210718_0722.py
  22. 18 0
      backend/migrations/0012_patient_comment.py
  23. 28 0
      backend/migrations/0013_patientlog.py
  24. 20 0
      backend/migrations/0014_alter_patientlog_bed.py
  25. 20 0
      backend/migrations/0015_alter_patientlog_bed.py
  26. 29 0
      backend/migrations/0016_auto_20210718_1031.py
  27. 43 0
      backend/migrations/0017_ambulance_driver.py
  28. 19 0
      backend/migrations/0018_ambulance_color.py
  29. 27 0
      backend/migrations/0019_ambulanceticket.py
  30. 18 0
      backend/migrations/0020_driver_status.py
  31. 24 0
      backend/migrations/0021_auto_20210719_0014.py
  32. 21 0
      backend/migrations/0022_auto_20210719_0024.py
  33. 25 0
      backend/migrations/0023_place.py
  34. 0 0
      backend/migrations/__init__.py
  35. BIN
      backend/migrations/__pycache__/0001_initial.cpython-39.pyc
  36. BIN
      backend/migrations/__pycache__/0002_hospital_geolocation.cpython-39.pyc
  37. BIN
      backend/migrations/__pycache__/0003_alter_hospital_address.cpython-39.pyc
  38. BIN
      backend/migrations/__pycache__/0004_alter_hospital_location.cpython-39.pyc
  39. BIN
      backend/migrations/__pycache__/0005_hospital_address_text.cpython-39.pyc
  40. BIN
      backend/migrations/__pycache__/0006_bed_patient.cpython-39.pyc
  41. BIN
      backend/migrations/__pycache__/0007_auto_20210718_0246.cpython-39.pyc
  42. BIN
      backend/migrations/__pycache__/0007_auto_20210718_0249.cpython-39.pyc
  43. BIN
      backend/migrations/__pycache__/0008_alter_patient_prefix.cpython-39.pyc
  44. BIN
      backend/migrations/__pycache__/0008_auto_20210718_0659.cpython-39.pyc
  45. BIN
      backend/migrations/__pycache__/0009_auto_20210718_0702.cpython-39.pyc
  46. BIN
      backend/migrations/__pycache__/0010_auto_20210718_0711.cpython-39.pyc
  47. BIN
      backend/migrations/__pycache__/0010_auto_20210718_0713.cpython-39.pyc
  48. BIN
      backend/migrations/__pycache__/0011_auto_20210718_0722.cpython-39.pyc
  49. BIN
      backend/migrations/__pycache__/0012_patient_comment.cpython-39.pyc
  50. BIN
      backend/migrations/__pycache__/0013_patientlog.cpython-39.pyc
  51. BIN
      backend/migrations/__pycache__/0014_alter_patientlog_bed.cpython-39.pyc
  52. BIN
      backend/migrations/__pycache__/0015_alter_patientlog_bed.cpython-39.pyc
  53. BIN
      backend/migrations/__pycache__/0016_auto_20210718_1031.cpython-39.pyc
  54. BIN
      backend/migrations/__pycache__/0017_ambulance_driver.cpython-39.pyc
  55. BIN
      backend/migrations/__pycache__/0018_ambulance_color.cpython-39.pyc
  56. BIN
      backend/migrations/__pycache__/0019_ambulanceticket.cpython-39.pyc
  57. BIN
      backend/migrations/__pycache__/0020_driver_status.cpython-39.pyc
  58. BIN
      backend/migrations/__pycache__/0021_auto_20210719_0014.cpython-39.pyc
  59. BIN
      backend/migrations/__pycache__/0022_auto_20210719_0024.cpython-39.pyc
  60. BIN
      backend/migrations/__pycache__/0023_place.cpython-39.pyc
  61. BIN
      backend/migrations/__pycache__/__init__.cpython-39.pyc
  62. 192 0
      backend/models.py
  63. 3 0
      backend/tests.py
  64. 7 0
      backend/urls.py
  65. 8 0
      backend/views.py
  66. 1 0
      data/db/PG_VERSION
  67. BIN
      data/db/base/1/112
  68. BIN
      data/db/base/1/113
  69. BIN
      data/db/base/1/1247
  70. BIN
      data/db/base/1/1247_fsm
  71. BIN
      data/db/base/1/1247_vm
  72. BIN
      data/db/base/1/1249
  73. BIN
      data/db/base/1/1249_fsm
  74. BIN
      data/db/base/1/1249_vm
  75. BIN
      data/db/base/1/1255
  76. BIN
      data/db/base/1/1255_fsm
  77. BIN
      data/db/base/1/1255_vm
  78. BIN
      data/db/base/1/1259
  79. BIN
      data/db/base/1/1259_fsm
  80. BIN
      data/db/base/1/1259_vm
  81. BIN
      data/db/base/1/13245
  82. BIN
      data/db/base/1/13245_fsm
  83. BIN
      data/db/base/1/13245_vm
  84. 0 0
      data/db/base/1/13247
  85. BIN
      data/db/base/1/13249
  86. BIN
      data/db/base/1/13250
  87. BIN
      data/db/base/1/13250_fsm
  88. BIN
      data/db/base/1/13250_vm
  89. 0 0
      data/db/base/1/13252
  90. BIN
      data/db/base/1/13254
  91. BIN
      data/db/base/1/13255
  92. BIN
      data/db/base/1/13255_fsm
  93. BIN
      data/db/base/1/13255_vm
  94. 0 0
      data/db/base/1/13257
  95. BIN
      data/db/base/1/13259
  96. BIN
      data/db/base/1/13260
  97. BIN
      data/db/base/1/13260_fsm
  98. BIN
      data/db/base/1/13260_vm
  99. 0 0
      data/db/base/1/13262
  100. 0 0
      data/db/base/1/13264

+ 11 - 0
Dockerfile

1
+# syntax=docker/dockerfile:1
2
+FROM python:3
3
+ENV PYTHONUNBUFFERED=1
4
+WORKDIR /code
5
+COPY requirements.txt /code/
6
+RUN apt-get update && apt-get install -y \
7
+        gettext \
8
+        xfonts-thai \
9
+        gdal-bin libgdal-dev python3-gdal binutils libproj-dev
10
+RUN pip install -r requirements.txt
11
+COPY . /code/

+ 0 - 0
backend/__init__.py


BIN
backend/__pycache__/__init__.cpython-39.pyc


BIN
backend/__pycache__/admin.cpython-39.pyc


BIN
backend/__pycache__/apps.cpython-39.pyc


BIN
backend/__pycache__/models.cpython-39.pyc


BIN
backend/__pycache__/urls.cpython-39.pyc


BIN
backend/__pycache__/views.cpython-39.pyc


+ 57 - 0
backend/admin.py

1
+from django.contrib import admin
2
+from django.contrib.gis.admin import OSMGeoAdmin
3
+from .models import Hospital, Patient, Bed, PatientLog, Driver, Ambulance, AmbulanceTicket, Place
4
+from django_google_maps import widgets as map_widgets
5
+from django_google_maps import fields as map_fields
6
+from django_json_widget.widgets import JSONEditorWidget
7
+from django.db import models
8
+
9
+
10
+#@admin.register(Bed)
11
+
12
+@admin.register(AmbulanceTicket)
13
+class AmbulanceTicketAdmin(admin.ModelAdmin):
14
+    list_display = ('driver', 'ambulance', 'checkin_at', 'checkout_at', 'status')
15
+
16
+@admin.register(Place)
17
+class PlaceAdmin(admin.ModelAdmin):
18
+    formfield_overrides = {
19
+        map_fields.AddressField: {'widget': map_widgets.GoogleMapsAddressWidget},
20
+        models.JSONField: {'widget': JSONEditorWidget},
21
+    }
22
+    #pass
23
+    #list_display = ('driver', 'ambulance', 'checkin_at', 'checkout_at', 'status')
24
+
25
+@admin.register(Ambulance)
26
+class AmbulanceAdmin(admin.ModelAdmin):
27
+    list_display = ('code', 'license_plate', 'brand', 'status')
28
+
29
+@admin.register(Driver)
30
+class DriverAdmin(admin.ModelAdmin):
31
+    pass
32
+
33
+class BedAdmin(admin.TabularInline):
34
+    model = Bed
35
+
36
+
37
+class PatientLogAdmin(admin.StackedInline):
38
+    model = PatientLog
39
+    #fields = ('hospital', 'notes', 'condition_level', 'status')
40
+
41
+@admin.register(Hospital)
42
+class HospitalAdmin(OSMGeoAdmin):
43
+    list_display = ('title', 'address', 'geolocation')
44
+    inlines = [BedAdmin,]
45
+    fields = ('title', 'address_text', 'address', 'geolocation',)
46
+    formfield_overrides = {
47
+        map_fields.AddressField: {'widget': map_widgets.GoogleMapsAddressWidget},
48
+    }
49
+
50
+
51
+
52
+@admin.register(Patient)
53
+class PatientAdmin(admin.ModelAdmin):
54
+    formfield_overrides = {
55
+        map_fields.AddressField: {'widget': map_widgets.GoogleMapsAddressWidget},
56
+    }
57
+    inlines = [PatientLogAdmin,]

+ 6 - 0
backend/apps.py

1
+from django.apps import AppConfig
2
+
3
+
4
+class BackendConfig(AppConfig):
5
+    default_auto_field = 'django.db.models.BigAutoField'
6
+    name = 'backend'

+ 26 - 0
backend/migrations/0001_initial.py

1
+# Generated by Django 3.2.5 on 2021-07-17 14:58
2
+
3
+import django.contrib.gis.db.models.fields
4
+from django.db import migrations, models
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    initial = True
10
+
11
+    dependencies = [
12
+    ]
13
+
14
+    operations = [
15
+        migrations.CreateModel(
16
+            name='Hospital',
17
+            fields=[
18
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+                ('title', models.CharField(max_length=200)),
20
+                ('location', django.contrib.gis.db.models.fields.PointField(srid=4326)),
21
+                ('address', models.CharField(max_length=100)),
22
+                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
23
+                ('updated_at', models.DateTimeField(auto_now=True)),
24
+            ],
25
+        ),
26
+    ]

+ 20 - 0
backend/migrations/0002_hospital_geolocation.py

1
+# Generated by Django 3.2.5 on 2021-07-17 15:30
2
+
3
+from django.db import migrations
4
+import django_google_maps.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0001_initial'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='hospital',
16
+            name='geolocation',
17
+            field=django_google_maps.fields.GeoLocationField(default=None, max_length=100),
18
+            preserve_default=False,
19
+        ),
20
+    ]

+ 19 - 0
backend/migrations/0003_alter_hospital_address.py

1
+# Generated by Django 3.2.5 on 2021-07-17 15:39
2
+
3
+from django.db import migrations
4
+import django_google_maps.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0002_hospital_geolocation'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AlterField(
15
+            model_name='hospital',
16
+            name='address',
17
+            field=django_google_maps.fields.AddressField(max_length=200),
18
+        ),
19
+    ]

+ 19 - 0
backend/migrations/0004_alter_hospital_location.py

1
+# Generated by Django 3.2.5 on 2021-07-17 15:54
2
+
3
+import django.contrib.gis.db.models.fields
4
+from django.db import migrations
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0003_alter_hospital_address'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AlterField(
15
+            model_name='hospital',
16
+            name='location',
17
+            field=django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326),
18
+        ),
19
+    ]

+ 18 - 0
backend/migrations/0005_hospital_address_text.py

1
+# Generated by Django 3.2.5 on 2021-07-17 15:56
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0004_alter_hospital_location'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='hospital',
15
+            name='address_text',
16
+            field=models.TextField(blank=True, null=True),
17
+        ),
18
+    ]

+ 34 - 0
backend/migrations/0006_bed_patient.py

1
+# Generated by Django 3.2.5 on 2021-07-17 16:17
2
+
3
+from django.db import migrations, models
4
+import django.db.models.deletion
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0005_hospital_address_text'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.CreateModel(
15
+            name='Patient',
16
+            fields=[
17
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18
+                ('first_name', models.CharField(max_length=100)),
19
+                ('last_name', models.CharField(max_length=100)),
20
+            ],
21
+        ),
22
+        migrations.CreateModel(
23
+            name='Bed',
24
+            fields=[
25
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
26
+                ('code', models.CharField(max_length=30)),
27
+                ('occupy', models.BooleanField(default=False)),
28
+                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
29
+                ('updated_at', models.DateTimeField(auto_now=True)),
30
+                ('hospital', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.hospital')),
31
+                ('patient', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.patient')),
32
+            ],
33
+        ),
34
+    ]

+ 24 - 0
backend/migrations/0007_auto_20210718_0249.py

1
+# Generated by Django 3.2.5 on 2021-07-18 02:49
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0006_bed_patient'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='age',
16
+            field=models.IntegerField(default=5),
17
+            preserve_default=False,
18
+        ),
19
+        migrations.AddField(
20
+            model_name='patient',
21
+            name='prefix',
22
+            field=models.CharField(choices=[('นางสาว', 'นางสาว'), ('นาย', 'นาย'), ('นาง', 'นาง'), ('ด.ช.', 'เด็กชาย'), ('ด.ญ.', 'เด็กหญิง')], max_length=30, null=True),
23
+        ),
24
+    ]

+ 23 - 0
backend/migrations/0008_auto_20210718_0659.py

1
+# Generated by Django 3.2.5 on 2021-07-18 06:59
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0007_auto_20210718_0249'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='idcard',
16
+            field=models.CharField(max_length=20, null=True),
17
+        ),
18
+        migrations.AddField(
19
+            model_name='patient',
20
+            name='sex',
21
+            field=models.CharField(choices=[('Male', 'male'), ('Female', 'female')], max_length=30, null=True),
22
+        ),
23
+    ]

+ 23 - 0
backend/migrations/0009_auto_20210718_0702.py

1
+# Generated by Django 3.2.5 on 2021-07-18 07:02
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0008_auto_20210718_0659'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='photo',
16
+            field=models.FileField(blank=True, upload_to='uploads/%Y/%m/%d/', verbose_name='Photo'),
17
+        ),
18
+        migrations.AlterField(
19
+            model_name='patient',
20
+            name='sex',
21
+            field=models.CharField(choices=[('male', 'Male'), ('female', 'Female')], max_length=30, null=True),
22
+        ),
23
+    ]

+ 24 - 0
backend/migrations/0010_auto_20210718_0713.py

1
+# Generated by Django 3.2.5 on 2021-07-18 07:13
2
+
3
+from django.db import migrations
4
+import django_google_maps.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0009_auto_20210718_0702'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='patient',
16
+            name='address',
17
+            field=django_google_maps.fields.AddressField(blank=True, max_length=200, null=True),
18
+        ),
19
+        migrations.AddField(
20
+            model_name='patient',
21
+            name='geolocation',
22
+            field=django_google_maps.fields.GeoLocationField(blank=True, max_length=100, null=True),
23
+        ),
24
+    ]

+ 29 - 0
backend/migrations/0011_auto_20210718_0722.py

1
+# Generated by Django 3.2.5 on 2021-07-18 07:22
2
+
3
+from django.db import migrations, models
4
+import django_google_maps.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0010_auto_20210718_0713'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='patient',
16
+            name='condition_level',
17
+            field=models.CharField(choices=[('green', 'Green'), ('yellow', 'Yellow'), ('red', 'Red')], max_length=30, null=True),
18
+        ),
19
+        migrations.AlterField(
20
+            model_name='patient',
21
+            name='address',
22
+            field=django_google_maps.fields.AddressField(max_length=200, null=True),
23
+        ),
24
+        migrations.AlterField(
25
+            model_name='patient',
26
+            name='geolocation',
27
+            field=django_google_maps.fields.GeoLocationField(max_length=100, null=True),
28
+        ),
29
+    ]

+ 18 - 0
backend/migrations/0012_patient_comment.py

1
+# Generated by Django 3.2.5 on 2021-07-18 07:24
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0011_auto_20210718_0722'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='comment',
16
+            field=models.TextField(blank=True, null=True),
17
+        ),
18
+    ]

+ 28 - 0
backend/migrations/0013_patientlog.py

1
+# Generated by Django 3.2.5 on 2021-07-18 07:29
2
+
3
+from django.db import migrations, models
4
+import django.db.models.deletion
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0012_patient_comment'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.CreateModel(
15
+            name='PatientLog',
16
+            fields=[
17
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18
+                ('notes', models.TextField(blank=True, null=True)),
19
+                ('condition_level', models.CharField(choices=[('green', 'Green'), ('yellow', 'Yellow'), ('red', 'Red')], max_length=30, null=True)),
20
+                ('status', models.CharField(choices=[('active', 'Active'), ('inactive', 'Inactive'), ('transfer', 'Transfer')], max_length=30, null=True)),
21
+                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
22
+                ('updated_at', models.DateTimeField(auto_now=True)),
23
+                ('bed', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.bed')),
24
+                ('hospital', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='backend.hospital')),
25
+                ('patient', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.patient')),
26
+            ],
27
+        ),
28
+    ]

+ 20 - 0
backend/migrations/0014_alter_patientlog_bed.py

1
+# Generated by Django 3.2.5 on 2021-07-18 07:49
2
+
3
+from django.db import migrations
4
+import django.db.models.deletion
5
+import smart_selects.db_fields
6
+
7
+
8
+class Migration(migrations.Migration):
9
+
10
+    dependencies = [
11
+        ('backend', '0013_patientlog'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.AlterField(
16
+            model_name='patientlog',
17
+            name='bed',
18
+            field=smart_selects.db_fields.GroupedForeignKey(group_field='hospital', null=True, on_delete=django.db.models.deletion.CASCADE, to='backend.bed'),
19
+        ),
20
+    ]

+ 20 - 0
backend/migrations/0015_alter_patientlog_bed.py

1
+# Generated by Django 3.2.5 on 2021-07-18 07:59
2
+
3
+from django.db import migrations
4
+import django.db.models.deletion
5
+import smart_selects.db_fields
6
+
7
+
8
+class Migration(migrations.Migration):
9
+
10
+    dependencies = [
11
+        ('backend', '0014_alter_patientlog_bed'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.AlterField(
16
+            model_name='patientlog',
17
+            name='bed',
18
+            field=smart_selects.db_fields.ChainedForeignKey(auto_choose=True, chained_field='hospital', chained_model_field='hospital', null=True, on_delete=django.db.models.deletion.CASCADE, to='backend.bed'),
19
+        ),
20
+    ]

+ 29 - 0
backend/migrations/0016_auto_20210718_1031.py

1
+# Generated by Django 3.2.5 on 2021-07-18 10:31
2
+
3
+from django.db import migrations, models
4
+import django.db.models.deletion
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0015_alter_patientlog_bed'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='patientlog',
16
+            name='checkin_at',
17
+            field=models.DateTimeField(blank=True, null=True),
18
+        ),
19
+        migrations.AddField(
20
+            model_name='patientlog',
21
+            name='checkout_at',
22
+            field=models.DateTimeField(blank=True, null=True),
23
+        ),
24
+        migrations.AlterField(
25
+            model_name='bed',
26
+            name='patient',
27
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.patient'),
28
+        ),
29
+    ]

+ 43 - 0
backend/migrations/0017_ambulance_driver.py

1
+# Generated by Django 3.2.5 on 2021-07-18 10:43
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0016_auto_20210718_1031'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.CreateModel(
14
+            name='Ambulance',
15
+            fields=[
16
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17
+                ('code', models.CharField(max_length=100)),
18
+                ('license_plate', models.CharField(max_length=100)),
19
+                ('brand', models.CharField(max_length=100)),
20
+                ('model_name', models.CharField(max_length=100)),
21
+                ('comment', models.TextField(blank=True, null=True)),
22
+                ('status', models.CharField(choices=[('working', 'Working'), ('free', 'Free'), ('ma', 'MA')], max_length=30, null=True)),
23
+                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
24
+                ('updated_at', models.DateTimeField(auto_now=True)),
25
+            ],
26
+        ),
27
+        migrations.CreateModel(
28
+            name='Driver',
29
+            fields=[
30
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
31
+                ('first_name', models.CharField(max_length=100)),
32
+                ('last_name', models.CharField(max_length=100)),
33
+                ('age', models.IntegerField()),
34
+                ('idcard', models.CharField(max_length=20, null=True)),
35
+                ('prefix', models.CharField(choices=[('นางสาว', 'นางสาว'), ('นาย', 'นาย'), ('นาง', 'นาง'), ('ด.ช.', 'เด็กชาย'), ('ด.ญ.', 'เด็กหญิง')], max_length=30, null=True)),
36
+                ('sex', models.CharField(choices=[('male', 'Male'), ('female', 'Female')], max_length=30, null=True)),
37
+                ('photo', models.FileField(blank=True, upload_to='uploads/%Y/%m/%d/', verbose_name='Photo')),
38
+                ('address', models.TextField(blank=True, null=True)),
39
+                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
40
+                ('updated_at', models.DateTimeField(auto_now=True)),
41
+            ],
42
+        ),
43
+    ]

+ 19 - 0
backend/migrations/0018_ambulance_color.py

1
+# Generated by Django 3.2.5 on 2021-07-18 10:56
2
+
3
+import colorfield.fields
4
+from django.db import migrations
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0017_ambulance_driver'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='ambulance',
16
+            name='color',
17
+            field=colorfield.fields.ColorField(default='#FF0000', max_length=18),
18
+        ),
19
+    ]

+ 27 - 0
backend/migrations/0019_ambulanceticket.py

1
+# Generated by Django 3.2.5 on 2021-07-18 16:25
2
+
3
+from django.db import migrations, models
4
+import django.db.models.deletion
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0018_ambulance_color'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.CreateModel(
15
+            name='AmbulanceTicket',
16
+            fields=[
17
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18
+                ('status', models.CharField(choices=[('working', 'Working'), ('free', 'Free'), ('ma', 'MA')], max_length=30, null=True)),
19
+                ('checkin_at', models.DateTimeField(blank=True, null=True)),
20
+                ('checkout_at', models.DateTimeField(blank=True, null=True)),
21
+                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
22
+                ('updated_at', models.DateTimeField(auto_now=True)),
23
+                ('ambulance', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.ambulance')),
24
+                ('driver', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.driver')),
25
+            ],
26
+        ),
27
+    ]

+ 18 - 0
backend/migrations/0020_driver_status.py

1
+# Generated by Django 3.2.5 on 2021-07-18 16:51
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0019_ambulanceticket'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='driver',
15
+            name='status',
16
+            field=models.CharField(choices=[('working', 'Working'), ('free', 'Free'), ('block', 'Block')], max_length=30, null=True),
17
+        ),
18
+    ]

+ 24 - 0
backend/migrations/0021_auto_20210719_0014.py

1
+# Generated by Django 3.2.5 on 2021-07-18 17:14
2
+
3
+from django.db import migrations
4
+import django_google_maps.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0020_driver_status'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='hospital',
16
+            name='address2',
17
+            field=django_google_maps.fields.AddressField(max_length=200, null=True),
18
+        ),
19
+        migrations.AddField(
20
+            model_name='hospital',
21
+            name='geolocation2',
22
+            field=django_google_maps.fields.GeoLocationField(max_length=100, null=True),
23
+        ),
24
+    ]

+ 21 - 0
backend/migrations/0022_auto_20210719_0024.py

1
+# Generated by Django 3.2.5 on 2021-07-18 17:24
2
+
3
+from django.db import migrations
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0021_auto_20210719_0014'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.RemoveField(
14
+            model_name='hospital',
15
+            name='address2',
16
+        ),
17
+        migrations.RemoveField(
18
+            model_name='hospital',
19
+            name='geolocation2',
20
+        ),
21
+    ]

+ 25 - 0
backend/migrations/0023_place.py

1
+# Generated by Django 3.2.5 on 2021-07-18 17:29
2
+
3
+from django.db import migrations, models
4
+import django_google_maps.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0022_auto_20210719_0024'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.CreateModel(
15
+            name='Place',
16
+            fields=[
17
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18
+                ('address', django_google_maps.fields.AddressField(max_length=200)),
19
+                ('geolocation', django_google_maps.fields.GeoLocationField(max_length=100)),
20
+                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
21
+                ('updated_at', models.DateTimeField(auto_now=True)),
22
+                ('more_info', models.JSONField(blank=True, null=True)),
23
+            ],
24
+        ),
25
+    ]

+ 0 - 0
backend/migrations/__init__.py


BIN
backend/migrations/__pycache__/0001_initial.cpython-39.pyc


BIN
backend/migrations/__pycache__/0002_hospital_geolocation.cpython-39.pyc


BIN
backend/migrations/__pycache__/0003_alter_hospital_address.cpython-39.pyc


BIN
backend/migrations/__pycache__/0004_alter_hospital_location.cpython-39.pyc


BIN
backend/migrations/__pycache__/0005_hospital_address_text.cpython-39.pyc


BIN
backend/migrations/__pycache__/0006_bed_patient.cpython-39.pyc


BIN
backend/migrations/__pycache__/0007_auto_20210718_0246.cpython-39.pyc


BIN
backend/migrations/__pycache__/0007_auto_20210718_0249.cpython-39.pyc


BIN
backend/migrations/__pycache__/0008_alter_patient_prefix.cpython-39.pyc


BIN
backend/migrations/__pycache__/0008_auto_20210718_0659.cpython-39.pyc


BIN
backend/migrations/__pycache__/0009_auto_20210718_0702.cpython-39.pyc


BIN
backend/migrations/__pycache__/0010_auto_20210718_0711.cpython-39.pyc


BIN
backend/migrations/__pycache__/0010_auto_20210718_0713.cpython-39.pyc


BIN
backend/migrations/__pycache__/0011_auto_20210718_0722.cpython-39.pyc


BIN
backend/migrations/__pycache__/0012_patient_comment.cpython-39.pyc


BIN
backend/migrations/__pycache__/0013_patientlog.cpython-39.pyc


BIN
backend/migrations/__pycache__/0014_alter_patientlog_bed.cpython-39.pyc


BIN
backend/migrations/__pycache__/0015_alter_patientlog_bed.cpython-39.pyc


BIN
backend/migrations/__pycache__/0016_auto_20210718_1031.cpython-39.pyc


BIN
backend/migrations/__pycache__/0017_ambulance_driver.cpython-39.pyc


BIN
backend/migrations/__pycache__/0018_ambulance_color.cpython-39.pyc


BIN
backend/migrations/__pycache__/0019_ambulanceticket.cpython-39.pyc


BIN
backend/migrations/__pycache__/0020_driver_status.cpython-39.pyc


BIN
backend/migrations/__pycache__/0021_auto_20210719_0014.cpython-39.pyc


BIN
backend/migrations/__pycache__/0022_auto_20210719_0024.cpython-39.pyc


BIN
backend/migrations/__pycache__/0023_place.cpython-39.pyc


BIN
backend/migrations/__pycache__/__init__.cpython-39.pyc


+ 192 - 0
backend/models.py

1
+#from django.db import models
2
+from django.contrib.gis.db import models
3
+from django_google_maps import fields as map_fields
4
+from colorfield.fields import ColorField
5
+#from smart_selects.db_fields import GroupedForeignKey
6
+from smart_selects.db_fields import (
7
+    ChainedForeignKey,
8
+    ChainedManyToManyField,
9
+    GroupedForeignKey,
10
+)
11
+# Create your models here.
12
+GENDER_CHOICES = (
13
+    ('นางสาว','นางสาว'),
14
+    ('นาย','นาย'),
15
+    ('นาง', 'นาง'),
16
+    ("ด.ช.","เด็กชาย"),
17
+    ("ด.ญ.","เด็กหญิง"),
18
+)
19
+
20
+class Ambulance(models.Model):
21
+    code = models.CharField(max_length=100)
22
+    license_plate = models.CharField(max_length=100)
23
+    brand = models.CharField(max_length=100)
24
+    model_name = models.CharField(max_length=100)
25
+    comment  = models.TextField(blank=True, null=True)
26
+
27
+    color = ColorField(default='#FF0000')
28
+    status = models.CharField(
29
+        max_length=30,
30
+        choices=(("working", "Working"), ("free", "Free"), ("ma", "MA")),
31
+        null=True,
32
+    )
33
+
34
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
35
+    updated_at = models.DateTimeField(auto_now=True)
36
+
37
+    def __str__(self):
38
+        return f"{self.license_plate} ({self.get_status_display()}) {self.code} {self.brand} / {self.model_name}"
39
+
40
+class Driver(models.Model):
41
+    first_name = models.CharField(max_length=100)
42
+    last_name = models.CharField(max_length=100)
43
+    age = models.IntegerField()
44
+    idcard = models.CharField(max_length=20, null=True, blank=False)
45
+    prefix = models.CharField(
46
+        max_length=30,
47
+        choices=GENDER_CHOICES,
48
+        null=True,
49
+    )
50
+    sex = models.CharField(
51
+        max_length=30,
52
+        choices=(("male", "Male"), ("female", "Female"),),
53
+        null=True,
54
+    )
55
+    photo  = models.FileField(upload_to="uploads/%Y/%m/%d/", blank=True, verbose_name="Photo")
56
+
57
+    address  = models.TextField(blank=True, null=True)
58
+    #test
59
+    status = models.CharField(
60
+        max_length=30,
61
+        choices=(("working", "Working"), ("free", "Free"), ("block", "Block")),
62
+        null=True,
63
+    )
64
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
65
+    updated_at = models.DateTimeField(auto_now=True)
66
+
67
+    def __str__(self):
68
+        return f"{self.first_name} {self.last_name} ({self.get_status_display()})"
69
+
70
+class AmbulanceTicket(models.Model):
71
+    driver = models.ForeignKey(Driver, on_delete=models.SET_NULL, null=True)
72
+    ambulance = models.ForeignKey(Ambulance, on_delete=models.SET_NULL, null=True)
73
+
74
+    status = models.CharField(
75
+        max_length=30,
76
+        choices=(("working", "Working"), ("free", "Free"), ("ma", "MA")),
77
+        null=True,
78
+    )
79
+
80
+    checkin_at = models.DateTimeField(null=True, blank=True)
81
+    checkout_at = models.DateTimeField(null=True, blank=True)
82
+
83
+
84
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
85
+    updated_at = models.DateTimeField(auto_now=True)
86
+
87
+
88
+    def save(self, *args, **kwargs):
89
+        super(AmbulanceTicket, self).save(*args, **kwargs)
90
+        self.ambulance.status = self.status
91
+        self.ambulance.save()
92
+        self.driver.status = "working"
93
+        self.driver.save()
94
+
95
+    def __str__(self):
96
+        return f"{self.driver}@{self.ambulance}"
97
+
98
+class Patient(models.Model):
99
+    first_name = models.CharField(max_length=100)
100
+    last_name = models.CharField(max_length=100)
101
+    age = models.IntegerField()
102
+    idcard = models.CharField(max_length=20, null=True, blank=False)
103
+    prefix = models.CharField(
104
+        max_length=30,
105
+        choices=GENDER_CHOICES,
106
+        null=True,
107
+    )
108
+    sex = models.CharField(
109
+        max_length=30,
110
+        choices=(("male", "Male"), ("female", "Female"),),
111
+        null=True,
112
+    )
113
+    photo  = models.FileField(upload_to="uploads/%Y/%m/%d/", blank=True, verbose_name="Photo")
114
+
115
+    address = map_fields.AddressField(max_length=200, null=True)
116
+    geolocation = map_fields.GeoLocationField(max_length=100, null=True)
117
+    condition_level = models.CharField(
118
+        max_length=30,
119
+        choices=(("green", "Green"), ("yellow", "Yellow"), ("red", "Red")),
120
+        null=True,
121
+    )
122
+    comment  = models.TextField(blank=True, null=True)
123
+    #test
124
+    def __str__(self):
125
+        return f"{self.first_name} {self.last_name}"
126
+
127
+class Place(models.Model):
128
+    address = map_fields.AddressField(max_length=200)
129
+    geolocation = map_fields.GeoLocationField(max_length=100)
130
+
131
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
132
+    updated_at = models.DateTimeField(auto_now=True)
133
+
134
+    more_info  = models.JSONField(null=True, blank=True)
135
+
136
+class Hospital(models.Model):
137
+    title = models.CharField(max_length=200)
138
+    location = models.PointField(blank=True, null=True)
139
+    address_text = models.TextField(blank=True, null=True)
140
+    #address = models.CharField(max_length=100)
141
+    address = map_fields.AddressField(max_length=200)
142
+    geolocation = map_fields.GeoLocationField(max_length=100)
143
+
144
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
145
+    updated_at = models.DateTimeField(auto_now=True)
146
+
147
+    def __str__(self):
148
+        return f"{self.title} {self.address_text}"
149
+
150
+
151
+class Bed(models.Model):
152
+    code = models.CharField(max_length=30)
153
+    occupy = models.BooleanField(default=False)
154
+    patient = models.ForeignKey(Patient, on_delete=models.SET_NULL, null=True, blank=True)
155
+    hospital = models.ForeignKey(Hospital, on_delete=models.CASCADE)
156
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
157
+    updated_at = models.DateTimeField(auto_now=True)
158
+
159
+
160
+    def __str__(self):
161
+        return self.code
162
+
163
+
164
+class PatientLog(models.Model):
165
+    patient = models.ForeignKey(Patient, on_delete=models.SET_NULL, null=True)
166
+    hospital = models.ForeignKey(Hospital, on_delete=models.CASCADE, null=True)
167
+    bed = ChainedForeignKey(
168
+        "Bed",
169
+        chained_field="hospital",
170
+        chained_model_field="hospital",
171
+        show_all=False,
172
+        auto_choose=True,
173
+        null=True
174
+    )
175
+    notes  = models.TextField(blank=True, null=True)
176
+    condition_level = models.CharField(
177
+        max_length=30,
178
+        choices=(("green", "Green"), ("yellow", "Yellow"), ("red", "Red")),
179
+        null=True,
180
+    )
181
+    status = models.CharField(
182
+        max_length=30,
183
+        choices=(("active", "Active"), ("inactive", "Inactive"), ("transfer", "Transfer")),
184
+        null=True,
185
+    )
186
+    checkin_at = models.DateTimeField(null=True, blank=True)
187
+    checkout_at = models.DateTimeField(null=True, blank=True)
188
+
189
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
190
+    updated_at = models.DateTimeField(auto_now=True)
191
+
192
+

+ 3 - 0
backend/tests.py

1
+from django.test import TestCase
2
+
3
+# Create your tests here.

+ 7 - 0
backend/urls.py

1
+from django.urls import path
2
+
3
+from . import views
4
+
5
+urlpatterns = [
6
+    path('', views.index, name='index'),
7
+]

+ 8 - 0
backend/views.py

1
+from django.shortcuts import render
2
+
3
+# Create your views here.
4
+from django.http import HttpResponse
5
+
6
+
7
+def index(request):
8
+    return HttpResponse("Hello, world. You're at the polls index.")

+ 1 - 0
data/db/PG_VERSION

1
+13

BIN
data/db/base/1/112


BIN
data/db/base/1/113


BIN
data/db/base/1/1247


BIN
data/db/base/1/1247_fsm


BIN
data/db/base/1/1247_vm


BIN
data/db/base/1/1249


BIN
data/db/base/1/1249_fsm


BIN
data/db/base/1/1249_vm


BIN
data/db/base/1/1255


BIN
data/db/base/1/1255_fsm


BIN
data/db/base/1/1255_vm


BIN
data/db/base/1/1259


BIN
data/db/base/1/1259_fsm


BIN
data/db/base/1/1259_vm


BIN
data/db/base/1/13245


BIN
data/db/base/1/13245_fsm


BIN
data/db/base/1/13245_vm


+ 0 - 0
data/db/base/1/13247


BIN
data/db/base/1/13249


BIN
data/db/base/1/13250


BIN
data/db/base/1/13250_fsm


BIN
data/db/base/1/13250_vm


+ 0 - 0
data/db/base/1/13252


BIN
data/db/base/1/13254


BIN
data/db/base/1/13255


BIN
data/db/base/1/13255_fsm


BIN
data/db/base/1/13255_vm


+ 0 - 0
data/db/base/1/13257


BIN
data/db/base/1/13259


BIN
data/db/base/1/13260


BIN
data/db/base/1/13260_fsm


BIN
data/db/base/1/13260_vm


+ 0 - 0
data/db/base/1/13262


+ 0 - 0
data/db/base/1/13264


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików