@openmrs/esm-form-engine-lib 3.0.1-pre.1655 → 3.0.1-pre.1676
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/openmrs-esm-form-engine-lib.js +1 -1
- package/package.json +1 -1
- package/src/adapters/obs-adapter.test.ts +2 -0
- package/src/adapters/program-state-adapter.test.ts +2 -0
- package/src/components/renderer/form/form-renderer.component.tsx +5 -2
- package/src/components/renderer/form/state.ts +6 -1
- package/src/components/repeat/repeat.component.tsx +3 -0
- package/src/hooks/useConcepts.ts +10 -11
- package/src/hooks/useFormStateHelpers.ts +5 -0
- package/src/hooks/useRestApiMaxResults.ts +35 -0
- package/src/processors/encounter/encounter-processor-helper.ts +4 -3
- package/src/provider/form-provider.tsx +2 -0
- package/5281376ec77fd3a6/5281376ec77fd3a6.gz +0 -0
- package/73669f5073ab15df/73669f5073ab15df.gz +0 -0
- package/8203097338284f98/8203097338284f98.gz +0 -0
- package/90a8030fcf05324e/90a8030fcf05324e.gz +0 -0
@@ -1 +1 @@
|
|
1
|
-
var _openmrs_esm_form_engine_lib;(()=>{"use strict";var e,r,t,n,o,i,a,l,s,u,f,p,d,c,h,m,v,g,b,y,w,_={8008:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(277),t.e(260),t.e(72),t.e(465),t.e(299),t.e(
|
1
|
+
var _openmrs_esm_form_engine_lib;(()=>{"use strict";var e,r,t,n,o,i,a,l,s,u,f,p,d,c,h,m,v,g,b,y,w,_={8008:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(277),t.e(260),t.e(72),t.e(465),t.e(299),t.e(891)]).then((()=>()=>t(9891)))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),i=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>i})}},P={};function S(e){var r=P[e];if(void 0!==r)return r.exports;var t=P[e]={id:e,loaded:!1,exports:{}};return _[e].call(t.exports,t,t.exports,S),t.loaded=!0,t.exports}S.m=_,S.c=P,S.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return S.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,S.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);S.r(o);var i={};e=e||[null,r({}),r([]),r(r)];for(var a=2&n&&t;"object"==typeof a&&!~e.indexOf(a);a=r(a))Object.getOwnPropertyNames(a).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,S.d(o,i),o},S.d=(e,r)=>{for(var t in r)S.o(r,t)&&!S.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},S.f={},S.e=e=>Promise.all(Object.keys(S.f).reduce(((r,t)=>(S.f[t](e,r),r)),[])),S.u=e=>e+".js",S.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),S.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="@openmrs/esm-form-engine-lib:",S.l=(e,r,o,i)=>{if(t[e])t[e].push(r);else{var a,l;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var f=s[u];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==n+o){a=f;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,S.nc&&a.setAttribute("nonce",S.nc),a.setAttribute("data-webpack",n+o),a.src=e),t[e]=[r];var p=(r,n)=>{a.onerror=a.onload=null,clearTimeout(d);var o=t[e];if(delete t[e],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((e=>e(n))),r)return r(n)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),l&&document.head.appendChild(a)}},S.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},S.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{S.S={};var e={},r={};S.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];S.o(S.S,t)||(S.S[t]={});var i=S.S[t],a="@openmrs/esm-form-engine-lib",l=(e,r,t,n)=>{var o=i[e]=i[e]||{},l=o[r];(!l||!l.loaded&&(!n!=!l.eager?n:a>l.from))&&(o[r]={get:t,from:a,eager:!!n})},s=[];return"default"===t&&(l("@openmrs/esm-framework","6.0.3-pre.2587",(()=>Promise.all([S.e(151),S.e(72),S.e(766)]).then((()=>()=>S(5151))))),l("@openmrs/esm-patient-common-lib","9.0.1-pre.6367",(()=>Promise.all([S.e(727),S.e(277),S.e(72),S.e(465),S.e(299),S.e(499)]).then((()=>()=>S(7727))))),l("dayjs","1.11.13",(()=>S.e(353).then((()=>()=>S(4353))))),l("i18next","23.16.0",(()=>S.e(635).then((()=>()=>S(2635))))),l("react-i18next","11.18.6",(()=>Promise.all([S.e(979),S.e(72)]).then((()=>()=>S(2979))))),l("react","18.3.1",(()=>S.e(540).then((()=>()=>S(6540))))),l("swr/_internal","2.2.5",(()=>Promise.all([S.e(993),S.e(72)]).then((()=>()=>S(4993))))),l("swr/immutable","2.2.5",(()=>Promise.all([S.e(72),S.e(465),S.e(225)]).then((()=>()=>S(4225))))),l("swr/infinite","2.2.5",(()=>Promise.all([S.e(72),S.e(465),S.e(41)]).then((()=>()=>S(3041)))))),e[t]=s.length?Promise.all(s).then((()=>e[t]=1)):1}}})(),(()=>{var e;S.g.importScripts&&(e=S.g.location+"");var r=S.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),S.p=e})(),o=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},i=(e,r)=>{e=o(e),r=o(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var n=e[t],i=(typeof n)[0];if(t>=r.length)return"u"==i;var a=r[t],l=(typeof a)[0];if(i!=l)return"o"==i&&"n"==l||"s"==l||"u"==i;if("o"!=i&&"u"!=i&&n!=a)return n<a;t++}},a=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(l=e[o]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var i=[];for(o=1;o<e.length;o++){var l=e[o];i.push(0===l?"not("+s()+")":1===l?"("+s()+" || "+s()+")":2===l?i.pop()+" "+i.pop():a(l))}return s();function s(){return i.pop().replace(/^\((.+)\)$/,"$1")}},l=(e,r)=>{if(0 in e){r=o(r);var t=e[0],n=t<0;n&&(t=-t-1);for(var i=0,a=1,s=!0;;a++,i++){var u,f,p=a<e.length?(typeof e[a])[0]:"";if(i>=r.length||"o"==(f=(typeof(u=r[i]))[0]))return!s||("u"==p?a>t&&!n:""==p!=n);if("u"==f){if(!s||"u"!=p)return!1}else if(s)if(p==f)if(a<=t){if(u!=e[a])return!1}else{if(n?u>e[a]:u<e[a])return!1;u!=e[a]&&(s=!1)}else if("s"!=p&&"n"!=p){if(n||a<=t)return!1;s=!1,a--}else{if(a<=t||f<p!=n)return!1;s=!1}else"s"!=p&&"n"!=p&&(s=!1,a--)}}var d=[],c=d.pop.bind(d);for(i=1;i<e.length;i++){var h=e[i];d.push(1==h?c()|c():2==h?c()&c():h?l(h,r):!c())}return!!c()},s=(e,r)=>e&&S.o(e,r),u=e=>(e.loaded=1,e.get()),f=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),p=(e,r,t)=>{var n=t?f(e[r]):e[r];return Object.keys(n).reduce(((e,r)=>!e||!n[e].loaded&&i(e,r)?r:e),0)},d=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(n)+")",c=e=>{throw new Error(e)},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},m=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),v=(e=>function(r,t,n,o,i){var a=S.I(r);return a&&a.then&&!n?a.then(e.bind(e,r,S.S[r],t,!1,o,i)):e(r,S.S[r],t,n,o,i)})(((e,r,t,n,o,i)=>{if(!s(r,t))return m(e,t,i);var a=p(r,t,n);return l(o,a)||h(d(r,t,a,o)),u(r[t][a])})),g={},b={6072:()=>v("default","react",!1,[1,18],(()=>S.e(540).then((()=>()=>S(6540))))),6766:()=>v("default","i18next",!1,[1,23],(()=>S.e(635).then((()=>()=>S(2635))))),8465:()=>v("default","swr/_internal",!1,[1,2],(()=>S.e(993).then((()=>()=>S(4993))))),2731:()=>v("default","@openmrs/esm-patient-common-lib",!1,[1,9],(()=>S.e(727).then((()=>()=>S(7727))))),3941:()=>v("default","react-i18next",!1,[1,11],(()=>S.e(979).then((()=>()=>S(2979))))),9197:()=>v("default","@openmrs/esm-framework",!1,[1,6],(()=>Promise.all([S.e(151),S.e(766)]).then((()=>()=>S(5151))))),4209:()=>v("default","swr/immutable",!1,[1,2],(()=>S.e(606).then((()=>()=>S(4225))))),231:()=>v("default","dayjs",!1,[1,1],(()=>S.e(353).then((()=>()=>S(4353))))),6339:()=>v("default","swr/infinite",!1,[1,2],(()=>S.e(422).then((()=>()=>S(3041)))))},y={72:[6072],299:[2731,3941,9197],465:[8465],499:[4209],766:[6766],891:[231,4209,6339]},w={},S.f.consumes=(e,r)=>{S.o(y,e)&&y[e].forEach((e=>{if(S.o(g,e))return r.push(g[e]);if(!w[e]){var t=r=>{g[e]=0,S.m[e]=t=>{delete S.c[e],t.exports=r()}};w[e]=!0;var n=r=>{delete g[e],S.m[e]=t=>{throw delete S.c[e],r}};try{var o=b[e]();o.then?r.push(g[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}}))},(()=>{var e={719:0};S.f.j=(r,t)=>{var n=S.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(299|465|72|766)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var i=S.p+S.u(r),a=new Error;S.l(i,(t=>{if(S.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;a.message="Loading chunk "+r+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[i,a,l]=t,s=0;if(i.some((r=>0!==e[r]))){for(n in a)S.o(a,n)&&(S.m[n]=a[n]);l&&l(S)}for(r&&r(t);s<i.length;s++)o=i[s],S.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_openmrs_esm_form_engine_lib=globalThis.webpackChunk_openmrs_esm_form_engine_lib||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),S.nc=void 0;var j=S(8008);_openmrs_esm_form_engine_lib=j})();
|
package/package.json
CHANGED
@@ -28,6 +28,7 @@ const formContext = {
|
|
28
28
|
formFieldAdapters: null,
|
29
29
|
formFieldValidators: null,
|
30
30
|
customDependencies: null,
|
31
|
+
deletedFields: [],
|
31
32
|
getFormField: jest.fn(),
|
32
33
|
addFormField: jest.fn(),
|
33
34
|
updateFormField: jest.fn(),
|
@@ -36,6 +37,7 @@ const formContext = {
|
|
36
37
|
removeInvalidField: jest.fn(),
|
37
38
|
setInvalidFields: jest.fn(),
|
38
39
|
setForm: jest.fn(),
|
40
|
+
setDeletedFields: jest.fn(),
|
39
41
|
} as FormContextProps;
|
40
42
|
|
41
43
|
describe('ObsAdapter - transformFieldValue', () => {
|
@@ -30,6 +30,7 @@ const formContext = {
|
|
30
30
|
customDependencies: {
|
31
31
|
patientPrograms: [],
|
32
32
|
},
|
33
|
+
deletedFields: [],
|
33
34
|
getFormField: jest.fn(),
|
34
35
|
addFormField: jest.fn(),
|
35
36
|
updateFormField: jest.fn(),
|
@@ -38,6 +39,7 @@ const formContext = {
|
|
38
39
|
removeInvalidField: jest.fn(),
|
39
40
|
setInvalidFields: jest.fn(),
|
40
41
|
setForm: jest.fn(),
|
42
|
+
setDeletedFields: jest.fn(),
|
41
43
|
} as FormContextProps;
|
42
44
|
|
43
45
|
const field = {
|
@@ -37,7 +37,7 @@ export const FormRenderer = ({
|
|
37
37
|
formState: { isDirty },
|
38
38
|
} = methods;
|
39
39
|
|
40
|
-
const [{ formFields, invalidFields, formJson }, dispatch] = useReducer(formStateReducer, {
|
40
|
+
const [{ formFields, invalidFields, formJson, deletedFields }, dispatch] = useReducer(formStateReducer, {
|
41
41
|
...initialState,
|
42
42
|
formFields: evaluatedFields,
|
43
43
|
formJson: evaluatedFormJson,
|
@@ -52,6 +52,7 @@ export const FormRenderer = ({
|
|
52
52
|
addInvalidField,
|
53
53
|
removeInvalidField,
|
54
54
|
setForm,
|
55
|
+
setDeletedFields,
|
55
56
|
} = useFormStateHelpers(dispatch, formFields);
|
56
57
|
|
57
58
|
useEffect(() => {
|
@@ -75,6 +76,7 @@ export const FormRenderer = ({
|
|
75
76
|
formFields,
|
76
77
|
formJson,
|
77
78
|
invalidFields,
|
79
|
+
deletedFields,
|
78
80
|
addFormField,
|
79
81
|
updateFormField,
|
80
82
|
getFormField,
|
@@ -83,8 +85,9 @@ export const FormRenderer = ({
|
|
83
85
|
addInvalidField,
|
84
86
|
removeInvalidField,
|
85
87
|
setForm,
|
88
|
+
setDeletedFields,
|
86
89
|
};
|
87
|
-
}, [processorContext, workspaceLayout, methods, formFields, formJson, invalidFields]);
|
90
|
+
}, [processorContext, workspaceLayout, methods, formFields, formJson, invalidFields, deletedFields]);
|
88
91
|
|
89
92
|
useEffect(() => {
|
90
93
|
registerForm(formJson.name, isSubForm, context);
|
@@ -4,6 +4,7 @@ type FormState = {
|
|
4
4
|
formFields: FormField[];
|
5
5
|
invalidFields: FormField[];
|
6
6
|
formJson: FormSchema;
|
7
|
+
deletedFields: FormField[];
|
7
8
|
};
|
8
9
|
|
9
10
|
type Action =
|
@@ -15,12 +16,14 @@ type Action =
|
|
15
16
|
| { type: 'ADD_INVALID_FIELD'; value: FormField }
|
16
17
|
| { type: 'REMOVE_INVALID_FIELD'; value: string }
|
17
18
|
| { type: 'CLEAR_INVALID_FIELDS' }
|
18
|
-
| { type: 'SET_FORM_JSON'; value: any }
|
19
|
+
| { type: 'SET_FORM_JSON'; value: any }
|
20
|
+
| { type: 'SET_DELETED_FIELDS'; value: FormField[] };
|
19
21
|
|
20
22
|
const initialState: FormState = {
|
21
23
|
formFields: [],
|
22
24
|
invalidFields: [],
|
23
25
|
formJson: null,
|
26
|
+
deletedFields: [],
|
24
27
|
};
|
25
28
|
|
26
29
|
const formStateReducer = (state: FormState, action: Action): FormState => {
|
@@ -46,6 +49,8 @@ const formStateReducer = (state: FormState, action: Action): FormState => {
|
|
46
49
|
return { ...state, invalidFields: [] };
|
47
50
|
case 'SET_FORM_JSON':
|
48
51
|
return { ...state, formJson: action.value };
|
52
|
+
case 'SET_DELETED_FIELDS':
|
53
|
+
return { ...state, deletedFields: action.value };
|
49
54
|
default:
|
50
55
|
return state;
|
51
56
|
}
|
@@ -32,6 +32,8 @@ const Repeat: React.FC<FormFieldInputProps> = ({ field }) => {
|
|
32
32
|
methods: { getValues, setValue },
|
33
33
|
addFormField,
|
34
34
|
removeFormField,
|
35
|
+
deletedFields,
|
36
|
+
setDeletedFields,
|
35
37
|
} = context;
|
36
38
|
|
37
39
|
useEffect(() => {
|
@@ -113,6 +115,7 @@ const Repeat: React.FC<FormFieldInputProps> = ({ field }) => {
|
|
113
115
|
clearSubmission(field);
|
114
116
|
}
|
115
117
|
setRows(rows.filter((q) => q.id !== field.id));
|
118
|
+
setDeletedFields([...deletedFields, field]);
|
116
119
|
removeFormField(field.id);
|
117
120
|
};
|
118
121
|
|
package/src/hooks/useConcepts.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import { useMemo } from 'react';
|
2
2
|
import useSWRInfinite from 'swr/infinite';
|
3
|
-
import { type FetchResponse, type OpenmrsResource,
|
3
|
+
import { type FetchResponse, openmrsFetch, type OpenmrsResource, restBaseUrl } from '@openmrs/esm-framework';
|
4
|
+
import { useRestApiMaxResults } from './useRestApiMaxResults';
|
4
5
|
|
5
6
|
type ConceptFetchResponse = FetchResponse<{ results: Array<OpenmrsResource> }>;
|
6
7
|
|
@@ -12,23 +13,21 @@ export function useConcepts(references: Set<string>): {
|
|
12
13
|
isLoading: boolean;
|
13
14
|
error: Error | undefined;
|
14
15
|
} {
|
15
|
-
const
|
16
|
+
const { maxResults } = useRestApiMaxResults();
|
16
17
|
const totalCount = references.size;
|
17
|
-
const totalPages = Math.ceil(totalCount /
|
18
|
+
const totalPages = Math.ceil(totalCount / maxResults);
|
18
19
|
|
19
|
-
const getUrl = (index, prevPageData: ConceptFetchResponse) => {
|
20
|
+
const getUrl = (index: number, prevPageData: ConceptFetchResponse) => {
|
20
21
|
if (index >= totalPages) {
|
21
22
|
return null;
|
22
23
|
}
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
}
|
27
|
-
|
28
|
-
const start = index * chunkSize;
|
29
|
-
const end = start + chunkSize;
|
25
|
+
const start = index * maxResults;
|
26
|
+
const end = start + maxResults;
|
30
27
|
const referenceChunk = Array.from(references).slice(start, end);
|
31
|
-
return `${restBaseUrl}/concept?references=${referenceChunk.join(
|
28
|
+
return `${restBaseUrl}/concept?references=${referenceChunk.join(
|
29
|
+
',',
|
30
|
+
)}&v=${conceptRepresentation}&limit=${maxResults}`;
|
32
31
|
};
|
33
32
|
|
34
33
|
const { data, error, isLoading } = useSWRInfinite<ConceptFetchResponse, Error>(getUrl, openmrsFetch, {
|
@@ -54,6 +54,10 @@ export function useFormStateHelpers(dispatch: Dispatch<Action>, formFields: Form
|
|
54
54
|
dispatch({ type: 'SET_FORM_JSON', value: updateFormSectionReferences(formJson) });
|
55
55
|
}, []);
|
56
56
|
|
57
|
+
const setDeletedFields = useCallback((fields: FormField[]) => {
|
58
|
+
dispatch({ type: 'SET_DELETED_FIELDS', value: fields });
|
59
|
+
}, []);
|
60
|
+
|
57
61
|
return {
|
58
62
|
addFormField,
|
59
63
|
updateFormField,
|
@@ -63,5 +67,6 @@ export function useFormStateHelpers(dispatch: Dispatch<Action>, formFields: Form
|
|
63
67
|
addInvalidField,
|
64
68
|
removeInvalidField,
|
65
69
|
setForm,
|
70
|
+
setDeletedFields,
|
66
71
|
};
|
67
72
|
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { useMemo } from 'react';
|
2
|
+
import useSWR from 'swr';
|
3
|
+
import { type FetchResponse, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework';
|
4
|
+
|
5
|
+
type GlobalPropertyResponse = FetchResponse<{
|
6
|
+
results: Array<{ property: string; value: string }>;
|
7
|
+
}>;
|
8
|
+
|
9
|
+
const DEFAULT_CHUNK_SIZE = 100;
|
10
|
+
|
11
|
+
export function useRestApiMaxResults() {
|
12
|
+
const { data, error, isLoading } = useSWR<GlobalPropertyResponse, Error>(
|
13
|
+
`${restBaseUrl}/systemsetting?q=webservices.rest.maxResultsAbsolute&v=custom:(property,value)`,
|
14
|
+
openmrsFetch,
|
15
|
+
);
|
16
|
+
|
17
|
+
const maxResults = useMemo(() => {
|
18
|
+
try {
|
19
|
+
const maxResultsValue = data?.data.results.find(
|
20
|
+
(prop) => prop.property === 'webservices.rest.maxResultsAbsolute',
|
21
|
+
)?.value;
|
22
|
+
|
23
|
+
const parsedValue = parseInt(maxResultsValue ?? '');
|
24
|
+
return !isNaN(parsedValue) && parsedValue > 0 ? parsedValue : DEFAULT_CHUNK_SIZE;
|
25
|
+
} catch {
|
26
|
+
return DEFAULT_CHUNK_SIZE;
|
27
|
+
}
|
28
|
+
}, [data]);
|
29
|
+
|
30
|
+
return {
|
31
|
+
maxResults,
|
32
|
+
error,
|
33
|
+
isLoading,
|
34
|
+
};
|
35
|
+
}
|
@@ -25,10 +25,11 @@ export function prepareEncounter(
|
|
25
25
|
encounterProvider: string,
|
26
26
|
location: string,
|
27
27
|
) {
|
28
|
-
const { patient, formJson, domainObjectValue: encounter, formFields, visit } = context;
|
28
|
+
const { patient, formJson, domainObjectValue: encounter, formFields, visit, deletedFields } = context;
|
29
|
+
const allFormFields = [...formFields, ...deletedFields];
|
29
30
|
const obsForSubmission = [];
|
30
|
-
prepareObs(obsForSubmission,
|
31
|
-
const ordersForSubmission = prepareOrders(
|
31
|
+
prepareObs(obsForSubmission, allFormFields);
|
32
|
+
const ordersForSubmission = prepareOrders(allFormFields);
|
32
33
|
let encounterForSubmission: OpenmrsEncounter = {};
|
33
34
|
|
34
35
|
if (encounter) {
|
@@ -7,6 +7,7 @@ export interface FormContextProps extends FormProcessorContextProps {
|
|
7
7
|
methods: UseFormReturn<any>;
|
8
8
|
workspaceLayout: 'minimized' | 'maximized';
|
9
9
|
isSubmitting?: boolean;
|
10
|
+
deletedFields: FormField[];
|
10
11
|
getFormField?: (field: string) => FormField;
|
11
12
|
addFormField?: (field: FormField) => void;
|
12
13
|
updateFormField?: (field: FormField) => void;
|
@@ -15,6 +16,7 @@ export interface FormContextProps extends FormProcessorContextProps {
|
|
15
16
|
removeInvalidField?: (fieldId: string) => void;
|
16
17
|
setInvalidFields?: (fields: FormField[]) => void;
|
17
18
|
setForm?: (formJson: FormSchema) => void;
|
19
|
+
setDeletedFields?: (fields: FormField[]) => void;
|
18
20
|
}
|
19
21
|
|
20
22
|
export interface FormProviderProps extends FormContextProps {
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|