Liste des exclusions

This commit is contained in:
Brice Zele 2022-04-18 19:03:09 +01:00
parent 50f248c3f4
commit dbe5e91178
11 changed files with 303 additions and 12 deletions

View File

@ -12,6 +12,7 @@ import {
checkInsuranceCoverageAmountUrl,
consultationUrl,
createConsultationUrl,
exclusionUrl,
executionPrescriptionUrl,
getAmountConsultationUrl,
getDrugAndDevicesUrl,
@ -762,3 +763,32 @@ export const fetchCheckInsuranceCoverageAmount = (data) => {
});
};
/************************************************************/
export const fetchGetExclusionPending = () => ({
type: InsuranceActions.GET_EXCLUSION_PENDING,
});
export const fetchGetExclusionReset = () => ({
type: InsuranceActions.GET_EXCLUSION_RESET,
});
export const fetchGetExclusionSuccess = (authkey: any) => ({
type: InsuranceActions.GET_EXCLUSION_SUCCESS,
payload: authkey,
});
export const fetchGetExclusionError = (error: any) => ({
type: InsuranceActions.GET_EXCLUSION_ERROR,
payload: error,
});
export const fetchGetExclusion = (network_id) => {
return ApiAction({
url: `${exclusionUrl}/${network_id}`,
method: 'GET',
onLoading: fetchGetExclusionPending,
onSuccess: fetchGetExclusionSuccess,
onError: fetchGetExclusionError,
});
};

View File

@ -768,3 +768,34 @@ export const checkInsuranceCoverageAmountReducer = (state = INITIAL_STATE, actio
}
};
export const getExclusionReducer = (state = INITIAL_STATE, action: InsuranceActions) => {
console.log("ACTION", action);
switch (action.type) {
case InsuranceActions.GET_EXCLUSION_PENDING:
return {
...state,
loading: true
}
case InsuranceActions.GET_EXCLUSION_SUCCESS:
return {
loading: false,
result: action.payload.response,
error: null
}
case InsuranceActions.GET_EXCLUSION_ERROR:
return {
...state,
loading: false,
result: null,
error: action.payload
}
case InsuranceActions.GET_EXCLUSION_RESET:
return INITIAL_STATE;
default:
return state
}
};

View File

@ -6,7 +6,6 @@
* Date: 13/09/2021
*/
import {createSelector} from "reselect";
import {checkInsuranceCoverageAmountReducer, deleteBeneficiaryeducer, facturerSoinReducer} from "./insurance.reducer";
const selectInsuranceListReducer = (state) => state.insuranceList;
const selectSubscribeInsuranceReducer = (state) => state.subscribeInsurance;
@ -32,6 +31,7 @@ const selectDemandeAutorisationSoinReducer = (state) => state.demandeAutorisatio
const selectDeleteBeneficiaryeducerReducer = (state) => state.deleteBeneficiaryeducer;
const selectFacturerSoinReducer = (state) => state.facturerSoinReducer;
const selectCheckInsuranceCoverageAmountReducer = (state) => state.checkInsuranceCoverageAmountReducer;
const selectGetExclusionReducer = (state) => state.getExclusionReducer;
export const selectInsuranceList = createSelector(
[selectInsuranceListReducer],
@ -142,3 +142,8 @@ export const selectCheckInsuranceCoverageAmount = createSelector(
[selectCheckInsuranceCoverageAmountReducer],
(checkInsuranceCoverageAmount) => checkInsuranceCoverageAmount
);
export const selectGetExclusion = createSelector(
[selectGetExclusionReducer],
(getExclusion) => getExclusion
);

View File

@ -130,5 +130,10 @@ const InsuranceActions = {
CHECK_HEALTH_CARE_SHEET_SUCCESS: 'CHECK_HEALTH_CARE_SHEET_SUCCESS',
CHECK_HEALTH_CARE_SHEET_ERROR: 'CHECK_HEALTH_CARE_SHEET_ERROR',
CHECK_HEALTH_CARE_SHEET_RESET: 'CHECK_HEALTH_CARE_SHEET_RESET',
GET_EXCLUSION_PENDING: 'GET_EXCLUSION_PENDING',
GET_EXCLUSION_SUCCESS: 'GET_EXCLUSION_SUCCESS',
GET_EXCLUSION_ERROR: 'GET_EXCLUSION_ERROR',
GET_EXCLUSION_RESET: 'GET_EXCLUSION_RESET',
}
export default InsuranceActions;

View File

@ -64,6 +64,7 @@ import {
getAmountConsultationReducer,
getConsultationReducer,
getDrugAppareilReducer,
getExclusionReducer,
getInsurancePrimeAmountReducer,
getNetworkActReducer,
getProviderClassReducer,
@ -192,6 +193,7 @@ const rootReducer = persistCombineReducers(persistConfig, {
checkInsuranceCoverageAmountReducer: checkInsuranceCoverageAmountReducer,
searchUserReducer: SearchUserReducer,
getQRCodeDetailReducer: GetQRCodeDetailReducer,
getExclusionReducer: getExclusionReducer
});
export default rootReducer;

View File

@ -21,8 +21,6 @@ import {IlinkEmitter} from "../../utils/events";
import {connect} from "react-redux";
import {bindActionCreators} from "redux";
import {getBankListAction, getBankListReset} from "../../webservice/BankApi";
import {store} from "../../redux/store";
import {readUser} from "../../webservice/AuthApi";
import {getOperatorListAction, getOperatorListReset} from "../../webservice/WalletApi";
const route = require('../../route.json');
@ -242,7 +240,7 @@ const mapDispatchToProps = dispatch => bindActionCreators({
getBankListAction,
getBankListReset,
getOperatorListAction,
getOperatorListReset
getOperatorListReset,
}, dispatch);
export default connect(mapStateToProps, mapDispatchToProps)(SouscrireAssuranceUser);

View File

@ -41,6 +41,7 @@ import {
fetchGetConsultation,
fetchGetConsultationReset,
fetchGetDrugAppareil,
fetchGetExclusion,
fetchGetNetworkActs,
fetchGetNetworkActsReset,
fetchGetProviderClass,
@ -63,6 +64,7 @@ import {
selectGetAmountConsultation,
selectGetConsultation,
selectGetDrugAppareil,
selectGetExclusion,
selectGetNetworkAct,
selectGetProviderClass,
selectGetUserByIdQRCode,
@ -91,6 +93,7 @@ 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";
import WebView from "react-native-webview";
let moment = require('moment-timezone');
@ -273,6 +276,8 @@ const ModifierFeuilleSoinScreen = ({
fetchCheckInsuranceCoverageAmount,
checkInsuranceCoverageAmount,
getConsultation,
fetchGetExclusion,
getExclusion,
getUserByNameOrNumber,
getUserByIdQRCode,
getProviderClass,
@ -337,6 +342,8 @@ const ModifierFeuilleSoinScreen = ({
const [modalModifyMedicament, setModalModifyMedicament] = useState(false);
const [modalModifyExamen, setModalModifyExamen] = useState(false);
const [modalAddMedicament, setModalAddMedicament] = useState(false);
const [modalVisible, setModalVisible] = useState(false);
const [prestations, setPrestations] = useState([]);
@ -409,7 +416,7 @@ const ModifierFeuilleSoinScreen = ({
dispatch(fetchModifyPrescriptionReset());
dispatch(fetchCheckInsuranceCoverageAmountReset());
fetchGetExclusion(wallet.id_network);
fetchGetProviderClass(wallet.id_network);
fetchGetNetworkActs(wallet.id_network, '');
@ -683,6 +690,49 @@ const ModifierFeuilleSoinScreen = ({
setFieldValue('pregnancy_start_at', moment(currentDate).format('YYYY-MM-DD'));
};
const renderModalExclusion = () => (
<View style={[styles.containModal, {backgroundColor: Color.containerBackgroundColor}]}>
<Modal
isVisible={modalVisible}
onSwipeComplete={() => {
setModalVisible(false);
}}
swipeDirection={['down']}
style={styles.bottomModal}>
<View
style={[
styles.contentFilterBottom,
{backgroundColor: Color.containerBackgroundColor},
]}>
<View style={styles.contentSwipeDown}>
<View style={styles.lineSwipeDown}/>
</View>
<Text body2 style={{marginTop: 10}}>{I18n.t('EXCLUSION')}</Text>
<View style={{
height: Dimensions.get('window').height - 200,
width: Dimensions.get('window').width,
}}>
<WebView
style={{flex: 1}}
originWhitelist={['*']}
source={{html: getExclusion.result.document}}
/>
</View>
<Button
style={{marginTop: 20, marginBottom: 20}}
full
onPress={() => setModalVisible(false)}>
{I18n.t('OK')}
</Button>
</View>
</Modal>
</View>
);
const renderDateDebutGrossessePicker = () => {
return (<DateTimePicker
timeZoneOffsetInMinutes={0}
@ -3174,6 +3224,7 @@ const ModifierFeuilleSoinScreen = ({
</TouchableOpacity>
)}
</View>
{modalVisible && renderModalExclusion()}
{modalPrestation && renderAddNewPrestation()}
{modalListPrestation && renderPresatationList()}
{modalModifyPrestation && renderModifyPrestation()}
@ -3194,6 +3245,25 @@ const ModifierFeuilleSoinScreen = ({
</View>
</ScrollView>
</KeyboardAvoidingView>
{(getExclusion.result !== null) && (<TouchableOpacity
style={{
alignItems: 'center',
flexDirection: 'row',
width: 60,
position: 'absolute',
bottom: 10,
right: 10,
height: 60,
padding: 3,
backgroundColor: Color.primaryColor,
borderRadius: 100,
}}
onPress={() => {
setModalVisible(true)
}}
>
<Text whiteColor caption2>{I18n.t('EXCLUSION')}</Text>
</TouchableOpacity>)}
</ScreenComponent>
);
};
@ -3209,7 +3279,8 @@ const mapStateToProps = createStructuredSelector({
getConsultation: selectGetConsultation,
getNetworkAct: selectGetNetworkAct,
modifyPrescription: selectModifyPrescription,
checkInsuranceCoverageAmount: selectCheckInsuranceCoverageAmount
checkInsuranceCoverageAmount: selectCheckInsuranceCoverageAmount,
getExclusion: selectGetExclusion
});
export default connect(mapStateToProps, {
@ -3224,7 +3295,8 @@ export default connect(mapStateToProps, {
fetchGetConsultation,
fetchExecutionPrescription,
fetchModifyPrescription,
fetchCheckInsuranceCoverageAmount
fetchCheckInsuranceCoverageAmount,
fetchGetExclusion
})(
ModifierFeuilleSoinScreen,
);

View File

@ -41,6 +41,7 @@ import {
fetchGetAmountConsultationReset,
fetchGetDrugAppareil,
fetchGetDrugAppareilReset,
fetchGetExclusion,
fetchGetNetworkActs,
fetchGetNetworkActsReset,
fetchGetProviderClass,
@ -63,6 +64,7 @@ import {
selectCreateConsultation,
selectGetAmountConsultation,
selectGetDrugAppareil,
selectGetExclusion,
selectGetNetworkAct,
selectGetProviderClass,
selectGetUserByIdQRCode,
@ -88,6 +90,7 @@ import * as Utils from "../../../utils/UtilsFunction";
import {store} from "../../../redux/store";
import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons";
import Fontisto from "react-native-vector-icons/Fontisto";
import WebView from "react-native-webview";
let moment = require('moment-timezone');
@ -264,6 +267,8 @@ const SaisirFeuilleSoinScreen = ({
fetchCreateConsultation,
fetchGetAmountConsultation,
fetchCheckInsuranceCoverageAmount,
fetchGetExclusion,
getExclusion,
getUserByNameOrNumber,
getUserByIdQRCode,
getDrugAppareil,
@ -312,6 +317,8 @@ const SaisirFeuilleSoinScreen = ({
const [modalListAssure, setModalListAssure] = useState(false);
const [modalListMedicament, setModalListMedicament] = useState(false);
const [modalVisible, setModalVisible] = useState(false);
const [networkAct, setNetworkAct] = useState(null);
const [prestations, setPrestations] = useState([]);
@ -383,6 +390,7 @@ const SaisirFeuilleSoinScreen = ({
dispatch(fetchAddDrugReset());
dispatch(fetchCheckInsuranceCoverageAmountReset());
fetchGetExclusion(wallet.id_network);
fetchGetProviderClass(wallet.id_network);
}, []);
@ -727,6 +735,48 @@ const SaisirFeuilleSoinScreen = ({
setFieldValue('accident_date', moment(currentDate).format('YYYY-MM-DD'));
};
const renderModalExclusion = () => (
<View style={[styles.containModal, {backgroundColor: Color.containerBackgroundColor}]}>
<Modal
isVisible={modalVisible}
onSwipeComplete={() => {
setModalVisible(false);
}}
swipeDirection={['down']}
style={styles.bottomModal}>
<View
style={[
styles.contentFilterBottom,
{backgroundColor: Color.containerBackgroundColor},
]}>
<View style={styles.contentSwipeDown}>
<View style={styles.lineSwipeDown}/>
</View>
<Text body2 style={{marginTop: 10}}>{I18n.t('EXCLUSION')}</Text>
<View style={{
height: Dimensions.get('window').height - 200,
width: Dimensions.get('window').width,
}}>
<WebView
style={{flex: 1}}
originWhitelist={['*']}
source={{html: getExclusion.result.document}}
/>
</View>
<Button
style={{marginTop: 20, marginBottom: 20}}
full
onPress={() => setModalVisible(false)}>
{I18n.t('OK')}
</Button>
</View>
</Modal>
</View>
);
const renderDateAccidentPicker = () => {
return (<DateTimePicker
timeZoneOffsetInMinutes={0}
@ -2234,6 +2284,7 @@ const SaisirFeuilleSoinScreen = ({
</TouchableOpacity>
)}
</View>
{modalVisible && renderModalExclusion()}
{modalPrestation && renderAddNewPrestation()}
{modalMedicament && renderAddNewMedicament()}
{modalExamen && renderAddNewExamen()}
@ -2248,6 +2299,25 @@ const SaisirFeuilleSoinScreen = ({
</View>
</ScrollView>
</KeyboardAvoidingView>
{(getExclusion.result !== null) && (<TouchableOpacity
style={{
alignItems: 'center',
flexDirection: 'row',
width: 60,
position: 'absolute',
bottom: 10,
right: 10,
height: 60,
padding: 3,
backgroundColor: Color.primaryColor,
borderRadius: 100,
}}
onPress={() => {
setModalVisible(true)
}}
>
<Text whiteColor caption2>{I18n.t('EXCLUSION')}</Text>
</TouchableOpacity>)}
</ScreenComponent>
);
};
@ -2263,7 +2333,8 @@ const mapStateToProps = createStructuredSelector({
createConsultation: selectCreateConsultation,
getNetworkAct: selectGetNetworkAct,
getAmountConsultation: selectGetAmountConsultation,
checkInsuranceCoverageAmount: selectCheckInsuranceCoverageAmount
checkInsuranceCoverageAmount: selectCheckInsuranceCoverageAmount,
getExclusion: selectGetExclusion
});
export default connect(mapStateToProps, {
@ -2277,7 +2348,8 @@ export default connect(mapStateToProps, {
fetchGetNetworkActs,
fetchCreateConsultation,
fetchGetAmountConsultation,
fetchCheckInsuranceCoverageAmount
fetchCheckInsuranceCoverageAmount,
fetchGetExclusion
})(
SaisirFeuilleSoinScreen,
);

View File

@ -36,6 +36,7 @@ import {responsiveWidth} from "react-native-responsive-dimensions";
import SwitchSelector from "react-native-switch-selector";
import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons";
import {
fetchGetExclusion,
fetchGetInsurancePrimeAmount,
fetchGetInsurancePrimeAmountReset,
fetchGetListInsurance,
@ -52,6 +53,7 @@ import DateTimePicker from "@react-native-community/datetimepicker";
import * as Animatable from 'react-native-animatable';
import {createStructuredSelector} from "reselect";
import {
selectGetExclusion,
selectInsuranceList,
selectInsurancePrimeAmount,
selectSubscribeInsurance,
@ -63,6 +65,8 @@ import {Typography} from "../../../config/typography";
import {Dropdown} from "react-native-material-dropdown";
import Icon from "react-native-vector-icons/FontAwesome5";
import isNil from "lodash/isNil";
import {store} from "../../../redux/store";
import WebView from "react-native-webview";
let moment = require('moment-timezone');
@ -213,11 +217,14 @@ const InsuranceSubscriptionScreen = ({
fetchGetListInsurance,
fetchGetInsurancePrimeAmount,
fetchUploadInsurance,
fetchGetExclusion,
getExclusion,
uploadInsuranceImages,
navigation
}) => {
const [modalVisible, setModalVisible] = useState(false);
const [modalVisibleExclusion, setModalVisibleExclusion] = useState(false);
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
const [user, setUser] = useState(null);
const [insurance, setInsurance] = useState(null);
@ -243,6 +250,7 @@ const InsuranceSubscriptionScreen = ({
{label: I18n.t('MASCULIN'), value: "M"},
{label: I18n.t('FEMININ'), value: "F"},
]);
const [wallet] = useState(store.getState().walletDetailReducer.result.response);
const [dateNaissance, setDateNaissance] = useState('' + moment(new Date(((new Date()).getFullYear() - 5), 0, 1)).format('YYYY-MM-DD'));
const [showDateNaissancePicker, setShowDateNaissancePicker] = useState(false);
const [showModalDetail, setShowModalDetail] = useState(false);
@ -266,6 +274,8 @@ const InsuranceSubscriptionScreen = ({
dispatch(fetchUploadInsuranceReset());
dispatch(fetchGetInsurancePrimeAmountReset());
dispatch(fetchSubscribeInsuranceReset());
fetchGetExclusion(wallet.id_network);
}, []);
useEffect(() => {
@ -1009,6 +1019,48 @@ const InsuranceSubscriptionScreen = ({
</Formik>
);
const renderModalExclusion = () => (
<View style={[styles.containModal, {backgroundColor: Color.containerBackgroundColor}]}>
<Modal
isVisible={modalVisibleExclusion}
onSwipeComplete={() => {
setModalVisible(false);
}}
swipeDirection={['down']}
style={styles.bottomModal}>
<View
style={[
styles.contentFilterBottom,
{backgroundColor: Color.containerBackgroundColor},
]}>
<View style={styles.contentSwipeDown}>
<View style={styles.lineSwipeDown}/>
</View>
<Text body2 style={{marginTop: 10}}>{I18n.t('EXCLUSION')}</Text>
<View style={{
height: Dimensions.get('window').height - 200,
width: Dimensions.get('window').width,
}}>
<WebView
style={{flex: 1}}
originWhitelist={['*']}
source={{html: getExclusion.result.document}}
/>
</View>
<Button
style={{marginTop: 20, marginBottom: 20}}
full
onPress={() => setModalVisibleExclusion(false)}>
{I18n.t('OK')}
</Button>
</View>
</Modal>
</View>
);
return (
<ScreenComponent>
<DropdownAlert ref={ref => (dropDownAlertRef = ref)}/>
@ -1290,6 +1342,7 @@ const InsuranceSubscriptionScreen = ({
</ScrollView>
</KeyboardAvoidingView>
{modalVisibleExclusion && renderModalExclusion()}
{modalVisible && renderAddNewIdentification()}
{modalViewBeneficiariesVisible && renderModalViewBeneficiaries()}
{showDateNaissancePicker && renderDateNaissancePicker()}
@ -1311,6 +1364,25 @@ const InsuranceSubscriptionScreen = ({
<Text whiteColor title2>{beneficiaries.length}</Text>
<Text whiteColor caption2>{I18n.t('AYANT_DROIT')}</Text>
</TouchableOpacity>)}
{(getExclusion.result !== null) && (<TouchableOpacity
style={{
alignItems: 'center',
flexDirection: 'row',
width: 60,
position: 'absolute',
bottom: 10,
left: 10,
height: 60,
padding: 3,
backgroundColor: Color.primaryColor,
borderRadius: 100,
}}
onPress={() => {
setModalVisibleExclusion(true)
}}
>
<Text whiteColor caption2>{I18n.t('EXCLUSION')}</Text>
</TouchableOpacity>)}
</ScreenComponent>
);
};
@ -1319,14 +1391,16 @@ const mapStateToProps = createStructuredSelector({
insuranceList: selectInsuranceList,
subscribeInsurance: selectSubscribeInsurance,
uploadInsuranceImages: selectUploadInsuranceImages,
insurancePrimeAmount: selectInsurancePrimeAmount
insurancePrimeAmount: selectInsurancePrimeAmount,
getExclusion: selectGetExclusion
});
export default connect(mapStateToProps, {
fetchGetListInsurance,
fetchSubscribeInsurance,
fetchGetInsurancePrimeAmount,
fetchUploadInsurance
fetchUploadInsurance,
fetchGetExclusion
})(
InsuranceSubscriptionScreen,
);

View File

@ -738,5 +738,6 @@
"BY_QR_CODE": "Par QR Code",
"SCAN": "Scanner",
"BRING_YOUR_CAMERA_CLOSER_TO_SCAN_QR_CODE": "Approchez votre caméra du QR Code afin de le scanner",
"QUANTITY_CANNOT_BE_SUPERIOR": "La quantité ne doit pas être supérieure à"
"QUANTITY_CANNOT_BE_SUPERIOR": "La quantité ne doit pas être supérieure à",
"EXCLUSION": "Exclusion"
}

View File

@ -89,6 +89,7 @@ export const getQRCodeDetail = testBaseUrl + '/walletService/qrcode/read';
export const facturerSoinUrl = testBaseUrl + '/nanoSanteService/generate-invoice';
export const invoiceUrl = testBaseUrl + '/nanoSanteService/invoices';
export const exclusionUrl = testBaseUrl + '/nanoSanteService/exclusions';
export const getInsuranceListUrl = testBaseUrl + '/nanoSanteService/insurances';
export const checkInsuranceCoverageAmountUrl = testBaseUrl + '/nanoSanteService/health-care-sheets/check-insurance-coverage-amount';
export const getUserByIdQRCodeUrl = testBaseUrl + '/walletService/qrcode/read';