Bug: `$clone` leaves `from_source_url` (and `to_source_url`) pointing at the original source on copied mappings

Đang mở Phù hợp với người mới
#3,012 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
72/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu tại core/sources/models.py, ở clone_mappings(), và kiểm tra cách Mapping.clone() sao chép các URL nguồn. So sánh URI cha của các khái niệm được gán với các giá trị from_source_url và to_source_url đã sao chép; cập nhật luồng sao chép để các trường này khớp với những khái niệm được gán. Hoàn tất khi các mapping được sao chép bằng $clone trả về URL nguồn đích trong phản hồi chi tiết/API của mapping.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

component/api decision/human-review signal/needs-access signal/quick-win signal/small-scope signal/well-specified stage/triaged type/bug

Expected Behavior

When a concept is cloned into another source with $clone, each copied mapping belongs to the target source and starts from the new concept. So its from_source_url should be the target source, e.g. /orgs/PIH/sources/PIH/. More generally, from_source_url/to_source_url should match from_concept_url/to_concept_url and from_source_name/to_source_name.

Current Behavior

from_source_url keeps the value from the original mapping, i.e. the source the concept was cloned from, while from_concept_url and from_source_name are updated.

Example: PIH 21400 was cloned from CIEL 170656. CIEL mapping /orgs/CIEL/sources/CIEL/mappings/17052749/ is SAME-AS LOINC:53625-0. The copy, https://app.v3.openconceptlab.org/orgs/PIH/sources/PIH/mappings/44946/, has:

field value
from_concept_url /orgs/PIH/sources/PIH/concepts/21400/
from_source_name PIH
from_source_url /orgs/CIEL/sources/CIEL/
to_* LOINC 53625-0 (correct)

When the clone also retargets a mapping to a concept in the target source (see #3013), to_source_url isn't updated either. Example: https://app.v3.openconceptlab.org/orgs/PIH/sources/PIH/mappings/46475/ has to_concept_url=/orgs/PIH/sources/PIH/concepts/21768/ and to_source_name=PIH, but to_source_url=/orgs/CIEL/sources/CIEL/.

The concept view labels mappings by *_source_name, so the problem is only visible in the mapping detail/edit view or the API.

Possible Solution

In core/sources/models.py clone_mappings(), the code sets from_concept_id, from_concept_code, from_source_id (and the to_* equivalents) from the assigned concepts, but not from_source_url/to_source_url. Mapping.clone() copies those URLs from the original. Setting them from the assigned concepts' parent (concept.parent.uri) would fix it.

Steps to Reproduce

  1. Pick a CIEL concept with mappings to other sources, e.g. CIEL 170656.
  2. Clone it into a source you can edit, using TermBrowser "Clone to source" (v2 or v3) or POST <target source>/concepts/$clone/ with equivalencyMapType=SAME-AS.
  3. GET the new concept with ?includeMappings=true, then GET one of its copied mappings with ?verbose=true.
  4. from_source_url is the CIEL source, not the target source.

Context (Environment)

Production (api.openconceptlab.org), PIH organization source /orgs/PIH/sources/PIH/. In release 1.8.46 about 3,850 copied mappings have this, going back to March 2024. The OpenMRS OCL module doesn't use from_source_url, so imports aren't affected, but the data is inconsistent and confusing for anyone reading or editing the mappings.

Detailed Description

Found while investigating a related, more serious clone problem: mappings to external code systems being retargeted to concepts in the target source (#3013). That issue also leaves to_source_url stale.

Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
4
Fork
2
Merge trung bình
2 giờ 12 phút
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của OpenConceptLab/ocl_issues

Tất cả issue của OpenConceptLab/ocl_issues

Issue tương tự

Thêm issue về Backend & API Design

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.