this repo has no description
0
fork

Configure Feed

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

Initial changes for supply order from patient

+53 -1
+1
care/emr/api/viewsets/inventory/delivery_order.py
··· 37 37 destination = DummyUUIDFilter() 38 38 include_children = DummyBooleanFilter() 39 39 origin_isnull = NullFilter(field_name="origin") 40 + patient = filters.UUIDFilter(field_name="patient__external_id") 40 41 41 42 42 43 class DeliveryOrderViewSet(
+24
care/emr/migrations/0057_deliveryorder_patient_deliveryorder_patient_invoice.py
··· 1 + # Generated by Django 5.1.4 on 2026-01-19 21:18 2 + 3 + import django.db.models.deletion 4 + from django.db import migrations, models 5 + 6 + 7 + class Migration(migrations.Migration): 8 + 9 + dependencies = [ 10 + ('emr', '0056_monetary_components_float_to_decimal'), 11 + ] 12 + 13 + operations = [ 14 + migrations.AddField( 15 + model_name='deliveryorder', 16 + name='patient', 17 + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='emr.patient'), 18 + ), 19 + migrations.AddField( 20 + model_name='deliveryorder', 21 + name='patient_invoice', 22 + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='emr.invoice'), 23 + ), 24 + ]
+6
care/emr/models/supply_delivery.py
··· 54 54 on_delete=models.CASCADE, 55 55 ) 56 56 extensions = models.JSONField(default=dict) 57 + patient = models.ForeignKey( 58 + "emr.Patient", on_delete=models.PROTECT, null=True, blank=True, default=None 59 + ) 60 + patient_invoice = models.ForeignKey( 61 + "emr.Invoice", on_delete=models.PROTECT, null=True, blank=True, default=None 62 + )
+6
care/emr/resources/charge_item_definition/spec.py
··· 1 + from datetime import datetime 1 2 from enum import Enum 2 3 3 4 from pydantic import UUID4, field_validator ··· 63 64 category: dict | None = None 64 65 slug_config: dict 65 66 slug: str 67 + created_by: dict | None = None 68 + updated_by: dict | None = None 69 + updated_date: datetime | None = None 70 + created_date: datetime | None = None 66 71 67 72 @classmethod 68 73 def perform_extra_serialization(cls, mapping, obj): ··· 72 77 obj.category 73 78 ).to_json() 74 79 mapping["slug_config"] = obj.parse_slug(obj.slug) 80 + cls.serialize_audit_users(mapping, obj)
+16 -1
care/emr/resources/inventory/supply_delivery/delivery_order.py
··· 1 1 from enum import Enum 2 2 3 3 from pydantic import UUID4 4 + from rest_framework.exceptions import ValidationError 4 5 5 6 from care.emr.extensions.base import ExtensionResource 6 7 from care.emr.extensions.validator import ExtensionValidator 7 8 from care.emr.models.location import FacilityLocation 8 9 from care.emr.models.organization import Organization 10 + from care.emr.models.patient import Patient 9 11 from care.emr.models.supply_delivery import DeliveryOrder 10 12 from care.emr.resources.base import EMRResource 11 13 from care.emr.resources.location.spec import FacilityLocationListSpec ··· 13 15 OrganizationReadSpec, 14 16 OrganizationTypeChoices, 15 17 ) 18 + from care.emr.resources.patient.spec import PatientListSpec 16 19 from care.emr.tagging.base import SingleFacilityTagManager 17 20 from care.utils.shortcuts import get_object_or_404 18 21 ··· 47 50 supplier: UUID4 | None = None 48 51 origin: UUID4 | None = None 49 52 destination: UUID4 53 + patient: UUID4 | None = None 50 54 51 55 def perform_extra_deserialization(self, is_update, obj): 52 56 obj.destination = get_object_or_404( ··· 64 68 org_type=OrganizationTypeChoices.product_supplier.value, 65 69 ) 66 70 ) 67 - 71 + if self.patient: 72 + obj.patient = get_object_or_404( 73 + Patient.objects.only("id").filter(external_id=self.patient) 74 + ) 75 + if self.patient and self.origin: 76 + raise ValidationError("Patient and origin cannot be provided together") 68 77 return obj 69 78 70 79 ··· 73 82 destination: dict 74 83 supplier: dict | None = None 75 84 tags: list[dict] = [] 85 + patient: dict | None = None 86 + patient_invoice_id: dict | None = None 76 87 77 88 @classmethod 78 89 def perform_extra_serialization(cls, mapping, obj): ··· 85 96 if obj.supplier: 86 97 mapping["supplier"] = OrganizationReadSpec.serialize(obj.supplier).to_json() 87 98 mapping["tags"] = SingleFacilityTagManager().render_tags(obj) 99 + if obj.patient: 100 + mapping["patient"] = PatientListSpec.serialize(obj.patient).to_json() 101 + if obj.patient_invoice: 102 + mapping["patient_invoice_id"] = str(obj.patient_invoice.external_id)