Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

$cascade API round 3, including references #1131

Closed
paynejd opened this issue Nov 24, 2021 · 26 comments
Closed

$cascade API round 3, including references #1131

paynejd opened this issue Nov 24, 2021 · 26 comments
Assignees
Labels
api2 OCL API v2

Comments

@paynejd
Copy link
Member

paynejd commented Nov 24, 2021

This ticket is a placeholder to capture the next round of work on the $cascade operation and follows up on #1122. We will add details to this in the coming days.

@bmamlin @ $cascade is now functional enough (ie recursion and map type filter) to be tested for the desired OpenMRS Dictionary Manager functionality.

A couple of examples:

This round of work focuses on the ability to create collection references with $cascade, performance, features needed to utilize $cascade in a hierarchy tree view or in the OpenMRS Dictionary Manager, and addressing any bugs identified.

snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 25, 2021
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 25, 2021
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 25, 2021
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 25, 2021
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 25, 2021
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 30, 2021
@paynejd
Copy link
Member Author

paynejd commented Dec 9, 2021

Adding ideas for hierarchical response.

  1. Move concepts and mappings counts into a summary field
  2. Use a new entry field inside a concept to add child resources

Open questions...

  1. Handling a repeated concept will be different here than in the flat response -- we should probably show the repeated concept- in the first occurence it would show the normal cascaded response, in repeat occurrences it would include the concept, but have an additional attribute to indicate that it is repeated, and then not show any of the child entities
  2. Might be useful to include counts in sub-entities?
// 20211209073501
// https://api.qa.openconceptlab.org/orgs/CIEL/sources/CIEL/concepts/159615/$cascade/?cascadeLevels=1&mapTypes=CONCEPT-SET,Q-AND-A

{
  "type": "Bundle",
  "bundle_type": "searchset",
  "timestamp": "2021-03-24T16:11:38.917836Z",
  "total": 174,
  "summary": {
    "concepts": 82,
    "mappings": 92
  },
  "entry": [
    {
      "uuid": "90391",
      "id": "159614",
      "type": "Concept",
      "url": "/orgs/CIEL/sources/CIEL/concepts/159614/",
      "version_url": "/orgs/CIEL/sources/CIEL/concepts/159614/90394/",
      "entry": [
        {
          "uuid": "99215",
          "id": "159615",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/159615/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/159615/99218/"
        },
        {
          "uuid": "3434",
          "id": "1080",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1080/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1080/3436/"
        },
        {
          "uuid": "3245",
          "id": "1081",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1081/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1081/3247/"
        },
        {
          "uuid": "3437",
          "id": "1082",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1082/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1082/3439/"
        },
        {
          "uuid": "3568",
          "id": "1145",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1145/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1145/3570/"
        },
        {
          "uuid": "1643",
          "id": "206",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/206/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/206/1646/"
        },
        {
          "uuid": "2755",
          "id": "832",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/832/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/832/2758/"
        },
        {
          "uuid": "3404",
          "id": "1067",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1067/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1067/3406/"
        },
        {
          "uuid": "3223",
          "id": "1069",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1069/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1069/3225/"
        },
        {
          "uuid": "3411",
          "id": "1070",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1070/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1070/3413/"
        },
        {
          "uuid": "3414",
          "id": "1071",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1071/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1071/3416/"
        },
        {
          "uuid": "3240",
          "id": "1078",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1078/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1078/3241/"
        },
        {
          "uuid": "1375",
          "id": "81",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/81/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/81/1377/"
        },
        {
          "uuid": "1372",
          "id": "77",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/77/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/77/1374/"
        },
        {
          "uuid": "1379",
          "id": "80",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/80/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/80/1382/"
        },
        {
          "uuid": "1479",
          "id": "151",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/151/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/151/1480/"
        },
        {
          "uuid": "3508",
          "id": "1115",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1115/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1115/3511/"
        },
        {
          "uuid": "2277",
          "id": "512",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/512/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/512/2280/"
        },
        {
          "uuid": "3510",
          "id": "1116",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1116/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1116/3513/"
        },
        {
          "uuid": "2438",
          "id": "664",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/664/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/664/2442/"
        },
        {
          "uuid": "2437",
          "id": "590",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/590/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/590/2439/"
        },
        {
          "uuid": "2833",
          "id": "871",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/871/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/871/2835/"
        },
        {
          "uuid": "2941",
          "id": "840",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/840/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/840/2943/"
        },
        {
          "uuid": "2982",
          "id": "861",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/861/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/861/2984/"
        },
        {
          "uuid": "3008",
          "id": "873",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/873/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/873/3010/"
        },
        {
          "uuid": "3448",
          "id": "1189",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1189/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1189/3450/"
        },
        {
          "uuid": "4205",
          "id": "1452",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/1452/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/1452/4208/"
        },
        {
          "uuid": "5705",
          "id": "5244",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5244/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5244/5708/"
        },
        {
          "uuid": "5887",
          "id": "5334",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5334/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5334/5890/"
        },
        {
          "uuid": "5874",
          "id": "5312",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5312/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5312/5877/"
        },
        {
          "uuid": "6317",
          "id": "5544",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5544/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5544/6319/"
        },
        {
          "uuid": "6329",
          "id": "5550",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5550/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5550/6330/"
        },
        {
          "uuid": "6699",
          "id": "5953",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5953/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5953/6700/"
        },
        {
          "uuid": "6758",
          "id": "5986",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5986/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5986/6759/"
        },
        {
          "uuid": "6763",
          "id": "5989",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5989/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5989/6764/"
        },
        {
          "uuid": "6790",
          "id": "6004",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6004/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6004/6794/"
        },
        {
          "uuid": "6819",
          "id": "6019",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6019/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6019/6820/"
        },
        {
          "uuid": "6825",
          "id": "6022",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6022/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6022/6826/"
        },
        {
          "uuid": "6831",
          "id": "6025",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6025/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6025/6833/"
        },
        {
          "uuid": "6843",
          "id": "6031",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6031/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6031/6844/"
        },
        {
          "uuid": "6853",
          "id": "6037",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6037/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6037/6856/"
        },
        {
          "uuid": "7200",
          "id": "5954",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5954/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5954/7203/"
        },
        {
          "uuid": "7207",
          "id": "5957",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5957/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5957/7209/"
        },
        {
          "uuid": "7219",
          "id": "5963",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5963/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5963/7223/"
        },
        {
          "uuid": "7182",
          "id": "5961",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5961/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5961/7185/"
        },
        {
          "uuid": "7253",
          "id": "5978",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5978/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5978/7257/"
        },
        {
          "uuid": "7282",
          "id": "5990",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/5990/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/5990/7284/"
        },
        {
          "uuid": "7317",
          "id": "6005",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6005/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6005/7318/"
        },
        {
          "uuid": "7341",
          "id": "6033",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6033/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6033/7343/"
        },
        {
          "uuid": "7342",
          "id": "6017",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6017/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6017/7345/"
        },
        {
          "uuid": "7356",
          "id": "6023",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6023/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6023/7358/"
        },
        {
          "uuid": "7374",
          "id": "6032",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6032/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6032/7378/"
        },
        {
          "uuid": "7381",
          "id": "6035",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/6035/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/6035/7384/"
        },
        {
          "uuid": "24152",
          "id": "111633",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/111633/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/111633/24154/"
        },
        {
          "uuid": "24465",
          "id": "112141",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/112141/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/112141/24469/"
        },
        {
          "uuid": "25993",
          "id": "113377",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/113377/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/113377/25994/"
        },
        {
          "uuid": "27995",
          "id": "115403",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/115403/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/115403/27998/"
        },
        {
          "uuid": "30085",
          "id": "119537",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/119537/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/119537/30088/"
        },
        {
          "uuid": "30959",
          "id": "120345",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/120345/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/120345/30962/"
        },
        {
          "uuid": "31145",
          "id": "118256",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/118256/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/118256/31148/"
        },
        {
          "uuid": "31188",
          "id": "118246",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/118246/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/118246/31190/"
        },
        {
          "uuid": "31737",
          "id": "118771",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/118771/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/118771/31739/"
        },
        {
          "uuid": "33970",
          "id": "120749",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/120749/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/120749/33974/"
        },
        {
          "uuid": "34497",
          "id": "123529",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/123529/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/123529/34500/"
        },
        {
          "uuid": "36477",
          "id": "122983",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/122983/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/122983/36479/"
        },
        {
          "uuid": "37296",
          "id": "123396",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/123396/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/123396/37300/"
        },
        {
          "uuid": "40174",
          "id": "125061",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/125061/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/125061/40176/"
        },
        {
          "uuid": "48014",
          "id": "129510",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/129510/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/129510/48017/"
        },
        {
          "uuid": "53719",
          "id": "133027",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/133027/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/133027/53721/"
        },
        {
          "uuid": "52626",
          "id": "132418",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/132418/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/132418/52628/"
        },
        {
          "uuid": "54324",
          "id": "133473",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/133473/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/133473/54326/"
        },
        {
          "uuid": "54627",
          "id": "133632",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/133632/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/133632/54630/"
        },
        {
          "uuid": "56122",
          "id": "137593",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/137593/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/137593/56126/"
        },
        {
          "uuid": "60562",
          "id": "140238",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/140238/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/140238/60565/"
        },
        {
          "uuid": "64328",
          "id": "139084",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/139084/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/139084/64330/"
        },
        {
          "uuid": "66863",
          "id": "140501",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/140501/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/140501/66864/"
        },
        {
          "uuid": "68909",
          "id": "141600",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/141600/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/141600/68912/"
        },
        {
          "uuid": "70323",
          "id": "142412",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/142412/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/142412/70327/"
        },
        {
          "uuid": "71763",
          "id": "143264",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/143264/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/143264/71766/"
        },
        {
          "uuid": "74878",
          "id": "148989",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/148989/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/148989/74880/"
        },
        {
          "uuid": "79279",
          "id": "147232",
          "type": "Concept",
          "url": "/orgs/CIEL/sources/CIEL/concepts/147232/",
          "version_url": "/orgs/CIEL/sources/CIEL/concepts/147232/79282/"
        },
        {
          "uuid": "4451",
          "id": "4451",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4451/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4451/4452/"
        },
        {
          "uuid": "4455",
          "id": "4455",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4455/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4455/4456/"
        },
        {
          "uuid": "4457",
          "id": "4457",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4457/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4457/4458/"
        },
        {
          "uuid": "4463",
          "id": "4463",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4463/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4463/4464/"
        },
        {
          "uuid": "4474",
          "id": "4474",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4474/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4474/4476/"
        },
        {
          "uuid": "4480",
          "id": "4480",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4480/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4480/4482/"
        },
        {
          "uuid": "4467",
          "id": "4467",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4467/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4467/4468/"
        },
        {
          "uuid": "4473",
          "id": "4473",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4473/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4473/4475/"
        },
        {
          "uuid": "4478",
          "id": "4478",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4478/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4478/4481/"
        },
        {
          "uuid": "4493",
          "id": "4493",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4493/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4493/4494/"
        },
        {
          "uuid": "4498",
          "id": "4498",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4498/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4498/4500/"
        },
        {
          "uuid": "4505",
          "id": "4505",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4505/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4505/4506/"
        },
        {
          "uuid": "4519",
          "id": "4519",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4519/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4519/4521/"
        },
        {
          "uuid": "4525",
          "id": "4525",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4525/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4525/4528/"
        },
        {
          "uuid": "4532",
          "id": "4532",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4532/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4532/4534/"
        },
        {
          "uuid": "4538",
          "id": "4538",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4538/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4538/4541/"
        },
        {
          "uuid": "4543",
          "id": "4543",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4543/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4543/4545/"
        },
        {
          "uuid": "4549",
          "id": "4549",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4549/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4549/4551/"
        },
        {
          "uuid": "4556",
          "id": "4556",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4556/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4556/4558/"
        },
        {
          "uuid": "4550",
          "id": "4550",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4550/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4550/4552/"
        },
        {
          "uuid": "4555",
          "id": "4555",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4555/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4555/4557/"
        },
        {
          "uuid": "4561",
          "id": "4561",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4561/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4561/4562/"
        },
        {
          "uuid": "4567",
          "id": "4567",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4567/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4567/4569/"
        },
        {
          "uuid": "4579",
          "id": "4579",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4579/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4579/4580/"
        },
        {
          "uuid": "4563",
          "id": "4563",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4563/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4563/4565/"
        },
        {
          "uuid": "4304",
          "id": "4304",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4304/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4304/4306/"
        },
        {
          "uuid": "4575",
          "id": "4575",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4575/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4575/4577/"
        },
        {
          "uuid": "4311",
          "id": "4311",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4311/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4311/4312/"
        },
        {
          "uuid": "4317",
          "id": "4317",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4317/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4317/4318/"
        },
        {
          "uuid": "4323",
          "id": "4323",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4323/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4323/4325/"
        },
        {
          "uuid": "4335",
          "id": "4335",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4335/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4335/4336/"
        },
        {
          "uuid": "4341",
          "id": "4341",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4341/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4341/4343/"
        },
        {
          "uuid": "4347",
          "id": "4347",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4347/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4347/4348/"
        },
        {
          "uuid": "4358",
          "id": "4358",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4358/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4358/4360/"
        },
        {
          "uuid": "4365",
          "id": "4365",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4365/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4365/4366/"
        },
        {
          "uuid": "4370",
          "id": "4370",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4370/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4370/4372/"
        },
        {
          "uuid": "4411",
          "id": "4411",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4411/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4411/4412/"
        },
        {
          "uuid": "4417",
          "id": "4417",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4417/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4417/4419/"
        },
        {
          "uuid": "4423",
          "id": "4423",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4423/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4423/4426/"
        },
        {
          "uuid": "4431",
          "id": "4431",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4431/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4431/4433/"
        },
        {
          "uuid": "4581",
          "id": "4581",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4581/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4581/4583/"
        },
        {
          "uuid": "4414",
          "id": "4414",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4414/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4414/4416/"
        },
        {
          "uuid": "4418",
          "id": "4418",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4418/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4418/4421/"
        },
        {
          "uuid": "4425",
          "id": "4425",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4425/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4425/4428/"
        },
        {
          "uuid": "4445",
          "id": "4445",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4445/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4445/4446/"
        },
        {
          "uuid": "4442",
          "id": "4442",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4442/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4442/4444/"
        },
        {
          "uuid": "4448",
          "id": "4448",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4448/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4448/4450/"
        },
        {
          "uuid": "4592",
          "id": "4592",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4592/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4592/4595/"
        },
        {
          "uuid": "4599",
          "id": "4599",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4599/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4599/4602/"
        },
        {
          "uuid": "4606",
          "id": "4606",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4606/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4606/4608/"
        },
        {
          "uuid": "4612",
          "id": "4612",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4612/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4612/4614/"
        },
        {
          "uuid": "4585",
          "id": "4585",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4585/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4585/4587/"
        },
        {
          "uuid": "4597",
          "id": "4597",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4597/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4597/4598/"
        },
        {
          "uuid": "4603",
          "id": "4603",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4603/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4603/4604/"
        },
        {
          "uuid": "4609",
          "id": "4609",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4609/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4609/4610/"
        },
        {
          "uuid": "4657",
          "id": "4657",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4657/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4657/4658/"
        },
        {
          "uuid": "4663",
          "id": "4663",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4663/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4663/4665/"
        },
        {
          "uuid": "4669",
          "id": "4669",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4669/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4669/4670/"
        },
        {
          "uuid": "4686",
          "id": "4686",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4686/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4686/4688/"
        },
        {
          "uuid": "4691",
          "id": "4691",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4691/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4691/4694/"
        },
        {
          "uuid": "4698",
          "id": "4698",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4698/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4698/4701/"
        },
        {
          "uuid": "4703",
          "id": "4703",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4703/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4703/4705/"
        },
        {
          "uuid": "4717",
          "id": "4717",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4717/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4717/4718/"
        },
        {
          "uuid": "4722",
          "id": "4722",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4722/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4722/4724/"
        },
        {
          "uuid": "4735",
          "id": "4735",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4735/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4735/4736/"
        },
        {
          "uuid": "4741",
          "id": "4741",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4741/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4741/4743/"
        },
        {
          "uuid": "4747",
          "id": "4747",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/4747/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/4747/4749/"
        },
        {
          "uuid": "5447",
          "id": "5447",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/5447/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/5447/5449/"
        },
        {
          "uuid": "5585",
          "id": "5585",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/5585/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/5585/5586/"
        },
        {
          "uuid": "5721",
          "id": "5721",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/5721/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/5721/5722/"
        },
        {
          "uuid": "5727",
          "id": "5727",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/5727/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/5727/5729/"
        },
        {
          "uuid": "287439",
          "id": "287439",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/287439/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/287439/287440/"
        },
        {
          "uuid": "287441",
          "id": "287441",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/287441/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/287441/287442/"
        },
        {
          "uuid": "287443",
          "id": "287443",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/287443/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/287443/287444/"
        },
        {
          "uuid": "287447",
          "id": "287447",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/287447/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/287447/287448/"
        },
        {
          "uuid": "287449",
          "id": "287449",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/287449/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/287449/287450/"
        },
        {
          "uuid": "287451",
          "id": "287451",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/287451/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/287451/287452/"
        },
        {
          "uuid": "287453",
          "id": "287453",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/287453/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/287453/287454/"
        },
        {
          "uuid": "312175",
          "id": "312175",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/312175/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/312175/312176/"
        },
        {
          "uuid": "312180",
          "id": "312180",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/312180/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/312180/312182/"
        },
        {
          "uuid": "312185",
          "id": "312185",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/312185/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/312185/312186/"
        },
        {
          "uuid": "312194",
          "id": "312194",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/312194/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/312194/312196/"
        },
        {
          "uuid": "312199",
          "id": "312199",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/312199/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/312199/312200/"
        },
        {
          "uuid": "312203",
          "id": "312203",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/312203/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/312203/312205/"
        },
        {
          "uuid": "312208",
          "id": "312208",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/312208/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/312208/312210/"
        },
        {
          "uuid": "315977",
          "id": "315977",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/315977/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/315977/315978/"
        },
        {
          "uuid": "315981",
          "id": "315981",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/315981/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/315981/315982/"
        },
        {
          "uuid": "315985",
          "id": "315985",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/315985/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/315985/315986/"
        },
        {
          "uuid": "315993",
          "id": "315993",
          "type": "Mapping",
          "map_type": "Q-AND-A",
          "url": "/orgs/CIEL/sources/CIEL/mappings/315993/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/315993/315994/"
        },
        {
          "uuid": "315997",
          "id": "315997",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/315997/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/315997/315999/"
        },
        {
          "uuid": "316001",
          "id": "316001",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/316001/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/316001/316002/"
        },
        {
          "uuid": "316007",
          "id": "316007",
          "type": "Mapping",
          "map_type": "CONCEPT-SET",
          "url": "/orgs/CIEL/sources/CIEL/mappings/316007/",
          "version_url": "/orgs/CIEL/sources/CIEL/mappings/316007/316008/"
        }
      ]
    }
 ]
}

@paynejd paynejd self-assigned this Apr 11, 2022
@paynejd
Copy link
Member Author

paynejd commented Apr 11, 2022

Pinning as high priority so that @paynejd will update to make it clear what the next steps are

@paynejd
Copy link
Member Author

paynejd commented May 19, 2022

Ideas for long-term -- these will move to new tickets:

@snyaggarwal @rkorytkowski @jamlung-ri Please confirm the "what's next" list -- will move these into their own tickets and close this out when we have consensus

@jamlung-ri
Copy link
Member

jamlung-ri commented Oct 4, 2022

@paynejd for the list above, we should make sure we have captured all OpenMRS cascade needs. Namely, the ability to cascade down multiple levels using certain map types.

@jamlung-ri
Copy link
Member

jamlung-ri commented Oct 5, 2022

A potentially useful lo-fi drawing for a $cascade results panel: https://docs.google.com/drawings/d/19slrFyJebEKwDSve65V4tzAqKthrbA-uiP9V8vRWMcg/edit

Edit: This cascade drawing is missing some key generic functionality, particularly for controlling the number of levels down you can go and the map types that you might want to be including.

@snyaggarwal
Copy link
Contributor

@jamlung-ri this looks good. In terms of behavior, we will need to perform $cascade request when the user is on the dialog and switching between options of the cascade. Should we disable the button to add until the results of the cascade are not displayed?

@jamlung-ri
Copy link
Member

@paulsonder might have more thoughts on this (keeping in mind that some design work is likely needed here).

Makes sense that the $cascade request will occur as the user clicks the option, so there will likely be some delay as the API returns results (especially if it's a large set of results). Because of the risk for delay, I don't really want to disable the Add button, but we should at least show that the results are still loading. The user can decide if they do or don't want to wait and review the results before clicking the Add button.

@jamlung-ri jamlung-ri added the api2 OCL API v2 label Oct 14, 2022
@paynejd paynejd changed the title $cascade round 3, including references $cascade API round 3, including references Oct 14, 2022
@paynejd
Copy link
Member Author

paynejd commented Oct 17, 2022

This ticket is focused only on adding OpenMRS-compatible behavior to the $cascade endpoint in the OCL API.

Design discussions to expose the new $cascade behavior in the TermBrowser are taking place here #1378. @jamlung-ri Are there details in this ticket that need to be moved over to #1378?

Goal: Specify criteria for inclusion of resources in a response separately from criteria for processing the cascade, e.g.:

  • I want to cascade only Q-AND-A and CONCEPT-SET map types (e.g. ?mapTypes=Q-AND-A,CONCEPT-SET)
  • However, for any concept that is included, I want all of its mappings to be included in the resultset

Proposed approach: Introduce $cascade.returnMapTypes parameter (or equivalent behavior)

  • “returnMapTypes” must also apply to “terminal concepts”
  • Default to “*” (return all map types) or to “mapTypes”
  • mapTypes = controls cascade behavior; if no value, then this is defaults to “*” (cascade everything)
  • returnMapTypes = controls which mappings are included in the resultset; “*” returns all of a concept’s mappings; “false”/0 will not include any mappings in the resultset; if no value, then this defaults to the “mapTypes”
  • includeMappings (bool) = controls whether any mappings are included in the resultset; this parameter will be deprecated

@paynejd To follow up with a visual using this concept: https://app.openconceptlab.org/#/orgs/CIEL/sources/CIEL/concepts/161499/

Example query: https://api.qa.openconceptlab.org/orgs/CIEL/sources/CIEL/concepts/159615/$cascade/?cascadeLevels=1&mapTypes=CONCEPT-SET,Q-AND-A

@jamlung-ri
Copy link
Member

jamlung-ri commented Oct 17, 2022

Design discussions to expose the new $cascade behavior in the TermBrowser are taking place here #1378. @jamlung-ri Are there details in this ticket that need to be moved over to #1378?

Just copied over some necessary details

“returnMapTypes” must also apply to “terminal concepts”

Will the address the need to go down as many levels as necessary in the $cascade operation? Or should we be mentioning that separately in the Goal section above? @paynejd

@paynejd
Copy link
Member Author

paynejd commented Oct 18, 2022

@jamlung-ri The number of cascade levels is a separate parameter, cascadeLevels. It will also apply to returnMapTypes

@paynejd
Copy link
Member Author

paynejd commented Oct 18, 2022

cc @snyaggarwal @jamlung-ri

Visual applies to this concept:
https://app.openconceptlab.org/#/orgs/CIEL/sources/CIEL/concepts/161499/

Visual represents this query:
https://api.openconceptlab.org/orgs/CIEL/sources/CIEL/concepts/161499/$cascade/?mapType=CONCEPT-SET,Q-AND-A&returnMapType=*

Visual:
https://docs.google.com/spreadsheets/d/1hxRMKVcgrg9LVjzSLbd_rM9R3xN6rtAflvbymXgQzKw/edit?usp=sharing

Note that this may be introducing another new behavior related to self-maps (@snyaggarwal
please confirm):

  • Cascade should never return a self-map target concept (because that returns itself)
  • Cascade may return the self-mapping, based on the value of returnMapType

snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Oct 19, 2022
snyaggarwal added a commit to OpenConceptLab/oclweb2 that referenced this issue Oct 19, 2022
@snyaggarwal
Copy link
Contributor

@paynejd the first attempt at this is deployed on QA. Do give it a try.

@jamlung-ri
Copy link
Member

Let's set up a call to get this moving. Jon and I have not had luck yet.

@paynejd
Copy link
Member Author

paynejd commented Oct 19, 2022

2 bugs to report so far:

  1. If no value is provided for returnMapTypes, then the value of mapTypes should automatically be applied to it. For example:
Request Params mapTypes returnMapTypes
None (default) * *
?mapTypes=Q-AND-A,CONCEPT-SET Q-AND-A,CONCEPT-SET *
?mapTypes=Q-AND-A,CONCEPT-SET&returnMapTypes=Q-AND-A,CONCEPT-SET Q-AND-A,CONCEPT-SET Q-AND-A,CONCEPT-SET
  1. name should be the display name of a concept, not its id. See example below:

image

snyaggarwal added a commit to OpenConceptLab/oclweb2 that referenced this issue Oct 20, 2022
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Oct 20, 2022
@snyaggarwal
Copy link
Contributor

@paynejd

  1. Updated behavior.
  2. name field is not needed in the response since we have display_name already. Removed it.

snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Oct 20, 2022
@paynejd
Copy link
Member Author

paynejd commented Oct 24, 2022

cc @snyaggarwal

I created a new source in QA that we can use to test cascade functionality:
https://app.qa.openconceptlab.org/#/users/ocladmin/sources/CascadeTest/

The source has the following characteristics that we want to test using cascade:

  • 2+ levels of hierarchy
  • 2+ levels of internal mappings for at least one maptype (e.g. such as Q-AND-A or CONCEPT-SET)
  • 1+ levels of internal mappings for at least one other maptype (e.g. not Q-AND-A or CONCEPT-SET)
  • 1+ external mappings
  • 1+ Self-maps
  • 1+ Recursive maps (where a child is associated with a concept higher up in the tree that would cause recursion if the cascade algorithm doesn’t catch it)

@paynejd
Copy link
Member Author

paynejd commented Oct 24, 2022

Bug:

This behavior can be easily replicated in the TermBrowser too, by looking at the Associations panel in HEAD and again in v3:

@paynejd
Copy link
Member Author

paynejd commented Oct 24, 2022

cc @snyaggarwal These are all for discussion...

What's up?

  • excludeMapTypes and returnMapTypes -- how do these work together?
    • returnMapTypes takes on the value of mapTypes, but what if excludeMapTypes is used instead?
  • includeMappings is duplicative of setting returnMapTypes to false or 0 -- we should deprecate the includeMappings parameter for users
  • Mappings have duplicate to_concept fields and there are no from_concept fields (at least when view=hierarchy)
    • to_concept_code, to_concept_url
    • target_concept_code, target_concept_url, target_concept_name, target_source_owner, target_source_name

Questions

  • For self-maps (e.g. SAME-AS CIEL:161499 SAME-AS CIEL:161499), in hierarchical view, should cascade return the target concept again and just suppress recursion? Probably not, but I want to confirm this one as a group.
  • Any reason to include uuid in the response for concepts/mappings? Not sure what is the value in exposing this externally

Food for thought

  • Repo version must be part of the response for each concept/mapping
    • Possibly just update "url" to include the source version?
    • "version_url" in its current state is discouraged to be used externally
  • Summary response for cascade should match (approximately) the summary response for concepts and mappings individually
  • The combination of method, cascadeHierarchy and cascadeMappings are quite confusing (even for me and I helped define these!) -- is there a more intuitive way to model these parameters/behaviors?

snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Oct 27, 2022
@snyaggarwal
Copy link
Contributor

@paynejd Answers/comments on each are below:

  • mapTypes and excludeMapTypes makes a common criteria to filter on map_type. returnMapTypes uses the same. So its considering both.
  • includeMappings can now be deprecated. I will make this change.
  • Mappings having duplicate response. This is because TermBrowser cascade visualisation needed a common key to render nodes (rather than iterating over from_concept_* and to_concept_*), so I added target_concept_* which points to to_concept_* in forward and from_concept_* in reverse cascade. It also includes from_concept_* and to_concept_* fields for backward compatibility (can be removed though).

snyaggarwal added a commit to OpenConceptLab/oclweb2 that referenced this issue Oct 27, 2022
@jamlung-ri
Copy link
Member

Bug:

* Hierarchical results only show up with HEAD or if no source version is specified -- compare these results:
  
  * **HEAD** - hierarchical results are included here, even though the hierarchy was defined before releasing any versions; note that this also works if I omit HEAD, which means that Cascade may not be correctly handling `latest` -- https://api.qa.openconceptlab.org/users/ocladmin/sources/CascadeTest/HEAD/concepts/AA/$cascade/?cascadeLevels=1&method=sourceToConcepts&view=hierarchy&includeRetired=false
  * **v3** - hierarchical results are NOT included, even though the hierarchy was defined before releasing any versions -- https://api.qa.openconceptlab.org/users/ocladmin/sources/CascadeTest/v3/concepts/AA/$cascade/?cascadeLevels=1&method=sourceToConcepts&view=hierarchy&includeRetired=false

This behavior can be easily replicated in the TermBrowser too, by looking at the Associations panel in HEAD and again in v3:

* https://app.qa.openconceptlab.org/#/users/ocladmin/sources/CascadeTest/v3/concepts/AA/

* https://app.qa.openconceptlab.org/#/users/ocladmin/sources/CascadeTest/HEAD/concepts/AA/

We discovered that hierarchy_root_url attribute is not appearing in the versions of the Source. Examples: HEAD version with the attribute, and v3 version without the attribute

@paynejd
Copy link
Member Author

paynejd commented Oct 27, 2022

Summarizing immediate next steps from the Oct 27 deep dive:

  • Rename target_concept_* and target_source_* fields to cascade_target_* -- this is to avoid confusion with the existing to_concept_* fields. Note that this will require updates in the TermBrowser
  • Remove uuid field from the response
  • hierarchy_root_url field is missing when getting a specific source version (e.g. GET /users/ocladmin/sources/CascadeTest/v2/), which is causing two issues:
    • Cascade only includes hierarchy when looking at HEAD
    • TermBrowser does not provide the "View Hierarchy" option on the Concepts tab when looking at source versions other than HEAD
  • Add a section at the top-level of the response that indicates cascade direction and repository version -- or, it may make sense to just include a section with all of the cascade parameters and/or the full request URL so that the response can be shared and replicated

One remaining unanswered issue for round 3:

  • The url attribute for concepts in the cascade response are inconsistent:
    • If looking at HEAD, concept url is a version-less relative URL
    • If looking at a specific repo version, url is a relative concept version URL
    • Ideally, url should instead include the repo version and not the concept version -- e.g. this is what we want it to be: /users/ocladmin/sources/CascadeTest/v2/concepts/AA/
    • @snyaggarwal can you estimate the level of effort required to make this shift? Is this going to break a bunch of stuff?

Once the above items are complete, we are hopefully ready to deploy after a final round of testing. Note that we still need to do round 3 testing in the context of collections.

We'll tackle these in Round 4:

  • Verifying & documenting the behavior of the terminal field
  • The combination of method, cascadeHierarchy and cascadeMappings are quite confusing (even for me and I helped define these!) -- is there a more intuitive way to model these parameters/behaviors
  • Additional integration tests using CascadeTest source
  • If we don't get to this in round 3: Adding repo version into the actual resource URLs in the result set
  • Consider changing duplicate resource entries to use references rather than duplicating the concepts:
    • Flat view can also provide a list of references to children that are present in the JSON

snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 1, 2022
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 1, 2022
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 1, 2022
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 1, 2022
snyaggarwal added a commit to OpenConceptLab/oclweb2 that referenced this issue Nov 1, 2022
snyaggarwal added a commit to OpenConceptLab/oclweb2 that referenced this issue Nov 1, 2022
snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 1, 2022
@snyaggarwal
Copy link
Contributor

  • Rename target_concept_* and target_source_* fields to cascade_target_* -- this is to avoid confusion with the existing to_concept_* fields. Note that this will require updates in the TermBrowser
  • Remove uuid field from the response
  • hierarchy_root_url field is missing when getting a specific source version (e.g. GET /users/ocladmin/sources/CascadeTest/v2/), which is causing two issues:
    • Cascade only includes hierarchy when looking at HEAD
    • TermBrowser does not provide the "View Hierarchy" option on the Concepts tab when looking at source versions other than HEAD
  • Add a section at the top-level of the response that indicates cascade direction and repository version -- or, it may make sense to just include a section with all of the cascade parameters and/or the full request URL so that the response can be shared and replicated

@paynejd These are done

@jamlung-ri
Copy link
Member

jamlung-ri commented Nov 1, 2022

@snyaggarwal I was doing some testing on this source, and I am seeing different results between a new source version and HEAD. Seems like hierarchy results are still not being included? Even though the hierarchy_root_url is filled out here.

However, the Hierarchy option is appearing on the v4 version of the source, so that part appears to be fixed.

snyaggarwal added a commit to OpenConceptLab/oclapi2 that referenced this issue Nov 3, 2022
@snyaggarwal
Copy link
Contributor

@jamlung-ri this is fixed.

@snyaggarwal
Copy link
Contributor

@jamlung-ri @paynejd this is deployed everywhere

@snyaggarwal
Copy link
Contributor

Deployed everywhere. Closing this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api2 OCL API v2
Projects
None yet
Development

No branches or pull requests

3 participants