Module phc.easy.summary.options.clinical_counts

Expand source code
from enum import Enum
from typing import List, Optional, Union

from phc.easy.abstract.paging_api_item import PagingApiOptions


class SummarySearchMatchOption(str, Enum):
    FUZZY = "fuzzy"
    EXACT = "exact"


class SummaryClinicalCountsOptions(PagingApiOptions):
    match: Optional[SummarySearchMatchOption]
    code: Optional[Union[str, List[str]]]
    display: Optional[Union[str, List[str]]]
    system: Optional[Union[str, List[str]]]

    @classmethod
    def transform(cls, key, value):
        CODE_ATTRS = ["code", "display", "system"]

        if (
            key in CODE_ATTRS
            and isinstance(value, list)
            and any(filter(lambda v: "," in v, value))
        ):
            raise ValueError("Commas are not supported when searching codes")

        if key in CODE_ATTRS and isinstance(value, str):
            return (key + "s", value)

        if key in CODE_ATTRS and isinstance(value, list):
            return (key + "s", ",".join(value))

        return (key, value)

Classes

class SummaryClinicalCountsOptions (**data: Any)

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class SummaryClinicalCountsOptions(PagingApiOptions):
    match: Optional[SummarySearchMatchOption]
    code: Optional[Union[str, List[str]]]
    display: Optional[Union[str, List[str]]]
    system: Optional[Union[str, List[str]]]

    @classmethod
    def transform(cls, key, value):
        CODE_ATTRS = ["code", "display", "system"]

        if (
            key in CODE_ATTRS
            and isinstance(value, list)
            and any(filter(lambda v: "," in v, value))
        ):
            raise ValueError("Commas are not supported when searching codes")

        if key in CODE_ATTRS and isinstance(value, str):
            return (key + "s", value)

        if key in CODE_ATTRS and isinstance(value, list):
            return (key + "s", ",".join(value))

        return (key, value)

Ancestors

Subclasses

Class variables

var code : Union[str, List[str], None]
var display : Union[str, List[str], None]
var match : Optional[SummarySearchMatchOption]
var system : Union[str, List[str], None]

Static methods

def transform(key, value)
Expand source code
@classmethod
def transform(cls, key, value):
    CODE_ATTRS = ["code", "display", "system"]

    if (
        key in CODE_ATTRS
        and isinstance(value, list)
        and any(filter(lambda v: "," in v, value))
    ):
        raise ValueError("Commas are not supported when searching codes")

    if key in CODE_ATTRS and isinstance(value, str):
        return (key + "s", value)

    if key in CODE_ATTRS and isinstance(value, list):
        return (key + "s", ",".join(value))

    return (key, value)

Methods

def dict(self)

Inherited from: PagingApiOptions.dict

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

class SummarySearchMatchOption (value, names=None, *, module=None, qualname=None, type=None, start=1)

An enumeration.

Expand source code
class SummarySearchMatchOption(str, Enum):
    FUZZY = "fuzzy"
    EXACT = "exact"

Ancestors

  • builtins.str
  • enum.Enum

Class variables

var EXACT
var FUZZY