190 lines
6.1 KiB
Python
190 lines
6.1 KiB
Python
"""
|
|
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',)
|
|
}),
|
|
)
|