1212from itk_dev_shared_components .kmd_nova .util import datetime_from_iso_string
1313
1414
15+ def get_case (case_uuid : str , nova_access : NovaAccess ) -> NovaCase :
16+ """Get a case from based on its uuid.
17+
18+ Args:
19+ case_uuid: The uuid of the case to get.
20+ nova_access: The NovaAccess object used to authenticate.
21+
22+ Raises:
23+ ValueError: If no case was found.
24+
25+ Returns:
26+ The case with the given uuid.
27+ """
28+ payload = _create_payload (case_uuid = case_uuid )
29+ cases = _get_nova_cases (nova_access , payload )
30+
31+ if not cases :
32+ raise ValueError (f"No case found with the given uuid: { case_uuid } " )
33+
34+ return cases [0 ]
35+
36+
1537def get_cases (nova_access : NovaAccess , cpr : str = None , case_number : str = None , case_title : str = None , limit : int = 100 ) -> list [NovaCase ]:
1638 """Search for cases on different search terms.
1739 Currently supports search on cpr number, case number and case title. At least one search term must be given.
@@ -33,7 +55,7 @@ def get_cases(nova_access: NovaAccess, cpr: str = None, case_number: str = None,
3355 if not any ((cpr , case_number , case_title )):
3456 raise ValueError ("No search terms given." )
3557
36- payload = _create_payload (cpr , "CprNummer" , case_number , case_title , limit )
58+ payload = _create_payload (identification = cpr , identification_type = "CprNummer" , case_number = case_number , case_title = case_title , limit = limit )
3759 return _get_nova_cases (nova_access , payload )
3860
3961
@@ -58,7 +80,7 @@ def get_cvr_cases(nova_access: NovaAccess, cvr: str = None, case_number: str =
5880 if not any ((cvr , case_number , case_title )):
5981 raise ValueError ("No search terms given." )
6082
61- payload = _create_payload (cvr , "CvrNummer" , case_number , case_title , limit )
83+ payload = _create_payload (identification = cvr , identification_type = "CvrNummer" , case_number = case_number , case_title = case_title , limit = limit )
6284 return _get_nova_cases (nova_access , payload )
6385
6486
@@ -113,10 +135,11 @@ def _get_nova_cases(nova_access: NovaAccess, payload: dict) -> list[NovaCase]:
113135 return cases
114136
115137
116- def _create_payload (identification : str = None , identification_type : str = "CprNummer" , case_number : str = None , case_title : str = None , limit : int = 100 ) -> dict :
138+ def _create_payload (* , case_uuid : str = None , identification : str = None , identification_type : str = "CprNummer" , case_number : str = None , case_title : str = None , limit : int = 100 ) -> dict :
117139 return {
118140 "common" : {
119- "transactionId" : str (uuid .uuid4 ())
141+ "transactionId" : str (uuid .uuid4 ()),
142+ "uuid" : case_uuid
120143 },
121144 "paging" : {
122145 "startRow" : 1 ,
0 commit comments