Skip to content

Commit

Permalink
Add tests for extensions in medication admin/statement
Browse files Browse the repository at this point in the history
  • Loading branch information
pipliggins committed Aug 29, 2024
1 parent 9300fc2 commit 46b6a19
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 1 deletion.
5 changes: 5 additions & 0 deletions fhirflat/resources/medicationadministration.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,11 @@ def validate_extension_contents(cls, extensions):
):
raise ValueError("Each extension can can only appear once.")

if tp_count > 0 and tpd_count > 0:
raise ValueError(
"timingPhase and timingPhaseDetail cannot appear together."
)

return extensions

backbone_elements: ClassVar[dict] = {
Expand Down
2 changes: 1 addition & 1 deletion fhirflat/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from fhirflat.resources.extensions import _ISARICExtension

if TYPE_CHECKING:
from .resources.base import FHIRFlatBase
from .resources.base import FHIRFlatBase # pragma: no cover


def group_keys(data_keys: list[str] | KeysView) -> dict[str, list[str]]:
Expand Down
21 changes: 21 additions & 0 deletions tests/test_medicationadministration_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import os
from fhirflat.resources.medicationadministration import MedicationAdministration
import datetime
import pytest

MEDS_DICT_INPUT = {
"resourceType": "MedicationAdministration",
Expand Down Expand Up @@ -171,3 +172,23 @@ def test_medicationadministration_from_flat():
)

assert meds == flat_meds


@pytest.mark.usefixtures(
"raises_phase_plus_detail_error", "raises_phase_duplicate_error"
)
def test_extension_raises_errors(
raises_phase_plus_detail_error, raises_phase_duplicate_error
):
fhir_input = {
"resourceType": "MedicationAdministration",
"status": "completed",
"medication": {"reference": {"reference": "#med0306"}},
"subject": {"reference": "Patient/pat1"},
"occurencePeriod": {
"start": "2015-01-15T04:30:00+01:00",
"end": "2015-01-15T14:30:00+01:00",
},
}
raises_phase_plus_detail_error(fhir_input, MedicationAdministration)
raises_phase_duplicate_error(fhir_input, MedicationAdministration)
22 changes: 22 additions & 0 deletions tests/test_medicationstatement_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import os
from fhirflat.resources.medicationstatement import MedicationStatement
import datetime
import pytest

MEDS_DICT_INPUT = {
"resourceType": "MedicationStatement",
Expand Down Expand Up @@ -193,3 +194,24 @@ def test_medicationstatement_from_flat():
flat_meds = MedicationStatement.from_flat("tests/data/medicationstat_flat.parquet")

assert meds == flat_meds


@pytest.mark.usefixtures("raises_phase_duplicate_error")
def test_extension_raises_errors(raises_phase_duplicate_error):
fhir_input = {
"resourceType": "MedicationStatement",
"status": "recorded",
"medication": {
"concept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "27658006",
"display": "Amoxicillin (product)",
}
]
}
},
"subject": {"reference": "Patient/pat1"},
}
raises_phase_duplicate_error(fhir_input, MedicationStatement)

0 comments on commit 46b6a19

Please sign in to comment.