Skip to content

Commit e0c0479

Browse files
committed
update
1 parent f64367b commit e0c0479

File tree

2 files changed

+55
-25
lines changed

2 files changed

+55
-25
lines changed

frontend/src/pages/RulesManager/RulesManager.tsx

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,19 @@ interface Medication {
1111
risks: string;
1212
}
1313

14+
interface MedicationSource {
15+
medication: Medication;
16+
sources: any[];
17+
}
18+
1419
interface MedRule {
1520
id: number;
1621
rule_type: string;
1722
history_type: string;
1823
reason: string;
1924
label: string;
20-
medications: Medication[];
21-
sources: any[];
2225
explanation: string | null;
26+
medication_sources: MedicationSource[];
2327
}
2428

2529
interface MedRulesResponse {
@@ -96,8 +100,11 @@ function RulesManager() {
96100
return newSet;
97101
});
98102
};
99-
100-
const renderMedicationDetails = (medication: Medication, rule: MedRule) => {
103+
const renderMedicationDetails = (
104+
medication: Medication,
105+
rule: MedRule,
106+
sources: any[]
107+
) => {
101108
if (!medication) return null;
102109

103110
const medKey = `${rule.id}-${medication.name}`;
@@ -171,9 +178,9 @@ function RulesManager() {
171178
<h5 className="mb-2 text-sm font-medium text-indigo-600">
172179
Sources:
173180
</h5>
174-
{rule.sources && rule.sources.length > 0 ? (
181+
{sources && sources.length > 0 ? (
175182
<ul className="list-disc space-y-4 px-4">
176-
{rule.sources.map((source, index) => (
183+
{sources.map((source, index) => (
177184
<li key={`${medKey}-source-${index}`} className="text-sm">
178185
<div className="p-2 border rounded bg-gray-50">
179186
<div>
@@ -228,10 +235,14 @@ function RulesManager() {
228235
Medications:
229236
</h3>
230237
<div className="mt-2">
231-
{Array.isArray(rule.medications) &&
232-
rule.medications.length > 0 ? (
233-
rule.medications.map((med) =>
234-
renderMedicationDetails(med, rule)
238+
{Array.isArray(rule.medication_sources) &&
239+
rule.medication_sources.length > 0 ? (
240+
rule.medication_sources.map((medSrc) =>
241+
renderMedicationDetails(
242+
medSrc.medication,
243+
rule,
244+
medSrc.sources
245+
)
235246
)
236247
) : (
237248
<p className="text-sm text-gray-500">
Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,49 @@
11
from rest_framework import serializers
2-
from ...models.model_medRule import MedRule
2+
from ...models.model_medRule import MedRule, MedRuleSource
3+
from ..listMeds.models import Medication
34
from ..listMeds.serializers import MedicationSerializer
45
from ...models.model_embeddings import Embeddings
5-
from ..listMeds.models import Medication
6+
67

78
class EmbeddingsSerializer(serializers.ModelSerializer):
89
class Meta:
910
model = Embeddings
1011
fields = ['guid', 'name', 'text', 'page_num', 'chunk_number']
1112

1213

14+
class MedicationWithSourcesSerializer(serializers.Serializer):
15+
medication = MedicationSerializer()
16+
sources = EmbeddingsSerializer(many=True)
17+
18+
1319
class MedRuleSerializer(serializers.ModelSerializer):
14-
medications = MedicationSerializer(many=True, read_only=True)
15-
medication_ids = serializers.PrimaryKeyRelatedField(
16-
many=True, write_only=True, queryset=Medication.objects.all(), source='medications'
17-
)
18-
sources = EmbeddingsSerializer(many=True, read_only=True)
19-
source_ids = serializers.PrimaryKeyRelatedField(
20-
many=True, write_only=True, queryset=Embeddings.objects.all(), source='sources'
21-
)
20+
medication_sources = serializers.SerializerMethodField()
2221

2322
class Meta:
2423
model = MedRule
2524
fields = [
26-
'id', 'rule_type', 'history_type', 'reason', 'label',
27-
'medications', 'medication_ids',
28-
'sources', 'source_ids',
29-
'explanation'
30-
]
25+
'id', 'rule_type', 'history_type', 'reason', 'label', 'explanation',
26+
'medication_sources'
27+
]
28+
29+
def get_medication_sources(self, obj):
30+
31+
medrule_sources = MedRuleSource.objects.filter(
32+
medrule=obj).select_related('medication', 'embedding')
33+
34+
med_to_sources = {}
35+
for ms in medrule_sources:
36+
if ms.medication.id not in med_to_sources:
37+
med_to_sources[ms.medication.id] = {
38+
'medication': ms.medication,
39+
'sources': []
40+
}
41+
med_to_sources[ms.medication.id]['sources'].append(ms.embedding)
42+
43+
return [
44+
{
45+
'medication': MedicationSerializer(data['medication']).data,
46+
'sources': EmbeddingsSerializer(data['sources'], many=True).data
47+
}
48+
for data in med_to_sources.values()
49+
]

0 commit comments

Comments
 (0)