diff --git a/src/config-schema.ts b/src/config-schema.ts index d000a457..e008d16f 100644 --- a/src/config-schema.ts +++ b/src/config-schema.ts @@ -13,7 +13,7 @@ export const configSchema = { }, laboratorySpecimenTypeConcept: { _type: Type.ConceptUuid, - _default: "159959AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + _default: "162476AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", _description: "Concept UUID for laboratory specimen types", }, laboratoryEncounterTypeUuid: { @@ -26,6 +26,11 @@ export const configSchema = { _default: "52a447d3-a64a-11e3-9aeb-50e549534c5e", _description: "Uuid for orderType", }, + laboratoryReferalDestinationUuid: { + _type: Type.String, + _default: "b1f8b6c8-c255-4518-89f5-4236ab76025b", + _description: "Concept uuid for laboratory referals destinations", + }, }; export type Config = { diff --git a/src/queue-list/lab-dialogs/add-to-worklist-dialog.component.tsx b/src/queue-list/lab-dialogs/add-to-worklist-dialog.component.tsx index c97b73c8..df2011d7 100644 --- a/src/queue-list/lab-dialogs/add-to-worklist-dialog.component.tsx +++ b/src/queue-list/lab-dialogs/add-to-worklist-dialog.component.tsx @@ -32,82 +32,41 @@ import { GetOrderByUuid, UpdateOrder, useQueueRoomLocations, + useReferralLocations, useSpecimenTypes, } from "./add-to-worklist-dialog.resource"; import { Encounter, Order } from "../../types/patient-queues"; interface AddToWorklistDialogProps { queueId; - encounter: Encounter; order: Order; closeModal: () => void; } const AddToWorklistDialog: React.FC = ({ queueId, - encounter, order, closeModal, }) => { const { t } = useTranslation(); - const locations = useLocations(); - - const sessionUser = useSession(); - - const [selectedLocation, setSelectedLocation] = useState(""); - const [preferred, setPreferred] = useState(false); - const [specimenID, setSpecimenID] = useState(); + const [specimenID, setSpecimenID] = useState(""); const { specimenTypes } = useSpecimenTypes(); - const [orderer, setOrderer] = useState(""); - - const [concept, setConcept] = useState(""); - - const [patient, setPatient] = useState(""); - - const [encounterUuid, setEncounterUuid] = useState(""); - - const { queueRoomLocations } = useQueueRoomLocations( - sessionUser?.sessionLocation?.uuid - ); + const { referrals } = useReferralLocations(); const [specimenType, setSpecimenType] = useState(); - const [selectedNextQueueLocation, setSelectedNextQueueLocation] = useState( - queueRoomLocations[0]?.uuid - ); + const [selectedReferral, setSelectedReferral] = useState(""); - const filteredlocations = queueRoomLocations?.filter( - (location) => location.uuid != selectedLocation - ); + const [barcode, setBarcode] = useState(""); - useEffect(() => { - if (locations?.length && sessionUser) { - setSelectedLocation(sessionUser?.sessionLocation?.uuid); - } - }, [locations, sessionUser]); + const [confirmBarcode, setConfirmBarcode] = useState(""); - // GetOrderByUuid - GetOrderByUuid(order.uuid).then( - (resp) => { - setOrderer(resp.data?.orderer?.uuid); - setConcept(resp.data?.concept?.uuid); - setPatient(resp.data?.patient?.uuid); - setEncounterUuid(resp.data?.encounter.uuid); - }, - (err) => { - showNotification({ - title: t(`errorGettingOrder', 'Error Getting Order Id`), - kind: "error", - critical: true, - description: err?.message, - }); - } - ); + const [externalReferralName, setExternalReferralName] = useState(""); const pickLabRequestQueue = async (event) => { event.preventDefault(); @@ -174,6 +133,12 @@ const AddToWorklistDialog: React.FC = ({ ); }; + useEffect(() => { + if (barcode !== "" && confirmBarcode !== "" && barcode == confirmBarcode) { + setSpecimenID(barcode); + } + }, [barcode, confirmBarcode]); + return (
@@ -193,7 +158,9 @@ const AddToWorklistDialog: React.FC = ({ }} >
- {t("specimenID", "Specimen ID")} + {preferred + ? t("barcode", "Barcode") + : t("specimenID", "Specimen ID")}
= ({ />
{preferred && ( - <> -
-
- -
+
+
+ +
-
+
+ {selectedReferral === + "3476fd97-71da-4e9c-bf57-2b6318dc0c9f" && (
@@ -321,44 +287,55 @@ const AddToWorklistDialog: React.FC = ({ type="text" id="locationName" labelText={"Enter Name"} + value={externalReferralName} + required={true} + onChange={(e) => + setExternalReferralName(e.target.value) + } />
-
-
- -
+ )} +
+
+ { + setBarcode(e.target.value); + }} + />
-
-
- -
+
+
+
+ { + setConfirmBarcode(e.target.value); + }} + />
-
-
- +
+ +
)} diff --git a/src/queue-list/lab-dialogs/add-to-worklist-dialog.resource.ts b/src/queue-list/lab-dialogs/add-to-worklist-dialog.resource.ts index 947ad520..5d8a42ad 100644 --- a/src/queue-list/lab-dialogs/add-to-worklist-dialog.resource.ts +++ b/src/queue-list/lab-dialogs/add-to-worklist-dialog.resource.ts @@ -102,6 +102,22 @@ export function useQueueRoomLocations(currentQueueLocation: string) { }; } +// get referral locations +export function useReferralLocations() { + const config = useConfig(); + const { laboratoryReferalDestinationUuid } = config; + const apiUrl = `/ws/rest/v1/concept/${laboratoryReferalDestinationUuid}`; + const { data, error, isLoading } = useSWRImmutable( + apiUrl, + openmrsFetch + ); + + return { + referrals: data ? data?.data?.answers : [], + isLoading, + }; +} + // get specimen types export function useSpecimenTypes() { const config = useConfig(); @@ -114,7 +130,7 @@ export function useSpecimenTypes() { ); return { - specimenTypes: data ? data?.data?.answers : [], + specimenTypes: data ? data?.data?.setMembers : [], isLoading, }; }