Last active
July 10, 2021 06:51
-
-
Save coded-aesthetics/0cf968a73e36ec221ba1fd7365215d56 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const getPatientDataFromGenericSurveyWithNextFreeIpid = (context) => { | |
| return PatientServiceSingleton.instance | |
| .getNextFreeIpid('ext') | |
| .map((ipid) => (Object.assign(Object.assign({}, convertGenericSurveyPatientDataToPatientData(context.genericSurvey.entity.config.patientData)), { ipid: 'ext' + ipid }))) | |
| .promise(); | |
| }; | |
| const performMergeWithExistingPatient = (context) => ClientLibResourcesSingleton.resources.genericSurveyToolbox | |
| .moveToSurveyDbExistingPatient(context.genericSurvey.id, context.selectedPatient.id, context.mergedPatient) | |
| .promise(); | |
| const performMergeWithNewPatient = (context) => ClientLibResourcesSingleton.resources.genericSurveyToolbox | |
| .moveToSurveyDbNewPatient(context.genericSurvey.id, context.editedPatientData) | |
| .promise(); | |
| var MergeAssistantStateNames; | |
| (function (MergeAssistantStateNames) { | |
| MergeAssistantStateNames["NEEDS_INITIAL_CONTEXT"] = "needsInitialContext"; | |
| MergeAssistantStateNames["LOADING_PATIENT_DATA_FROM_GENERIC_SURVEY_WITH_NEXT_FREE_IPID"] = "loadingPatientDataFromGenericSurveyWithNextFreeIpid"; | |
| MergeAssistantStateNames["SELECTING_SUGGESTION"] = "selectingSuggestion"; | |
| MergeAssistantStateNames["MERGE_WITH_EXISTING_PATIENT"] = "mergeWithExistingPatient"; | |
| MergeAssistantStateNames["MANUAL_MERGE"] = "manualMerge"; | |
| MergeAssistantStateNames["MERGE_WITH_NEW_PATIENT"] = "mergeWithNewPatient"; | |
| MergeAssistantStateNames["ENTER_PATIENT_DATA"] = "enterPatientData"; | |
| MergeAssistantStateNames["PERFORMING_MERGE_WITH_NEW_PATIENT"] = "performingMergeWithNewPatient"; | |
| MergeAssistantStateNames["PERFORMING_MERGE_WITH_EXISTING_PATIENT"] = "performingMergeWithExistingPatient"; | |
| MergeAssistantStateNames["PATIENT_DATA_INVALID"] = "patientDataInvalid"; | |
| MergeAssistantStateNames["PATIENT_DATA_VALID"] = "patientDataValid"; | |
| MergeAssistantStateNames["SUCCESS"] = "success"; | |
| MergeAssistantStateNames["FAILURE"] = "failure"; | |
| })(MergeAssistantStateNames || (MergeAssistantStateNames = {})); | |
| Machine({ | |
| id: 'genericSurveyMergeAssistant', | |
| initial: MergeAssistantStateNames.NEEDS_INITIAL_CONTEXT, | |
| context: { | |
| genericSurvey: null, | |
| suggestions: [], | |
| selectedPatient: null, | |
| patientDataFromGenericSurveyWithIpid: null, | |
| mergedPatient: null, | |
| editedPatientData: null, | |
| mergeError: null, | |
| }, | |
| states: { | |
| [MergeAssistantStateNames.NEEDS_INITIAL_CONTEXT]: { | |
| on: { | |
| SET_INITIAL_CONTEXT: { | |
| target: MergeAssistantStateNames.LOADING_PATIENT_DATA_FROM_GENERIC_SURVEY_WITH_NEXT_FREE_IPID, | |
| actions: ['assignInitialContext'], | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.LOADING_PATIENT_DATA_FROM_GENERIC_SURVEY_WITH_NEXT_FREE_IPID]: { | |
| invoke: { | |
| src: getPatientDataFromGenericSurveyWithNextFreeIpid, | |
| onDone: { | |
| target: MergeAssistantStateNames.SELECTING_SUGGESTION, | |
| actions: assign({ patientDataFromGenericSurveyWithIpid: (_, event) => event.data }), | |
| }, | |
| onError: { | |
| target: '#' + MergeAssistantStateNames.FAILURE, | |
| actions: assign({ mergeError: (_, event) => event.data }), | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.SELECTING_SUGGESTION]: { | |
| on: { | |
| CONFIRM_SUGGESTION_MERGE: { | |
| target: MergeAssistantStateNames.MERGE_WITH_EXISTING_PATIENT, | |
| actions: ['assignSuggestedPatientToContext'], | |
| }, | |
| CONFIRM_SUGGESTION_NEW_PATIENT: { | |
| target: MergeAssistantStateNames.MERGE_WITH_NEW_PATIENT, | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.MERGE_WITH_EXISTING_PATIENT]: { | |
| initial: MergeAssistantStateNames.MANUAL_MERGE, | |
| states: { | |
| [MergeAssistantStateNames.MANUAL_MERGE]: { | |
| on: { | |
| CONFIRM_MERGE: { | |
| target: '#' + MergeAssistantStateNames.PERFORMING_MERGE_WITH_EXISTING_PATIENT, | |
| actions: ['assignMergedPatientToContext'], | |
| }, | |
| BACK: { | |
| target: '#genericSurveyMergeAssistant.' + MergeAssistantStateNames.SELECTING_SUGGESTION, | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.PERFORMING_MERGE_WITH_EXISTING_PATIENT]: { | |
| id: MergeAssistantStateNames.PERFORMING_MERGE_WITH_EXISTING_PATIENT, | |
| invoke: { | |
| src: performMergeWithExistingPatient, | |
| onDone: { | |
| target: '#' + MergeAssistantStateNames.SUCCESS, | |
| }, | |
| onError: { | |
| target: '#' + MergeAssistantStateNames.FAILURE, | |
| actions: assign({ mergeError: (_, event) => event.data }), | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.MERGE_WITH_NEW_PATIENT]: { | |
| initial: MergeAssistantStateNames.ENTER_PATIENT_DATA, | |
| states: { | |
| [MergeAssistantStateNames.ENTER_PATIENT_DATA]: { | |
| initial: MergeAssistantStateNames.PATIENT_DATA_INVALID, | |
| states: { | |
| [MergeAssistantStateNames.PATIENT_DATA_INVALID]: { | |
| on: { | |
| PATIENT_DATA_VALID: { | |
| target: MergeAssistantStateNames.PATIENT_DATA_VALID, | |
| }, | |
| BACK: { | |
| target: '#genericSurveyMergeAssistant.' + MergeAssistantStateNames.SELECTING_SUGGESTION, | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.PATIENT_DATA_VALID]: { | |
| on: { | |
| PATIENT_DATA_INVALID: { | |
| target: MergeAssistantStateNames.PATIENT_DATA_INVALID, | |
| }, | |
| CONFIRM_CREATE: { | |
| target: '#' + MergeAssistantStateNames.PERFORMING_MERGE_WITH_NEW_PATIENT, | |
| actions: ['assignEditedPatientDataToContext'], | |
| }, | |
| BACK: { | |
| target: '#genericSurveyMergeAssistant.' + MergeAssistantStateNames.SELECTING_SUGGESTION, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.PERFORMING_MERGE_WITH_NEW_PATIENT]: { | |
| id: MergeAssistantStateNames.PERFORMING_MERGE_WITH_NEW_PATIENT, | |
| invoke: { | |
| src: performMergeWithNewPatient, | |
| onDone: { | |
| target: '#' + MergeAssistantStateNames.SUCCESS, | |
| }, | |
| onError: { | |
| target: '#' + MergeAssistantStateNames.FAILURE, | |
| actions: assign({ mergeError: (_, event) => event.data }), | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| [MergeAssistantStateNames.SUCCESS]: { id: MergeAssistantStateNames.SUCCESS, type: 'final' }, | |
| [MergeAssistantStateNames.FAILURE]: { id: MergeAssistantStateNames.FAILURE, type: 'final' }, | |
| }, | |
| }, { | |
| services: { submitPayment: () => () => { } }, | |
| actions: { | |
| assignInitialContext: assign((context, event) => { | |
| if (event.type !== 'SET_INITIAL_CONTEXT') | |
| return {}; | |
| return { | |
| genericSurvey: event.genericSurvey, | |
| suggestions: event.suggestions, | |
| }; | |
| }), | |
| assignSuggestedPatientToContext: assign((_, event) => { | |
| if (event.type !== 'CONFIRM_SUGGESTION_MERGE') | |
| return {}; | |
| return { | |
| selectedPatient: event.selectedPatient, | |
| }; | |
| }), | |
| assignEditedPatientDataToContext: assign((_, event) => { | |
| if (event.type !== 'CONFIRM_CREATE') | |
| return {}; | |
| return { | |
| editedPatientData: event.editedPatientData, | |
| }; | |
| }), | |
| assignMergedPatientToContext: assign((_, event) => { | |
| if (event.type !== 'CONFIRM_MERGE') | |
| return {}; | |
| return { | |
| mergedPatient: event.mergedPatient, | |
| }; | |
| }), | |
| }, | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment