""" Django admin configuration for integrations app. """ from django.contrib import admin from django.utils.translation import gettext_lazy as _ from .models import ( ExternalOrder, NphiesMessage, NphiesEncounterLink, PayerContract, EInvoice, ZatcaCredential, ) @admin.register(ExternalOrder) class ExternalOrderAdmin(admin.ModelAdmin): """Admin interface for ExternalOrder model.""" list_display = ['patient', 'order_type', 'status', 'ordered_by', 'ordered_at', 'tenant'] list_filter = ['order_type', 'status', 'tenant', 'ordered_at'] search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en'] readonly_fields = ['id', 'ordered_at', 'created_at', 'updated_at'] date_hierarchy = 'ordered_at' fieldsets = ( (None, { 'fields': ('patient', 'order_type', 'tenant', 'status') }), (_('Order Details'), { 'fields': ('order_details', 'ordered_by', 'ordered_at') }), (_('Results'), { 'fields': ('result_url', 'result_data', 'completed_at'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(NphiesMessage) class NphiesMessageAdmin(admin.ModelAdmin): """Admin interface for NphiesMessage model.""" list_display = ['direction', 'resource_type', 'status', 'correlation_id', 'sent_at', 'tenant'] list_filter = ['direction', 'resource_type', 'status', 'tenant', 'sent_at'] search_fields = ['correlation_id', 'error_code'] readonly_fields = ['id', 'created_at', 'updated_at'] date_hierarchy = 'created_at' fieldsets = ( (None, { 'fields': ('direction', 'resource_type', 'tenant', 'status') }), (_('FHIR Data'), { 'fields': ('fhir_json',) }), (_('Correlation'), { 'fields': ('correlation_id', 'sent_at') }), (_('Response'), { 'fields': ('response_http_status',), 'classes': ('collapse',) }), (_('Error Information'), { 'fields': ('error_code', 'error_message'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(NphiesEncounterLink) class NphiesEncounterLinkAdmin(admin.ModelAdmin): """Admin interface for NphiesEncounterLink model.""" list_display = ['patient', 'appointment', 'encounter_id', 'claim_id', 'tenant'] list_filter = ['tenant'] search_fields = ['patient__mrn', 'encounter_id', 'claim_id', 'claim_response_id'] readonly_fields = ['id'] fieldsets = ( (None, { 'fields': ('patient', 'appointment', 'tenant') }), (_('NPHIES Identifiers'), { 'fields': ('encounter_id', 'claim_id', 'claim_response_id') }), (_('Metadata'), { 'fields': ('id',), 'classes': ('collapse',) }), ) @admin.register(PayerContract) class PayerContractAdmin(admin.ModelAdmin): """Admin interface for PayerContract model.""" list_display = ['payer_name', 'payer_code', 'supports_eligibility', 'supports_prior_auth', 'supports_claims', 'is_active', 'tenant'] list_filter = ['is_active', 'supports_eligibility', 'supports_prior_auth', 'supports_claims', 'tenant'] search_fields = ['payer_name', 'payer_code'] readonly_fields = ['id', 'created_at', 'updated_at'] fieldsets = ( (None, { 'fields': ('payer_name', 'payer_code', 'tenant', 'is_active') }), (_('Capabilities'), { 'fields': ('supports_eligibility', 'supports_prior_auth', 'supports_claims') }), (_('Configuration'), { 'fields': ('credentials', 'endpoints'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(EInvoice) class EInvoiceAdmin(admin.ModelAdmin): """Admin interface for EInvoice model.""" list_display = ['invoice', 'uuid', 'clearance_status', 'submission_mode', 'submitted_at', 'tenant'] list_filter = ['clearance_status', 'submission_mode', 'tenant', 'submitted_at'] search_fields = ['invoice__invoice_number', 'uuid', 'zatca_document_type'] readonly_fields = ['id', 'created_at', 'updated_at'] date_hierarchy = 'created_at' fieldsets = ( (None, { 'fields': ('invoice', 'uuid', 'tenant', 'clearance_status', 'submission_mode') }), (_('ZATCA Details'), { 'fields': ('zatca_document_type', 'submitted_at') }), (_('XML & QR'), { 'fields': ('xml_payload', 'qr_base64'), 'classes': ('collapse',) }), (_('Response'), { 'fields': ('response_payload',), 'classes': ('collapse',) }), (_('Error Information'), { 'fields': ('error_code', 'error_message'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(ZatcaCredential) class ZatcaCredentialAdmin(admin.ModelAdmin): """Admin interface for ZatcaCredential model.""" list_display = ['tenant', 'environment', 'is_active', 'expires_at', 'is_expired'] list_filter = ['environment', 'is_active', 'tenant', 'expires_at'] search_fields = ['tenant__name'] readonly_fields = ['id', 'is_expired', 'created_at', 'updated_at'] fieldsets = ( (None, { 'fields': ('tenant', 'environment', 'is_active') }), (_('Credentials'), { 'fields': ('csid', 'certificate', 'private_key', 'expires_at', 'is_expired'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), )