/** * Project iLinkWorld * File ModifierFeuilleSoinScreen * Path screens/wallet/agent * Created by BRICE ZELE * Date: 11/11/2021 */ import React, {useEffect, useRef, useState} from 'react'; import { ActivityIndicator, Alert, Dimensions, FlatList, KeyboardAvoidingView, Platform, ScrollView, StyleSheet, TouchableOpacity, View, } from 'react-native'; import {connect, useDispatch} from 'react-redux'; import Dialog from "react-native-dialog"; import _ from 'lodash'; import {Formik, useFormik} from 'formik'; import * as Yup from 'yup'; import {Color} from "../../../config/Color"; import I18n from 'react-native-i18n'; import {ScreenComponent} from "../../../components/ScreenComponent"; import Button from "../../../components/Button"; import {responsiveWidth} from "react-native-responsive-dimensions"; import { fetchActivePaySubscription, fetchCreateConsultation, fetchCreateConsultationReset, fetchExecutionPrescription, fetchExecutionPrescriptionReset, fetchGetAmountConsultation, fetchGetAmountConsultationReset, fetchGetConsultation, fetchGetConsultationReset, fetchGetDrugAppareil, fetchGetNetworkActs, fetchGetNetworkActsReset, fetchGetProviderClass, fetchGetProviderClassReset, fetchGetSubscriptionListReset, fetchGetUserByIdQRCode, fetchGetUserByIdQRCodeReset, fetchGetUserByNameOrNumber, fetchGetUserByNameOrNumberReset, fetchModifyPrescription, fetchModifyPrescriptionReset } from "../../../redux/insurance/insurance.actions"; import DropdownAlert from "react-native-dropdownalert"; import {readUser} from "../../../webservice/AuthApi"; import TextInput from "../../../components/TextInput"; import { selectActivatePaySubscription, selectExecutionPrescription, selectGetAmountConsultation, selectGetConsultation, selectGetDrugAppareil, selectGetNetworkAct, selectGetProviderClass, selectGetUserByIdQRCode, selectGetUserByIdQRCodeReducer, selectGetUserByNameOrNumber, selectGetUserByNameOrNumberReducer, selectModifyPrescription } from "../../../redux/insurance/insurance.selector"; import StepHeader from "../../../components/StepHeaderComponent"; import Wizard from "react-native-wizard"; import Icon from "react-native-vector-icons/FontAwesome5"; import FontAwesome5 from "react-native-vector-icons/FontAwesome5"; import FontAwesome from "react-native-vector-icons/FontAwesome"; import Text from "../../../components/Text"; import SwitchSelector from "react-native-switch-selector"; import * as Animatable from "react-native-animatable"; import {Dropdown} from "react-native-material-dropdown"; import Modal from "react-native-modal"; import QRCodeScanner from "react-native-qrcode-scanner"; import {RNCamera} from "react-native-camera"; import * as Utils from "../../../utils/UtilsFunction"; import {cutString, uppercaseFirstLetter} from "../../../utils/UtilsFunction"; import {store} from "../../../redux/store"; import {Typography} from "../../../config/typography"; import DateTimePicker from "@react-native-community/datetimepicker"; import {createStructuredSelector} from "reselect"; import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons"; import Fontisto from "react-native-vector-icons/Fontisto"; let moment = require('moment-timezone'); const {width, height} = Dimensions.get('window'); const CIRCLE_SIZE = width * 0.5; const styles = StyleSheet.create({ textInput: { height: 46, backgroundColor: Color.fieldColor, borderRadius: 5, marginTop: 10, padding: 10, width: '100%', }, lineRow: { flexDirection: 'row', justifyContent: 'space-between', paddingBottom: 20, }, contain: { alignItems: 'center', marginTop: 40, paddingBottom: 20, paddingLeft: 20, paddingRight: 20, flex: 1, }, circle: { width: CIRCLE_SIZE, height: CIRCLE_SIZE, borderRadius: CIRCLE_SIZE / 2, position: 'absolute', top: '15%', }, circleContainer: { alignItems: 'flex-end', right: -(CIRCLE_SIZE / 3), top: -(CIRCLE_SIZE / 1.5), }, lineSeparator: { borderWidth: 1, width: '40%', height: 1, alignSelf: 'center', }, line: { width: 1, height: 14, backgroundColor: Color.grayColor, marginLeft: 10, }, contentModeView: { width: 30, height: '100%', alignItems: 'flex-end', justifyContent: 'center', }, contentFilter: { flexDirection: 'row', alignItems: 'center', marginLeft: 10, }, bottomModal: { justifyContent: 'flex-end', margin: 0, }, contentFilterBottom: { width: "100%", borderTopLeftRadius: 8, borderTopRightRadius: 8, paddingHorizontal: 20 }, contentSwipeDown: { paddingTop: 10, alignItems: 'center', }, lineSwipeDown: { width: 30, height: 2.5, backgroundColor: Color.dividerColor, }, contentActionModalBottom: { flexDirection: "row", paddingVertical: 10, marginBottom: 10, justifyContent: "space-between", borderBottomWidth: 1 }, containModal: { paddingVertical: 10, paddingHorizontal: 20, flexDirection: 'row', justifyContent: 'space-between', }, floatingButtonAdd: { backgroundColor: Color.accentColor, position: "absolute", width: 25, bottom: 0, zIndex: 1000, right: 20, top: 35, height: 25, borderRadius: 12.5, alignItems: 'center', justifyContent: 'center', }, contentSwitch: { width: responsiveWidth(40), }, switch: {}, choosePhotoBtn: { marginTop: 10, marginBottom: 10, width: "auto", height: "auto", padding: 5, alignItems: 'center', borderColor: Color.borderColor, marginRight: 10, elevation: 2, }, checkbox: { alignSelf: "center", color: "white" }, itemAmountPerMonth: { paddingLeft: 10, marginTop: 10, flexDirection: 'row', }, dot: { width: 12, height: 12, borderRadius: 6 }, blockView: { paddingVertical: 10, borderBottomWidth: 0.5, }, iconNavigation: { width: '100%', flexDirection: 'row', marginTop: 20, justifyContent: 'space-between', alignItems: 'center', }, iconNavigationButton: { borderWidth: 1, borderRadius: 25, width: 50, height: 50, alignItems: 'center', justifyContent: 'center' }, beneficiarySubSection: { marginTop: 10, flexDirection: 'row', width: '100%', }, iconRight: { width: 70, flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', }, }); const ModifierFeuilleSoinScreen = ({ subscriptionList, fetchGetUserByIdQRCode, fetchGetUserByNameOrNumber, fetchGetProviderClass, fetchGetConsultation, fetchGetDrugAppareil, fetchModifyPrescription, fetchGetNetworkActs, getConsultation, getUserByNameOrNumber, getUserByIdQRCode, getProviderClass, getDrugAppareil, getNetworkAct, createConsultation, getAmountConsultation, executionPrescription, modifyPrescription, navigation }) => { const [showQRCodeScanner, setShowQRCodeScanner] = useState(false); const [showDateAccidentPicker, setShowDateAccidentPicker] = useState(false); const [dateAccident, setDateAccident] = useState(null); const [isAccident, setIsAccident] = useState(false); const [wallet] = useState(store.getState().walletDetailReducer.result.response); console.log("Wallet", wallet); const [isNumeroAssureSearch, setIsNumeroAssureSearch] = useState(false); const [isPhoneAssureSearch, setIsPhoneAssureSearch] = useState(false); const [datePrestation, setDatePrestation] = useState('' + moment(new Date()).format('YYYY-MM-DD HH:mm')); const [showDatePrestation, setShowDatePrestation] = useState(false); const [dateDebutGrossesse, setDateDebutGrossesse] = useState(null); const [dateFinGrossesse, setDateFinGrossesse] = useState(null); const [isGrossesse, setIsGrossesse] = useState(false); const [showDateDebutGrossessePicker, setShowDateDebutGrossessePicker] = useState(false); const [showDateFinGrossessePicker, setShowDateFinGrossessePicker] = useState(false); const [careConditon, setCareCondition] = useState(null); const [user, setUser] = useState(null); const [assure, setAssure] = useState(null); const [beneficiary, setBeneficiary] = useState(null); const [medicament, setMedicament] = useState(null); const [elementToSetPrice, setElementToSetPrice] = useState(null); const wizard = useRef(); const [isFirstStep, setIsFirstStep] = useState(true); const [isLastStep, setIsLastStep] = useState(false); const [currentStep, setCurrentStep] = useState(1); const [modalConsultation, setModalConsultation] = useState(false); const [consultation, setConsultation] = useState(null); const [displayModalHistory, setDisplayModalHistory] = useState(false); const [historyItemDetail, setHistoryItemDetail] = useState({}); const [modalExamen, setModalExamen] = useState(false); const [modalListPrestation, setModalListPrestation] = useState(false); const [modalPrice, setModalPrice] = useState(false); const [modalListAssure, setModalListAssure] = useState(false); const [modalListMedicament, setModalListMedicament] = useState(false); const [modalPrestation, setModalPrestation] = useState(false); const [modalModifyPrestation, setModalModifyPrestation] = useState(false); const [modalMedicament, setModalMedicament] = useState(false); const [modalModifyMedicament, setModalModifyMedicament] = useState(false); const [modalModifyExamen, setModalModifyExamen] = useState(false); const [modalAddMedicament, setModalAddMedicament] = useState(false); const [prestations, setPrestations] = useState([]); const [examens, setExamens] = useState([]); const [prescriptions, setPrescriptions] = useState([]); const [statutPatientOption] = useState([ {label: I18n.t('AYANT_DROITS'), value: "M"}, {label: I18n.t('ASSURE'), value: "F"}, ]); const [statutPatient, setStatutPatient] = useState(1); const [accident] = useState([ {label: I18n.t('YES'), value: "YES"}, {label: I18n.t('NO'), value: "NO"}, ]); const [grossesse] = useState([ {label: I18n.t('YES'), value: "YES"}, {label: I18n.t('NO'), value: "NO"}, ]); const [visiteDomicile] = useState([ {label: I18n.t('YES'), value: "YES"}, {label: I18n.t('NO'), value: "NO"}, ]); const [isVisiteDomicile, setIsVisiteDomicile] = useState(false); const [conditionPriseEnChange] = useState([ {label: I18n.t('AFFECTION_COURANTE'), value: "CURRENT_AFFECTION"}, {label: I18n.t('AFFECTION_LONGUE'), value: "LONG_TERM_AFFECTION"}, { label: I18n.t('EXONERE'), value: "EXONERATION" }, ]); const [onPrescription] = useState([ {label: I18n.t('COMPRESSED'), value: "COMPRESSED"}, {label: I18n.t('SYRUP'), value: "SYRUP"}, {label: I18n.t('SOLUTION'), value: "SOLUTION"}, {label: I18n.t('SUPPOSITORY'), value: "SUPPOSITORY"}, {label: I18n.t('DEVICE'), value: "DEVICE"}, ]); const dispatch = useDispatch(); let dropDownAlertRef: any = null; let classificationRef = null; let codeActeRef = null; let onPrescriptionRef = null; console.log("Health sheet", consultation); console.log("executionPrescription", executionPrescription); useEffect(() => { readUser().then((user) => { setFieldValue('agrement_praticien', user.code_membre); console.log("User", user); setUser(user) }); dispatch(fetchGetSubscriptionListReset()); dispatch(fetchGetAmountConsultationReset()); dispatch(fetchGetUserByNameOrNumberReset()); dispatch(fetchGetUserByIdQRCodeReset()); dispatch(fetchCreateConsultationReset()); dispatch(fetchGetProviderClassReset()); dispatch(fetchGetConsultationReset()); dispatch(fetchGetNetworkActsReset()); dispatch(fetchExecutionPrescriptionReset()); dispatch(fetchModifyPrescriptionReset()); fetchGetProviderClass(wallet.id_network); fetchGetNetworkActs(wallet.id_network, ''); }, []); useEffect(() => { if (user !== null) { console.log("user", user); } }, [user]); useEffect(() => { console.log("getUserByNameOrNumber.result", getUserByNameOrNumber); if (getUserByNameOrNumber.result !== null) { if (getUserByNameOrNumber.result.response.length > 0) { setModalListAssure(true); //wizard.current.next(); } else { dropDownAlertRef.alertWithType( 'warn', I18n.t('EMPTY_LIST'), I18n.t('NO_ASSURE_MATCH_SEARCH'), ); //dispatch(fetchGetUserByNameOrNumberReset()); } } if (getUserByNameOrNumber.error) { Alert.alert( I18n.t("ERROR_LABLE"), Utils.getErrorMsg(getUserByNameOrNumber), [ { text: I18n.t("OK"), onPress: () => { dispatch(fetchGetUserByNameOrNumberReset()); } } ], { cancelable: false } ); /* dropDownAlertRef.alertWithType( 'error', I18n.t('ERROR_LABEL'), Utils.getErrorMsg(getUserByNameOrNumber), ); dispatch(fetchGetUserByNameOrNumberReset());*/ } }, [getUserByNameOrNumber]); useEffect(() => { if (getConsultation.result !== null) setModalConsultation(true); if (getConsultation.error) { Alert.alert( I18n.t("ERROR_LABLE"), Utils.getErrorMsg(getConsultation), [ { text: I18n.t("OK"), onPress: () => { dispatch(fetchGetConsultationReset()); } } ], { cancelable: false } ); /* dropDownAlertRef.alertWithType( 'error', I18n.t('ERROR_LABEL'), Utils.getErrorMsg(getConsultation), ); dispatch(fetchGetConsultationReset());*/ } }, [getConsultation]); useEffect(() => { if (modifyPrescription.result !== null) { Alert.alert( I18n.t("SUCCESS"), modifyPrescription.result.response, [ { text: I18n.t("OK"), onPress: () => { dispatch(fetchModifyPrescriptionReset()); navigation.goBack(); } } ], {cancelable: false} ) } if (modifyPrescription.error) { Alert.alert( I18n.t("ERROR_LABLE"), Utils.getErrorMsg(modifyPrescription), [ { text: I18n.t("OK"), onPress: () => { dispatch(fetchModifyPrescriptionReset()); } } ], { cancelable: false } ); /* dropDownAlertRef.alertWithType( 'error', I18n.t('ERROR_LABEL'), Utils.getErrorMsg(modifyPrescription), ); dispatch(fetchModifyPrescriptionReset());*/ } }, [modifyPrescription]); const ModifierFeuilleSoinSchema = Yup.object().shape({ numero_assure: Yup.string() .required(I18n.t('THIS_FIELD_IS_REQUIRED')), password: Yup.string() .required(I18n.t('THIS_FIELD_IS_REQUIRED')), practitioner_lastname: Yup.string() .required(I18n.t('THIS_FIELD_IS_REQUIRED')), practitioner_firstname: Yup.string() .required(I18n.t('THIS_FIELD_IS_REQUIRED')), }); const PriceModal = Yup.object().shape({ price: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')), }); const AddNewPrestation = Yup.object().shape({ amount_prestation: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')), code_acte: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')), frais_deplacement: Yup.number(), date_prestation: Yup.date(), ticker_moderateur: Yup.number(), }); const ModifyPrestation = Yup.object().shape({ amount_prestation: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')), date_prestation: Yup.date(), }); const AddNewExamen = Yup.object().shape({ examen_name: Yup.string().required(I18n.t('THIS_FIELD_IS_REQUIRED')), code_acte: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')), examen_quantite: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')) }); const ModifyNewExamen = Yup.object().shape({ examen_name: Yup.string().required(I18n.t('THIS_FIELD_IS_REQUIRED')), examen_quantite: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')) }); const AddNewMedicament = Yup.object().shape({ drug_name: Yup.string().required(I18n.t('THIS_FIELD_IS_REQUIRED')), drug_quantity: Yup.number().required(I18n.t('THIS_FIELD_IS_REQUIRED')), drug_posologie: Yup.string().required(I18n.t('THIS_FIELD_IS_REQUIRED')), }); const AddNewMedicamentToDB = Yup.object().shape({ code: Yup.string().required(I18n.t('THIS_FIELD_IS_REQUIRED')), name: Yup.string().required(I18n.t('THIS_FIELD_IS_REQUIRED')), type: Yup.string().required(I18n.t('THIS_FIELD_IS_REQUIRED')) }); const onChangeDatePrestation = (event, selectedDate) => { const currentDate = selectedDate || '' + moment(new Date()).format('YYYY-MM-DD'); setShowDatePrestation(Platform.OS === 'ios'); setDatePrestation(currentDate); }; const renderDatePrestationPicker = () => { return ( ); } const onChangeDateAccident = (event, selectedDate) => { const currentDate = selectedDate || new Date(); setShowDateAccidentPicker(Platform.OS === 'ios'); setDateAccident(moment(currentDate).format('YYYY-MM-DD')); setFieldValue('accident_date', moment(currentDate).format('YYYY-MM-DD')); }; const renderDateAccidentPicker = () => { return ( ); } const onChangeDateDebutGrossesse = (event, selectedDate) => { const currentDate = selectedDate || new Date(); setShowDateDebutGrossessePicker(Platform.OS === 'ios'); setDateDebutGrossesse(moment(currentDate).format('YYYY-MM-DD')); setFieldValue('pregnancy_start_at', moment(currentDate).format('YYYY-MM-DD')); }; const renderDateDebutGrossessePicker = () => { return ( ); } const onChangeDateFinGrossesse = (event, selectedDate) => { const currentDate = selectedDate || new Date(); setShowDateFinGrossessePicker(Platform.OS === 'ios'); setDateFinGrossesse(moment(currentDate).format('YYYY-MM-DD')); setFieldValue('pregnancy_end_at', moment(currentDate).format('YYYY-MM-DD')); }; const renderDateFinGrossessePicker = () => { return ( ); } const renderDialogQRCodeScanner = () => { return ( {I18n.t('SCAN')} {I18n.t('BRING_YOUR_CAMERA_CLOSER_TO_SCAN_QR_CODE')} { setShowQRCodeScanner(false); console.log("result", result.data); }} flashMode={RNCamera.Constants.FlashMode.off} /> { setShowQRCodeScanner(false); }}/> ) } const renderAddNewPrestation = () => { let amount = elementToSetPrice !== null ? elementToSetPrice.drugs === null ? _.parseInt(elementToSetPrice.amount) : '' : ''; console.log("AMOUNT", amount); return ( { console.log("values", values); setConsultation({ ...consultation, performances: consultation.performances.map(performance => { return elementToSetPrice.id === performance.id ? { ...performance, act_id: values.code_acte.id, act: values.code_acte, amount: values.amount_prestation, home_visit_fees: values.frais_deplacement, to_delete: false } : performance; }) }); setModalPrestation(false); }}> {({ values, errors, touched, handleChange, handleBlur, setFieldValue, setFieldTouched, handleSubmit, isSubmitting, }) => ( { setModalPrestation(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('MODIFY_PRESTATION')} { codeActeRef = comp }} style={{ width: responsiveWidth(90), height: 60, alignSelf: 'center', borderRadius: 10, paddingLeft: 20, marginTop: 10, paddingRight: 20, backgroundColor: 'white' }}> { setFieldTouched('code_acte'); setFieldValue('code_acte', value); }} valueExtractor={(value) => { return value }} labelExtractor={(value) => { return value.name }} /> { setFieldValue('amount_prestation', value); fetchGetAmountConsultation({ network_id: wallet.id_network, amount: '' + value, care_condition: careConditon }); }} onBlur={handleBlur('amount_prestation')} success={touched.amount_prestation && !errors.amount_prestation} touched={touched.amount_prestation} error={errors.amount_prestation} /> {I18n.t('VISITE_DOMICILE')} { setIsVisiteDomicile(value === 'YES') }}/> {isVisiteDomicile && ( ) } )} ); } const renderModifyPrestation = () => ( { if (values.code_acte === '') codeActeRef.shake(200) else { setPrestations([{ act_id: values.code_acte.id, act: values.code_acte, amount: values.amount_prestation, home_visit_fees: values.frais_deplacement }, ...prestations]); setModalModifyPrestation(false); Utils.displayToast(I18n.t('PRESTATION_SUCCESSFULLY_MODIFY')); } }}> {({ values, errors, touched, handleChange, handleBlur, setFieldValue, setFieldTouched, handleSubmit, isSubmitting, }) => ( { setModalModifyPrestation(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('MODIFY_PRESTATION')} { codeActeRef = comp }} style={{ width: responsiveWidth(90), height: 60, alignSelf: 'center', borderRadius: 10, paddingLeft: 20, marginTop: 10, paddingRight: 20, backgroundColor: 'white' }}> { setFieldTouched('code_acte'); setFieldValue('code_acte', value); }} valueExtractor={(value) => { return value }} labelExtractor={(value) => { return value.name }} /> { fetchGetAmountConsultation({ network_id: wallet.id_network, amount: values.amount_prestation, care_condition: careConditon }); }} /> {I18n.t('VISITE_DOMICILE')} { setIsVisiteDomicile(value === 'YES') }}/> {isVisiteDomicile && ( ) } )} ); const renderAddNewMedicament = () => ( { setPrescriptions([{ drug_or_device_id: medicament.id, dosage: values.drug_posologie, quantity: values.drug_quantity }, ...prescriptions]); setModalMedicament(false); Utils.displayToast(I18n.t('PRESCRIPTIONS_SUCCESSFULLY_ADD')); }}> {({ values, errors, touched, handleChange, handleBlur, handleSubmit, isSubmitting, }) => ( { setModalMedicament(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('AJOUTER_MEDICAMENT')} { fetchGetDrugAppareil(wallet.id_network, values.drug_name); }}> {(getDrugAppareil.loading) ? : } )} ); const renderModifyMedicament = () => ( { setConsultation({ ...consultation, prescriptions: consultation.prescriptions.map(exam => { return elementToSetPrice.id === exam.id ? { id: exam.id, drug_or_device_id: elementToSetPrice.drug_or_device.id, drug_or_device: elementToSetPrice.drug_or_device, dosage: values.drug_posologie, quantity: values.drug_quantity, unit_price: exam.unit_price, to_delete: false } : exam; }) }); setModalModifyMedicament(false); Utils.displayToast(I18n.t('PRESCRIPTIONS_SUCCESSFULLY_MODIFY')); }}> {({ values, errors, touched, handleChange, handleBlur, handleSubmit, isSubmitting, }) => ( { setModalModifyMedicament(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('MODIFIER_MEDICAMENT')} )} ); const renderAddNewMedicamentToDB = () => ( { setMedicament(null); fetchAddDrug({ network_id: wallet.id_network, code: values.code, name: values.name, type: values.type, on_prescription: values.on_prescription }) }}> {({ values, errors, touched, handleChange, handleBlur, handleSubmit, setFieldValue, isSubmitting, }) => ( { setModalAddMedicament(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('AJOUTER_NOUVEAU_MEDICAMENT')} { onPrescriptionRef = comp }} style={{ width: responsiveWidth(90), height: 60, alignSelf: 'center', borderRadius: 10, paddingLeft: 20, marginTop: 10, paddingRight: 20, backgroundColor: 'white' }}> { setFieldValue('type', value.value); }} valueExtractor={(value) => { return value }} labelExtractor={(value) => { return value.label }} /> {I18n.t('SOUS_ORDONNANCE')} { setFieldValue('on_prescription', value === 'YES'); console.log("On Prescription", value); //setGender(value); }}/> )} ); const renderAddNewExamen = () => ( { console.log("Value", values); setExamens([{ act_id: values.code_acte, description: values.examen_name, quantity: values.examen_quantite }, ...examens]); setModalExamen(false); Utils.displayToast(I18n.t('EXAMENS_SUCCESSFULLY_ADD')); }}> {({ values, errors, touched, handleChange, setFieldValue, setFieldTouched, handleBlur, handleSubmit, isSubmitting, }) => ( { setModalExamen(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('AJOUTER_EXAMEN')} { codeActeRef = comp }} style={{ width: responsiveWidth(90), height: 60, alignSelf: 'center', borderRadius: 10, paddingLeft: 20, marginTop: 10, paddingRight: 20, backgroundColor: 'white' }}> { console.log("Value", value); setFieldTouched('code_acte'); setFieldValue('code_acte', value.id); }} valueExtractor={(value) => { return value }} labelExtractor={(value) => { return value.name }} /> )} ); const renderModifyExamen = () => ( { setConsultation({ ...consultation, exams: consultation.exams.map(exam => { return elementToSetPrice.id === exam.id ? { ...exam, id: exam.id, act_id: values.code_acte.id, act: values.code_acte, description: values.examen_name, quantity: values.examen_quantite, unit_price: exam.unit_price, to_delete: false } : exam; }) }); setModalModifyExamen(false); Utils.displayToast(I18n.t('EXAMENS_SUCCESSFULLY_MODIFY')); }}> {({ values, errors, touched, handleChange, setFieldValue, setFieldTouched, handleBlur, handleSubmit, isSubmitting, }) => ( { setModalModifyExamen(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('MODIFIER_EXAMEN')} { codeActeRef = comp }} style={{ width: responsiveWidth(90), height: 60, alignSelf: 'center', borderRadius: 10, paddingLeft: 20, marginTop: 10, paddingRight: 20, backgroundColor: 'white' }}> { console.log("Value", value); setFieldTouched('code_acte'); setFieldValue('code_acte', value); }} valueExtractor={(value) => { return value }} labelExtractor={(value) => { return value.name }} /> )} ); const renderPriceModal = () => ( { console.log("Value", elementToSetPrice); if (elementToSetPrice.examen) { setConsultation({ ...consultation, exams: consultation.exams.map(exam => { return elementToSetPrice.id === exam.id ? { ...exam, unit_price: values.price } : exam; }) }); } else { setConsultation({ ...consultation, prescriptions: consultation.prescriptions.map(exam => { return elementToSetPrice.id === exam.id ? { ...exam, unit_price: values.price } : exam; }) }); } setModalPrice(false); }}> {({ values, errors, touched, handleChange, setFieldValue, setFieldTouched, handleBlur, handleSubmit, isSubmitting, }) => ( { setModalPrice(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('AMOUNT_LABEL')} )} ); const renderPresatationList = () => ( { setModalListPrestation(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('LIST_PRESTATION')} !performance.to_delete)} extraData={consultation.performances.filter(performance => !performance.to_delete)} keyExtractor={(item, index) => index} renderItem={({item, index}) => { return ( {`${cutString(item.act.name, 30)} \n ${I18n.t('AMOUNT_LABEL')}: ${item.amount} \n ${I18n.t('AMOUNT_PER_INSURANCE')}: ${item.insurance_amount} \n ${I18n.t('TICKET_MONDERATEUR')}: ${item.moderator_ticket} ${item.home_visit_fees !== null ? '| ' + item.home_visit_fees : ''}`} { setElementToSetPrice({ ...item, drugs: null }); setModalPrestation(true); }}> { setConsultation({ ...consultation, performances: consultation.performances.map(performance => { return item.id === performance.id ? { ...performance, to_delete: true } : performance }) }); }}> ) }}/> ); const renderExamList = () => ( { setModalExamen(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('EXAMEN')} !exam.to_delete)} extraData={consultation.exams.filter(exam => !exam.to_delete)} keyExtractor={(item, index) => index} renderItem={({item, index}) => { return ( {`${item.quantity} ${item.description} ${item.unit_price ? ' - ' + item.unit_price : ''} \n ${item.act.name}`} { setElementToSetPrice({ ...item, drugs: false }); setModalModifyExamen(true); }}> { setConsultation({ ...consultation, exams: consultation.exams.map(exam => { return item.id === exam.id ? { ...exam, to_delete: true } : exam }) }); }}> ) }}/> ); console.log("consultaiton", consultation); const renderListAssure = () => ( { setModalListAssure(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('LIST_ASSURE')} {I18n.t('NO_ASSURE_MATCH_SEARCH')}} keyExtractor={(item, index) => index} renderItem={({item, index}) => { return ( { if (item.state !== 'PAID') { Alert.alert(I18n.t('ERROR_LABEL'), I18n.t('ASSURE_NON_EN_REGLE'), [{ text: I18n.t('OK'), onPress: () => { } }]); } else { setAssure(item); setBeneficiary(null); setStatutPatient(1); setModalListAssure(false); setFieldValue( 'lastname_patient', item.user.lastname, ); setFieldValue( 'firstname_patient', item.user.firstname, ); //dispatch(fetchGetUserByNameOrNumberReset()); fetchGetConsultation(item.user.id, 'UNTREATED', 'CONSULTATION', `&network_agent_id=${wallet.network_agent_id}`); } }}> {`${item.user.firstname !== null ? item.user.firstname : ''} ${item.user.lastname !== null ? item.user.lastname : ''}`} {item.beneficiaries.map((beneficiary) => ( { setAssure(item); setBeneficiary(beneficiary); setStatutPatient(0); setModalListAssure(false); setFieldValue( 'lastname_patient', beneficiary.lastname, ); setFieldValue( 'firstname_patient', beneficiary.firstname, ); fetchGetConsultation(item.user.id, 'TO_BILL', 'CONSULTATION', `&beneficiary_id=${beneficiary.id}`); }}> {`${beneficiary.firstname !== null ? beneficiary.firstname : ''} ${beneficiary.lastname !== null ? beneficiary.lastname : ''} (${I18n.t('AYANT_DROITS')})`} ))} ) }}/> ); const renderListConsultation = () => ( { setModalConsultation(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('LIST_CONSULTATION')} {I18n.t('NO_CONSULTATION')}} extraData={getConsultation.result?.response} keyExtractor={(item, index) => index} renderItem={({item, index}) => { return ( { setHistoryItemDetail(item); setDisplayModalHistory(true); }}> {`${item.type} #${item.health_care_sheet_id} - ${moment(item.created_at).format('YYYY-MM-DD')}`} ) }}/> ); const renderModalHistoryDetail = () => ( {I18n.t('DETAIL')} {I18n.t('PATIENT')} {`${historyItemDetail.patient_lastname} ${historyItemDetail.patient_firstname}`} Situation {historyItemDetail.patient_situation.toLowerCase()} {I18n.t('PRATICIEN')} {`${historyItemDetail.practitioner_lastname} ${historyItemDetail.practitioner_firstname}`} {I18n.t('CLASSE_PRESTATAIRE')} {uppercaseFirstLetter(historyItemDetail.practitioner_provider_class.toLowerCase())} {I18n.t('STATE')} {uppercaseFirstLetter(historyItemDetail.state.toLowerCase())} Type {uppercaseFirstLetter(historyItemDetail.type.toLowerCase())} {I18n.t('CONDITION_PRISE_CHARGE')} {uppercaseFirstLetter(historyItemDetail.care_condition.toLowerCase())} {I18n.t('INSTITUTE_NAME')} {uppercaseFirstLetter(historyItemDetail.institution_name.toLowerCase())} Date {moment(historyItemDetail.created_at).format('YYYY-MM-DD')} {I18n.t('PRESTATION')} {historyItemDetail.performances.map(performance => ( {`${performance.act.name} \n ${performance.amount} \n`} ))} {I18n.t('EXAMEN')} {historyItemDetail.exams.map(exam => ( {`${exam.description} \n ${exam.act.name} \n`} ))} {I18n.t('MEDICAMENT')} {historyItemDetail.prescriptions.map(prescription => ( {`${prescription.drug_or_device.name} \n ${prescription.dosage} \n`} ))} { setDisplayModalHistory(false); }}/> { setDisplayModalHistory(false); setModalListAssure(false); setModalConsultation(false); setConsultation({ ...historyItemDetail, exams: historyItemDetail.exams.map(exam => { return {...exam, to_delete: false} }), performances: historyItemDetail.performances.map(performance => { return {...performance, to_delete: false} }), prescriptions: historyItemDetail.prescriptions.map(prescription => { return {...prescription, to_delete: false} }) }); setCareCondition(historyItemDetail.care_condition); setFieldValue( 'practitioner_firstname', historyItemDetail.practitioner_firstname, ); setFieldValue( 'practitioner_lastname', historyItemDetail.practitioner_lastname, ); setFieldValue( 'pregnancy_start_at', historyItemDetail.pregnancy_start_at, ); setFieldValue( 'accident_date', historyItemDetail.accident_date, ); setIsAccident(historyItemDetail.accident_date !== null); setIsGrossesse(historyItemDetail.pregnancy_start_at !== null); //dispatch(fetchGetUserByNameOrNumberReset()); wizard.current.next(); }}/> ) const renderListMedicament = () => ( { setModalListMedicament(false); }} swipeDirection={['down']} style={styles.bottomModal}> {I18n.t('MEDICAMENTS')} !prescription.to_delete)} extraData={consultation.prescriptions.filter(prescription => !prescription.to_delete)} keyExtractor={(item, index) => index} renderItem={({item, index}) => { return ( {`${item.quantity} ${item.drug_or_device.name} ${item.unit_price ? ' - ' + item.unit_price : ''} \n ${item.dosage}`} { setElementToSetPrice({ ...item, drugs: true }); setModalModifyMedicament(true); }}> { setConsultation({ ...consultation, prescriptions: consultation.prescriptions.map(prescription => { return item.id === prescription.id ? { ...prescription, to_delete: true } : prescription }) }); }}> ) }}/> ) const { handleChange, handleSubmit, handleBlur, values, errors, touched, setFieldValue, setFieldTouched, isValid, } = useFormik({ validationSchema: ModifierFeuilleSoinSchema, initialValues: { numero_assure: '', password: '', firstname_patient: '', lastname_patient: '', practitioner_firstname: '', practitioner_lastname: '', agrement_praticien: user?.code_membre, pregnancy_start_at: null, pregnancy_end_at: null, accident_date: null, }, onSubmit: values => { fetchModifyPrescription(consultation.id, { network_agent_id: wallet.network_agent_id, password: values.password, practitioner_lastname: values.practitioner_lastname, practitioner_firstname: values.practitioner_firstname, practitioner_provider_class_id: values.practitioner_provider_class_id, care_condition: values.care_condition, accident_date: values.accident_date, pregnancy_start_at: values.pregnancy_start_at, pregnancy_end_at: values.pregnancy_end_at, performances: consultation.performances, prescriptions: consultation.prescriptions, exams: consultation.exams }); }, }); const onNext = () => { console.log("currentStep", currentStep); switch (currentStep) { case 0: console.log("values", values); if (values.numero_assure !== '' && getUserByNameOrNumber.result === null) { dispatch(fetchGetUserByNameOrNumberReset()); if (isNumeroAssureSearch) fetchGetUserByNameOrNumber(wallet.id_network, `&insured_id=${values.numero_assure}`); else if (isPhoneAssureSearch) fetchGetUserByNameOrNumber(wallet.id_network, `&phone=${values.numero_assure}`); else fetchGetUserByNameOrNumber(wallet.id_network, `&name=${values.numero_assure}`) console.log("errors", errors); } return false; break; default: return true; } }; const stepList = [ { title: I18n.t('ASSURE'), content: ( } /> { setIsNumeroAssureSearch(true); setIsPhoneAssureSearch(false); }} /> { setIsNumeroAssureSearch(false); setIsPhoneAssureSearch(true); }} /> { setIsNumeroAssureSearch(false); setIsPhoneAssureSearch(false); }} /> { setShowQRCodeScanner(true); }} /> ), }, { title: I18n.t('PATIENT'), content: ( {I18n.t('SITUATION')} { //setGender(value); }}/> ), }, { title: I18n.t('PRATICIEN'), content: ( { classificationRef = comp }} style={{ width: responsiveWidth(90), height: 60, alignSelf: 'center', borderRadius: 10, paddingLeft: 20, marginTop: 10, paddingRight: 20, backgroundColor: 'white' }}> { setFieldTouched('practitioner_provider_class_id'); setFieldValue('practitioner_provider_class_id', value.id); console.log("Value", value); }} valueExtractor={(value) => { return value }} labelExtractor={(value) => { return value.name }} /> { classificationRef = comp }} style={{ width: responsiveWidth(90), height: 60, alignSelf: 'center', borderRadius: 10, paddingLeft: 20, marginTop: 10, paddingRight: 20, backgroundColor: 'white' }}> { console.log("Value", value); setCareCondition(value); setFieldTouched('care_condition'); setFieldValue('care_condition', value); }} valueExtractor={(value) => { return value.value }} labelExtractor={(value) => { return value.label }} /> {I18n.t('ACCIDENT')} { console.log(value); setIsAccident(value === 'YES'); }}/> { isAccident && ( { Keyboard.dismiss(); //setDateAccident('' + moment(new Date()).format('YYYY-MM-DD')); setShowDateAccidentPicker(true); }} success={touched.date_accident && !errors.date_accident} touched={touched.date_accident} error={errors.date_accident} /> ) } {I18n.t('GROSSESSE')} { setIsGrossesse(value === 'YES'); }}/> { isGrossesse && ( <> { Keyboard.dismiss(); //setDateAccident('' + moment(new Date()).format('YYYY-MM-DD')); setShowDateDebutGrossessePicker(true); }} success={touched.date_debut_grossesse && !errors.date_debut_grossesse} touched={touched.date_debut_grossesse} error={errors.date_debut_grossesse} /> { Keyboard.dismiss(); //setDateAccident('' + moment(new Date()).format('YYYY-MM-DD')); setShowDateFinGrossessePicker(true); }} success={touched.date_fin_grossesse && !errors.date_fin_grossesse} touched={touched.date_fin_grossesse} error={errors.date_fin_grossesse} /> ) } { setModalListPrestation(true); }}> {I18n.t('PRESTATION')} { setModalExamen(true); }}> {I18n.t('EXAMEN')} { setModalListMedicament(true); //setModalMedicament(true); setMedicament(null); }}> {I18n.t('MEDICAMENT')} ), }, ]; return ( (dropDownAlertRef = ref)}/> setIsFirstStep(val) } isLastStep={val => setIsLastStep(val) } onNext={() => { onNext(); }} onPrev={() => { if (currentStep === 0) dispatch(fetchGetUserByNameOrNumberReset()); }} currentStep={({ currentStep, isLastStep, isFirstStep, }) => { setCurrentStep(currentStep); setIsFirstStep(isFirstStep); setIsLastStep(isLastStep); }} /> {!isFirstStep ? ( wizard.current.prev() }> ) : ( )} {currentStep === 2 ? ( ) : ( { handleSubmit(e); if (onNext()) wizard.current.next(); }}> {(getUserByNameOrNumber.loading || getUserByIdQRCode.loading || getConsultation.loading) ? : } )} {modalPrestation && renderAddNewPrestation()} {modalListPrestation && renderPresatationList()} {modalModifyPrestation && renderModifyPrestation()} {modalMedicament && renderAddNewMedicament()} {modalModifyMedicament && renderModifyMedicament()} {modalModifyExamen && renderModifyExamen()} {showDatePrestation && renderDatePrestationPicker()} {showDateAccidentPicker && renderDateAccidentPicker()} {showDateDebutGrossessePicker && renderDateDebutGrossessePicker()} {showDateFinGrossessePicker && renderDateFinGrossessePicker()} {modalExamen && renderExamList()} {showQRCodeScanner && renderDialogQRCodeScanner()} {modalListAssure && renderListAssure()} {modalListMedicament && renderListMedicament()} {modalConsultation && renderListConsultation()} {displayModalHistory && renderModalHistoryDetail()} {modalPrice && renderPriceModal()} ); }; const mapStateToProps = createStructuredSelector({ activatePaySubscription: selectActivatePaySubscription, getUserByNameOrNumber: selectGetUserByNameOrNumber, getUserByIdQRCode: selectGetUserByIdQRCode, getProviderClass: selectGetProviderClass, getDrugAppareil: selectGetDrugAppareil, getAmountConsultation: selectGetAmountConsultation, executionPrescription: selectExecutionPrescription, getConsultation: selectGetConsultation, getNetworkAct: selectGetNetworkAct, modifyPrescription: selectModifyPrescription }); export default connect(mapStateToProps, { fetchActivePaySubscription, fetchGetUserByIdQRCode, fetchGetUserByNameOrNumber, fetchGetProviderClass, fetchGetDrugAppareil, fetchGetNetworkActs, fetchCreateConsultation, fetchGetAmountConsultation, fetchGetConsultation, fetchExecutionPrescription, fetchModifyPrescription })( ModifierFeuilleSoinScreen, );