from django.contrib import admin from access_core.clinical.models import ( CarotidUltrasoundFinding, ClinicalObservation, ClinicalObservationSource, FHIRConceptMapping, ImagingStudy, ImagingStudyComparison, LabResult, LabResultItem, LiverUltrasoundFinding, LoincCode, OAPMeasureDefinition, OAPMeasureObservation, OAPReportingWindow, PromInstrument, PromResponse, PromScore, StructuralEvidence, StructuralEvidenceSource, UCUMUnit, ) @admin.register(ClinicalObservation) class ClinicalObservationAdmin(admin.ModelAdmin): list_display = [ "beneficiary", "observation_type", "measure_name", "value_numeric", "collection_date", "status", ] list_filter = ["observation_type", "status", "data_source", "is_synthetic"] search_fields = ["measure_name"] readonly_fields = ["id", "created_at", "updated_at"] @admin.register(ClinicalObservationSource) class ClinicalObservationSourceAdmin(admin.ModelAdmin): list_display = ["observation", "source_type", "created_at"] list_filter = ["source_type"] @admin.register(LabResult) class LabResultAdmin(admin.ModelAdmin): list_display = [ "beneficiary", "lab_facility", "result_date", "source_type", "is_synthetic", ] list_filter = ["source_type", "is_synthetic"] readonly_fields = ["id", "created_at"] @admin.register(LabResultItem) class LabResultItemAdmin(admin.ModelAdmin): list_display = ["lab_result", "test_name", "value", "unit", "status"] list_filter = ["status"] @admin.register(PromInstrument) class PromInstrumentAdmin(admin.ModelAdmin): list_display = ["instrument_name", "version", "applicable_track", "is_active"] @admin.register(PromResponse) class PromResponseAdmin(admin.ModelAdmin): list_display = ["beneficiary", "instrument", "completion_date", "is_synthetic"] list_filter = ["is_synthetic"] @admin.register(PromScore) class PromScoreAdmin(admin.ModelAdmin): list_display = ["prom_response", "instrument", "score", "status"] list_filter = ["status"] @admin.register(ImagingStudy) class ImagingStudyAdmin(admin.ModelAdmin): list_display = [ "beneficiary", "imaging_type", "study_date", "status", "is_synthetic", ] list_filter = ["imaging_type", "status", "is_synthetic"] @admin.register(CarotidUltrasoundFinding) class CarotidUltrasoundFindingAdmin(admin.ModelAdmin): list_display = ["imaging_study", "laterality", "plaque_thickness_mm", "status"] @admin.register(LiverUltrasoundFinding) class LiverUltrasoundFindingAdmin(admin.ModelAdmin): list_display = ["imaging_study", "steatosis_grade", "status"] @admin.register(ImagingStudyComparison) class ImagingStudyComparisonAdmin(admin.ModelAdmin): list_display = ["current_study", "finding_type", "trajectory", "created_at"] @admin.register(StructuralEvidence) class StructuralEvidenceAdmin(admin.ModelAdmin): list_display = ["beneficiary", "evidence_type", "trajectory", "is_synthetic"] list_filter = ["evidence_type", "is_synthetic"] @admin.register(StructuralEvidenceSource) class StructuralEvidenceSourceAdmin(admin.ModelAdmin): list_display = ["evidence", "source_type"] @admin.register(OAPMeasureDefinition) class OAPMeasureDefinitionAdmin(admin.ModelAdmin): list_display = ["measure_name", "clinical_track", "is_active"] list_filter = ["clinical_track", "is_active"] @admin.register(OAPMeasureObservation) class OAPMeasureObservationAdmin(admin.ModelAdmin): list_display = ["beneficiary", "measure_definition", "collection_date", "status"] list_filter = ["status", "reporting_type"] actions = ["resubmit_to_cms"] @admin.action( description="Reset selected rejected observations for CMS resubmission" ) def resubmit_to_cms(self, request, queryset): from access_core.services.cms_reporting import reset_rejected_observations count = reset_rejected_observations(queryset) self.message_user( request, f"{count} observation(s) requeued for CMS resubmission" ) @admin.register(OAPReportingWindow) class OAPReportingWindowAdmin(admin.ModelAdmin): list_display = [ "care_period", "reporting_type", "window_start", "window_end", "is_active", ] @admin.register(LoincCode) class LoincCodeAdmin(admin.ModelAdmin): list_display = ["loinc_number", "component", "common_name", "is_active"] search_fields = ["loinc_number", "component", "common_name"] @admin.register(UCUMUnit) class UCUMUnitAdmin(admin.ModelAdmin): list_display = ["ucum_code", "description", "is_active"] search_fields = ["ucum_code"] @admin.register(FHIRConceptMapping) class FHIRConceptMappingAdmin(admin.ModelAdmin): list_display = ["source_system", "source_code", "fhir_code", "mapping_status"] list_filter = ["source_system", "mapping_status"]