@olaboot/esm-patient-registration-app 9.2.0 → 10.0.2

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.
Files changed (346) hide show
  1. package/dist/1339.js +1 -0
  2. package/dist/1339.js.map +1 -0
  3. package/dist/1480.js +1 -0
  4. package/dist/1480.js.map +1 -0
  5. package/dist/1646.js +1 -0
  6. package/dist/1646.js.map +1 -0
  7. package/dist/1789.js +1 -0
  8. package/dist/1789.js.map +1 -0
  9. package/dist/1869.js +1 -0
  10. package/dist/1869.js.map +1 -0
  11. package/dist/1877.js +1 -0
  12. package/dist/1877.js.map +1 -0
  13. package/dist/2317.js +1 -0
  14. package/dist/2317.js.map +1 -0
  15. package/dist/2416.js +1 -0
  16. package/dist/2416.js.map +1 -0
  17. package/dist/2747.js +1 -0
  18. package/dist/2747.js.map +1 -0
  19. package/dist/282.js +1 -0
  20. package/dist/282.js.map +1 -0
  21. package/dist/2881.js +1 -0
  22. package/dist/2881.js.map +1 -0
  23. package/dist/3378.js +1 -0
  24. package/dist/3378.js.map +1 -0
  25. package/dist/3720.js +1 -0
  26. package/dist/3720.js.map +1 -0
  27. package/dist/3906.js +1 -0
  28. package/dist/3906.js.map +1 -0
  29. package/dist/3963.js +1 -0
  30. package/dist/3963.js.map +1 -0
  31. package/dist/3989.js +1 -0
  32. package/dist/3989.js.map +1 -0
  33. package/dist/4106.js +1 -0
  34. package/dist/4106.js.map +1 -0
  35. package/dist/4111.js +1 -0
  36. package/dist/4111.js.map +1 -0
  37. package/dist/434.js +1 -0
  38. package/dist/434.js.map +1 -0
  39. package/dist/4348.js +1 -0
  40. package/dist/4348.js.map +1 -0
  41. package/dist/4383.js +1 -0
  42. package/dist/4383.js.map +1 -0
  43. package/dist/4658.js +1 -0
  44. package/dist/4658.js.map +1 -0
  45. package/dist/466.js +1 -0
  46. package/dist/466.js.map +1 -0
  47. package/dist/4928.js +1 -0
  48. package/dist/4928.js.map +1 -0
  49. package/dist/5117.js +1 -0
  50. package/dist/5117.js.map +1 -0
  51. package/dist/5132.js +1 -0
  52. package/dist/5132.js.map +1 -0
  53. package/dist/5145.js +1 -0
  54. package/dist/5145.js.map +1 -0
  55. package/dist/5208.js +43 -0
  56. package/dist/5208.js.map +1 -0
  57. package/dist/527.js +1 -0
  58. package/dist/527.js.map +1 -0
  59. package/dist/5280.js +1 -0
  60. package/dist/5280.js.map +1 -0
  61. package/dist/5338.js +6 -0
  62. package/dist/5338.js.map +1 -0
  63. package/dist/5503.js +1 -0
  64. package/dist/5503.js.map +1 -0
  65. package/dist/555.js +1 -0
  66. package/dist/555.js.map +1 -0
  67. package/dist/556.js +1 -0
  68. package/dist/556.js.map +1 -0
  69. package/dist/5644.js +1 -0
  70. package/dist/5644.js.map +1 -0
  71. package/dist/5697.js +1 -0
  72. package/dist/{4024.js.map → 5697.js.map} +1 -1
  73. package/dist/5940.js +1 -0
  74. package/dist/5940.js.map +1 -0
  75. package/dist/6047.js +1 -0
  76. package/dist/6047.js.map +1 -0
  77. package/dist/6371.js +1 -0
  78. package/dist/6371.js.map +1 -0
  79. package/dist/6377.js +1 -0
  80. package/dist/6377.js.map +1 -0
  81. package/dist/6388.js +1 -0
  82. package/dist/6388.js.map +1 -0
  83. package/dist/6444.js +1 -0
  84. package/dist/6444.js.map +1 -0
  85. package/dist/6508.js +1 -0
  86. package/dist/6508.js.map +1 -0
  87. package/dist/6724.js +1 -0
  88. package/dist/6724.js.map +1 -0
  89. package/dist/689.js +1 -0
  90. package/dist/689.js.map +1 -0
  91. package/dist/6904.js +1 -0
  92. package/dist/6904.js.map +1 -0
  93. package/dist/7045.js +1 -0
  94. package/dist/7045.js.map +1 -0
  95. package/dist/7175.js +1 -0
  96. package/dist/7175.js.map +1 -0
  97. package/dist/7182.js +1 -0
  98. package/dist/7182.js.map +1 -0
  99. package/dist/7649.js +1 -0
  100. package/dist/7649.js.map +1 -0
  101. package/dist/7742.js +1 -0
  102. package/dist/7742.js.map +1 -0
  103. package/dist/7912.js +1 -0
  104. package/dist/7912.js.map +1 -0
  105. package/dist/8358.js +1 -0
  106. package/dist/8358.js.map +1 -0
  107. package/dist/8359.js +1 -0
  108. package/dist/8359.js.map +1 -0
  109. package/dist/8695.js +1 -0
  110. package/dist/8695.js.map +1 -0
  111. package/dist/903.js +1 -0
  112. package/dist/903.js.map +1 -0
  113. package/dist/9061.js +1 -0
  114. package/dist/9061.js.map +1 -0
  115. package/dist/9072.js +1 -0
  116. package/dist/9072.js.map +1 -0
  117. package/dist/9397.js +1 -0
  118. package/dist/9397.js.map +1 -0
  119. package/dist/9712.js +1 -0
  120. package/dist/9712.js.map +1 -0
  121. package/dist/9771.js +1 -0
  122. package/dist/9771.js.map +1 -0
  123. package/dist/9806.js +1 -0
  124. package/dist/9806.js.map +1 -0
  125. package/dist/9816.js +1 -0
  126. package/dist/9816.js.map +1 -0
  127. package/dist/main.js +7 -6
  128. package/dist/main.js.map +1 -1
  129. package/dist/openmrs-esm-patient-registration-app.js +6 -0
  130. package/dist/{olaboot-esm-patient-registration-app.js.buildmanifest.json → openmrs-esm-patient-registration-app.js.buildmanifest.json} +540 -455
  131. package/dist/openmrs-esm-patient-registration-app.js.map +1 -0
  132. package/dist/routes.json +1 -1
  133. package/package.json +8 -9
  134. package/src/add-patient-link.extension.tsx +3 -2
  135. package/src/add-patient-link.test.tsx +2 -1
  136. package/src/config-schema.ts +1 -1
  137. package/src/index.ts +2 -24
  138. package/src/nav-link.test.tsx +1 -0
  139. package/src/offline.resources.ts +97 -31
  140. package/src/patient-registration/before-save-prompt.test.tsx +199 -0
  141. package/src/patient-registration/field/__mocks__/field.resource.ts +8 -7
  142. package/src/patient-registration/field/address/address-field.component.tsx +10 -13
  143. package/src/patient-registration/field/address/address-hierarchy-levels.component.tsx +6 -1
  144. package/src/patient-registration/field/address/address-hierarchy.test.tsx +191 -198
  145. package/src/patient-registration/field/address/address-search.component.tsx +20 -8
  146. package/src/patient-registration/field/address/address-search.scss +19 -2
  147. package/src/patient-registration/field/address/address-search.test.tsx +249 -57
  148. package/src/patient-registration/field/address/custom-address-field.component.tsx +1 -1
  149. package/src/patient-registration/field/cause-of-death/cause-of-death.component.tsx +1 -1
  150. package/src/patient-registration/field/cause-of-death/cause-of-death.test.tsx +251 -0
  151. package/src/patient-registration/field/custom-field.component.tsx +1 -1
  152. package/src/patient-registration/field/date-and-time-of-death/date-and-time-of-death.component.tsx +1 -1
  153. package/src/patient-registration/field/date-and-time-of-death/date-and-time-of-death.test.tsx +144 -0
  154. package/src/patient-registration/field/dob/dob.component.tsx +2 -2
  155. package/src/patient-registration/field/dob/dob.test.tsx +370 -54
  156. package/src/patient-registration/field/field.component.tsx +1 -1
  157. package/src/patient-registration/field/field.resource.ts +2 -2
  158. package/src/patient-registration/field/field.test.tsx +25 -22
  159. package/src/patient-registration/field/gender/gender-field.test.tsx +240 -54
  160. package/src/patient-registration/field/id/id-field.component.tsx +15 -5
  161. package/src/patient-registration/field/id/id-field.test.tsx +103 -47
  162. package/src/patient-registration/field/id/identifier-selection-overlay.test.tsx +346 -0
  163. package/src/patient-registration/field/name/name-field.component.tsx +2 -2
  164. package/src/patient-registration/field/name/name-field.test.tsx +282 -0
  165. package/src/patient-registration/field/obs/obs-field.test.tsx +294 -118
  166. package/src/patient-registration/field/person-attributes/coded-person-attribute-field.test.tsx +172 -108
  167. package/src/patient-registration/field/person-attributes/location-person-attribute-field.component.tsx +3 -3
  168. package/src/patient-registration/field/person-attributes/location-person-attribute-field.resource.tsx +2 -5
  169. package/src/patient-registration/field/person-attributes/person-attribute-field.component.tsx +2 -2
  170. package/src/patient-registration/field/person-attributes/person-attribute-field.test.tsx +249 -131
  171. package/src/patient-registration/field/person-attributes/person-attributes.resource.ts +1 -1
  172. package/src/patient-registration/field/person-attributes/text-person-attribute-field.test.tsx +98 -70
  173. package/src/patient-registration/field/phone/phone-field.test.tsx +100 -0
  174. package/src/patient-registration/form-manager.test.ts +6 -5
  175. package/src/patient-registration/form-manager.ts +5 -2
  176. package/src/patient-registration/input/basic-input/input/input.component.tsx +3 -121
  177. package/src/patient-registration/input/basic-input/input/input.test.tsx +151 -51
  178. package/src/patient-registration/input/basic-input/select/select-input.test.tsx +113 -33
  179. package/src/patient-registration/input/combo-input/combo-input.component.tsx +60 -24
  180. package/src/patient-registration/input/custom-input/autosuggest/autosuggest.component.tsx +10 -101
  181. package/src/patient-registration/input/custom-input/autosuggest/autosuggest.test.tsx +144 -108
  182. package/src/patient-registration/input/custom-input/identifier/identifier-input.test.tsx +241 -177
  183. package/src/patient-registration/input/custom-input/identifier/utils.test.ts +47 -8
  184. package/src/patient-registration/input/dummy-data/dummy-data-input.component.tsx +12 -12
  185. package/src/patient-registration/input/dummy-data/dummy-data-input.test.tsx +52 -20
  186. package/src/patient-registration/input/input.scss +1 -2
  187. package/src/patient-registration/patient-registration-context.ts +5 -3
  188. package/src/patient-registration/patient-registration-hooks.ts +4 -12
  189. package/src/patient-registration/patient-registration-utils.test.ts +2 -1
  190. package/src/patient-registration/patient-registration-utils.ts +2 -98
  191. package/src/patient-registration/patient-registration.component.tsx +50 -46
  192. package/src/patient-registration/patient-registration.resource.test.tsx +4 -7
  193. package/src/patient-registration/patient-registration.resource.ts +1 -4
  194. package/src/patient-registration/patient-registration.scss +16 -3
  195. package/src/patient-registration/patient-registration.test.tsx +99 -65
  196. package/src/patient-registration/patient-registration.types.ts +17 -28
  197. package/src/patient-registration/section/death-info/death-info-section.test.tsx +130 -34
  198. package/src/patient-registration/section/demographics/demographics-section.test.tsx +122 -68
  199. package/src/patient-registration/section/patient-relationships/relationships-section.component.tsx +15 -15
  200. package/src/patient-registration/section/patient-relationships/relationships-section.test.tsx +278 -84
  201. package/src/patient-registration/section/section-wrapper.component.tsx +1 -1
  202. package/src/patient-registration/ui-components/overlay/overlay.test.tsx +104 -0
  203. package/src/patient-registration/validation/patient-registration-validation.test.ts +2 -1
  204. package/src/patient-registration/validation/patient-registration-validation.ts +9 -3
  205. package/src/root.component.tsx +2 -5
  206. package/src/widgets/cancel-patient-edit.test.tsx +48 -11
  207. package/src/widgets/delete-identifier-confirmation.test.tsx +77 -24
  208. package/src/widgets/edit-patient-details-button.component.tsx +14 -18
  209. package/src/widgets/edit-patient-details-button.scss +2 -2
  210. package/src/widgets/edit-patient-details-button.test.tsx +11 -13
  211. package/translations/am.json +9 -4
  212. package/translations/ar.json +9 -4
  213. package/translations/ar_SY.json +9 -4
  214. package/translations/bn.json +9 -4
  215. package/translations/cs.json +9 -4
  216. package/translations/de.json +120 -115
  217. package/translations/en.json +9 -4
  218. package/translations/en_US.json +9 -4
  219. package/translations/es.json +9 -4
  220. package/translations/es_MX.json +9 -4
  221. package/translations/fr.json +9 -4
  222. package/translations/he.json +9 -4
  223. package/translations/hi.json +9 -4
  224. package/translations/hi_IN.json +9 -4
  225. package/translations/id.json +9 -4
  226. package/translations/it.json +9 -4
  227. package/translations/ka.json +9 -4
  228. package/translations/km.json +9 -4
  229. package/translations/ku.json +9 -4
  230. package/translations/ky.json +9 -4
  231. package/translations/lg.json +9 -4
  232. package/translations/ne.json +9 -4
  233. package/translations/pl.json +9 -4
  234. package/translations/pt.json +9 -4
  235. package/translations/pt_BR.json +10 -5
  236. package/translations/qu.json +9 -4
  237. package/translations/ro_RO.json +9 -4
  238. package/translations/ru_RU.json +9 -4
  239. package/translations/si.json +9 -4
  240. package/translations/sq.json +9 -4
  241. package/translations/sw.json +9 -4
  242. package/translations/sw_KE.json +9 -4
  243. package/translations/tr.json +9 -4
  244. package/translations/tr_TR.json +9 -4
  245. package/translations/uk.json +9 -4
  246. package/translations/uz.json +9 -4
  247. package/translations/uz@Latn.json +9 -4
  248. package/translations/uz_UZ.json +9 -4
  249. package/translations/vi.json +9 -4
  250. package/translations/zh.json +50 -45
  251. package/translations/zh_CN.json +9 -4
  252. package/translations/zh_TW.json +9 -4
  253. package/vitest.config.ts +4 -0
  254. package/ADDRESS_CONFIGURATION.md +0 -152
  255. package/IDENTIFIER_CONFIGURATION.md +0 -142
  256. package/IMPLEMENTATION_SUMMARY.md +0 -111
  257. package/QUICK_START.md +0 -95
  258. package/address-required-fields-config.json +0 -26
  259. package/dist/126.js +0 -1
  260. package/dist/15.js +0 -1
  261. package/dist/1564.js +0 -1
  262. package/dist/1567.js +0 -1
  263. package/dist/1845.js +0 -1
  264. package/dist/1953.js +0 -1
  265. package/dist/200.js +0 -1
  266. package/dist/200.js.map +0 -1
  267. package/dist/215.js +0 -1
  268. package/dist/2178.js +0 -1
  269. package/dist/250.js +0 -1
  270. package/dist/250.js.map +0 -1
  271. package/dist/2523.js +0 -1
  272. package/dist/2523.js.map +0 -1
  273. package/dist/2566.js +0 -1
  274. package/dist/2586.js +0 -1
  275. package/dist/2586.js.map +0 -1
  276. package/dist/2716.js +0 -1
  277. package/dist/2716.js.map +0 -1
  278. package/dist/2759.js +0 -1
  279. package/dist/2821.js +0 -6
  280. package/dist/2821.js.map +0 -1
  281. package/dist/3089.js +0 -1
  282. package/dist/3089.js.map +0 -1
  283. package/dist/3230.js +0 -1
  284. package/dist/3441.js +0 -1
  285. package/dist/3565.js +0 -1
  286. package/dist/3571.js +0 -1
  287. package/dist/3571.js.map +0 -1
  288. package/dist/3746.js +0 -1
  289. package/dist/3925.js +0 -1
  290. package/dist/3946.js +0 -1
  291. package/dist/4024.js +0 -1
  292. package/dist/4744.js +0 -1
  293. package/dist/4744.js.map +0 -1
  294. package/dist/4809.js +0 -1
  295. package/dist/4894.js +0 -1
  296. package/dist/4970.js +0 -1
  297. package/dist/4970.js.map +0 -1
  298. package/dist/5130.js +0 -1
  299. package/dist/5187.js +0 -1
  300. package/dist/5491.js +0 -1
  301. package/dist/5491.js.map +0 -1
  302. package/dist/5595.js +0 -1
  303. package/dist/5961.js +0 -1
  304. package/dist/6133.js +0 -1
  305. package/dist/634.js +0 -1
  306. package/dist/634.js.map +0 -1
  307. package/dist/6456.js +0 -1
  308. package/dist/6466.js +0 -1
  309. package/dist/6613.js +0 -1
  310. package/dist/6783.js +0 -1
  311. package/dist/7073.js +0 -38
  312. package/dist/7073.js.map +0 -1
  313. package/dist/7154.js +0 -1
  314. package/dist/7154.js.map +0 -1
  315. package/dist/7348.js +0 -1
  316. package/dist/7439.js +0 -1
  317. package/dist/7439.js.map +0 -1
  318. package/dist/7543.js +0 -1
  319. package/dist/7607.js +0 -1
  320. package/dist/772.js +0 -1
  321. package/dist/7984.js +0 -1
  322. package/dist/7984.js.map +0 -1
  323. package/dist/8538.js +0 -1
  324. package/dist/8538.js.map +0 -1
  325. package/dist/8599.js +0 -1
  326. package/dist/8727.js +0 -1
  327. package/dist/8847.js +0 -1
  328. package/dist/9015.js +0 -1
  329. package/dist/906.js +0 -1
  330. package/dist/9065.js +0 -1
  331. package/dist/9182.js +0 -1
  332. package/dist/9339.js +0 -1
  333. package/dist/9453.js +0 -1
  334. package/dist/9833.js +0 -1
  335. package/dist/9833.js.map +0 -1
  336. package/dist/9856.js +0 -1
  337. package/dist/9856.js.map +0 -1
  338. package/dist/9920.js +0 -1
  339. package/dist/9938.js +0 -1
  340. package/dist/9943.js +0 -1
  341. package/dist/9943.js.map +0 -1
  342. package/dist/olaboot-esm-patient-registration-app.js +0 -5
  343. package/dist/olaboot-esm-patient-registration-app.js.map +0 -1
  344. package/example-config.json +0 -14
  345. package/jest.config.js +0 -3
  346. package/src/resource.ts +0 -12
@@ -1,41 +1,41 @@
1
1
  {
2
- "addPatient": "Add patient",
2
+ "addPatient": "添加患者",
3
3
  "addRelationshipButtonText": "添加关系",
4
4
  "addressHeader": "地址",
5
5
  "allFieldsRequiredText": "所有字段都是必填的,除非标记为可选。",
6
6
  "autoGeneratedPlaceholderText": "自动生成",
7
- "birthdayNotInTheFuture": "Birthday cannot be in future",
8
- "birthdayNotOver140YearsAgo": "Birthday cannot be more than 140 years ago",
7
+ "birthdayNotInTheFuture": "出生日期不能是未来",
8
+ "birthdayNotOver140YearsAgo": "出生日期不能超过 140 年前",
9
9
  "birthdayRequired": "生日是必填项",
10
10
  "birthFieldLabelText": "出生",
11
11
  "cancel": "取消",
12
- "causeOfDeathInputLabel": "Cause of death",
12
+ "causeOfDeathInputLabel": "死亡原因",
13
13
  "closeOverlay": "关闭叠加",
14
14
  "codedPersonAttributeAnswerSetEmpty": "编码的人员属性字段'{{codedPersonAttributeFieldId}}'已使用没有任何概念答案的答案概念集UUID'{{answerConceptSetUuid}}'进行定义。",
15
15
  "codedPersonAttributeAnswerSetInvalid": "编码的人员属性字段'{{codedPersonAttributeFieldId}}'已使用无效的答案概念集UUID'{{answerConceptSetUuid}}'进行定义。",
16
16
  "codedPersonAttributeNoAnswerSet": "人员属性字段'{{codedPersonAttributeFieldId}}'的类型为'coded',但未定义答案概念集UUID。'answerConceptSetUuid'键是必需的。",
17
17
  "configure": "配置",
18
18
  "configureIdentifiers": "配置ID标识",
19
- "confirmDiscardChangesBody": "Your unsaved changes will be lost if you proceed to discard the form",
20
- "confirmDiscardChangesTitle": "Are you sure you want to discard these changes?",
21
- "confirmIdentifierDeletionText": "Are you sure you want to remove this identifier?",
19
+ "confirmDiscardChangesBody": "如果继续放弃表单,您未保存的更改将丢失",
20
+ "confirmDiscardChangesTitle": "您确定要放弃这些更改吗?",
21
+ "confirmIdentifierDeletionText": "您确定要删除此标识符吗?",
22
22
  "contactSection": "联系方式",
23
- "createNewPatient": "Create new patient",
24
- "dateOfBirthLabelText": "Date of birth",
25
- "deathCauseRequired": "Cause of death is required",
26
- "deathDateInFuture": "Death date cannot be in future",
27
- "deathDateInputLabel": "Date of death",
28
- "deathDateRequired": "Death date is required",
29
- "deathdayInvalidDate": "Death date and time cannot be before the birthday",
30
- "deathdayIsRequired": "Death date is required when the patient is marked as deceased.",
23
+ "createNewPatient": "创建新患者",
24
+ "dateOfBirthLabelText": "出生日期",
25
+ "deathCauseRequired": "死因是必需的",
26
+ "deathDateInFuture": "死亡日期不能是未来",
27
+ "deathDateInputLabel": "死亡日期",
28
+ "deathDateRequired": "死亡日期是必需的",
29
+ "deathdayBeforeBirthday": "Death date and time cannot be before the birthday",
30
+ "deathdayIsRequired": "当患者被标记为已故,死亡日期是必需的。",
31
31
  "deathdayNotInTheFuture": "",
32
32
  "deathSection": "死亡信息",
33
- "deathTimeFormatInvalid": "Time format is invalid",
34
- "deathTimeFormatRequired": "Time format is required",
35
- "deathTimeInvalid": "Time doesn't match the format 'hh:mm'",
36
- "deathTimeRequired": "Death time is required",
37
- "deleteIdentifierModalHeading": "Remove identifier?",
38
- "deleteIdentifierModalText": " has a value of ",
33
+ "deathTimeFormatInvalid": "时间格式无效",
34
+ "deathTimeFormatRequired": "时间格式是必需的",
35
+ "deathTimeInvalid": "时间不能匹配格式 'hh:mm'",
36
+ "deathTimeRequired": "死亡时间是必需的",
37
+ "deleteIdentifierModalHeading": "移除标识符 ?",
38
+ "deleteIdentifierModalText": " 有一个值",
39
39
  "deleteIdentifierTooltip": "删除",
40
40
  "deleteRelationshipTooltipText": "删除",
41
41
  "demographicsSection": "基本信息",
@@ -44,47 +44,51 @@
44
44
  "dobToggleLabelText": "出生日期已知?",
45
45
  "editIdentifierTooltip": "编辑",
46
46
  "editPatientDetails": "编辑患者详情",
47
- "editPatientDetailsBreadcrumb": "编辑患者详情",
48
- "enterNonCodedCauseOfDeath": "Enter non-coded cause of death",
47
+ "enterNonCodedCauseOfDeath": "输入非编码死因",
49
48
  "error": "错误",
50
- "errorFetchingCodedCausesOfDeath": "Error fetching coded causes of death",
49
+ "errorFetchingAddresses": "错误 fetching address results",
50
+ "errorFetchingCodedCausesOfDeath": "获取编码死因时出错",
51
51
  "errorFetchingOrderedFields": "获取地址层次结构的排序字段时发生错误",
52
+ "errorFetchingResults": "错误 fetching results",
52
53
  "estimatedAgeInMonthsLabelText": "月龄估算",
53
54
  "estimatedAgeInYearsLabelText": "年龄估算",
54
55
  "familyNameLabelText": "姓氏",
55
56
  "familyNameRequired": "姓氏是必填项",
56
57
  "female": "女性",
57
- "fieldsWithErrors": "The following fields have errors: ",
58
+ "fieldsWithErrors": "下面字段存在错误:",
58
59
  "fullNameLabelText": "全名",
59
60
  "genderLabelText": "性别",
60
61
  "genderRequired": "性别是必填项",
61
- "genderUnspecified": "Gender unspecified",
62
+ "genderUnspecified": "性别未指定",
62
63
  "givenNameLabelText": "名字",
63
64
  "givenNameRequired": "名字是必填项",
64
65
  "identifierValueRequired": "ID标识是必填项",
65
- "idFieldLabelText": "Identifiers",
66
+ "idFieldLabelText": "ID",
66
67
  "IDInstructions": "选择您想为该患者添加的ID标识:",
67
- "invalidEmail": "Invalid email",
68
+ "inputDummyData": "输入测试数据",
69
+ "invalidEmail": "无效 email",
68
70
  "invalidInput": "输入无效",
69
- "isDeadInputLabel": "Is dead",
71
+ "isDeadInputLabel": "已故",
70
72
  "jumpTo": "跳转至",
73
+ "loading": "加载中",
71
74
  "male": "男性",
72
75
  "middleNameLabelText": "中间名",
73
- "negativeMonths": "Estimated months cannot be negative",
74
- "negativeYears": "Estimated years cannot be negative",
76
+ "negativeMonths": "预计月份不能为负数",
77
+ "negativeYears": "预计年份不能为负数",
75
78
  "no": "否",
76
- "nonCodedCauseOfDeath": "Non-coded cause of death",
77
- "nonCodedCauseOfDeathRequired": "Cause of death is required",
78
- "nonsensicalYears": "Estimated years cannot be more than 140",
79
+ "noAddressResults": "No matching addresses found",
80
+ "noMatchingResults": "No matching results",
81
+ "nonCodedCauseOfDeath": "非编码死因",
82
+ "nonCodedCauseOfDeathRequiredWhenSelected": "Non-coded cause 共 death is required",
83
+ "nonsensicalYears": "预计年份不能大于 140",
79
84
  "numberInNameDubious": "姓名中含有数字",
80
85
  "obsFieldUnknownDatatype": "obs字段'{{fieldDefinitionId}}'的概念具有未知数据类型'{{datatypeName}}'",
81
86
  "optional": "可选的",
82
87
  "optionalIdentifierLabel": "{{identifierName}} (optional)",
83
88
  "other": "其他",
84
89
  "patientNameKnown": "患者的姓名已知?",
85
- "patientRegistrationBreadcrumb": "患者注册",
86
- "refreshOrContactAdmin": "Try refreshing the page or contact your system administrator",
87
- "registerPatient": "Register patient",
90
+ "refreshOrContactAdmin": "尝试刷新页面或联系您的系统管理员",
91
+ "registerPatient": "登记患者",
88
92
  "registerPatientSuccessSnackbarSubtitle": "现在可以通过姓名或ID号搜索到该患者",
89
93
  "registerPatientSuccessSnackbarTitle": "新患者已创建",
90
94
  "registrationErrorSnackbarTitle": "患者注册失败",
@@ -94,27 +98,28 @@
94
98
  "relationshipRemovedText": "关系已移除",
95
99
  "relationshipsSection": "关系人信息",
96
100
  "relationshipToPatient": "与患者的关系",
97
- "relativeFullNameLabelText": "Full name",
101
+ "relativeFullNameLabelText": "全名",
98
102
  "relativeNamePlaceholder": "名字 姓氏",
99
- "removeIdentifierButton": "Remove identifier",
103
+ "removeIdentifierButton": "移除标识符",
100
104
  "resetIdentifierTooltip": "重置",
101
105
  "restoreRelationshipActionButton": "撤销",
102
106
  "searchAddress": "搜索地址",
103
107
  "searchIdentifierPlaceholder": "搜索ID标识",
104
- "searchLocationPersonAttribute": "Search location",
108
+ "searching": "搜索中...",
109
+ "searchLocationPersonAttribute": "搜索地点",
105
110
  "selectAnOption": "选择一个选项",
106
111
  "sexFieldLabelText": "性别",
107
112
  "source": "来源",
108
113
  "submitting": "提交中",
109
- "timeFormat": "Time Format",
110
- "timeOfDeathInputLabel": "Time of death (hh:mm)",
111
- "unableToFetch": "Unable to fetch person attribute type - {{personattributetype}}",
114
+ "timeFormat": "时间格式",
115
+ "timeOfDeathInputLabel": "死亡时间 (hh:mm)",
116
+ "unableToFetch": "无法获取人员属性类型- {{personattributetype}}",
112
117
  "unknown": "未知",
113
118
  "unknownPatientAttributeType": "患者属性类型具有未知格式{{personAttributeTypeFormat}}",
114
- "updatePatient": "Update patient",
119
+ "updatePatient": "更新患者",
115
120
  "updatePatientErrorSnackbarTitle": "患者详情更新失败",
116
121
  "updatePatientSuccessSnackbarSubtitle": "患者的信息已成功更新",
117
122
  "updatePatientSuccessSnackbarTitle": "患者详情已更新",
118
- "yearsEstimateRequired": "Estimated years required",
123
+ "yearsEstimateRequired": "预期年份是必需的",
119
124
  "yes": "是"
120
125
  }
@@ -26,7 +26,7 @@
26
26
  "deathDateInFuture": "死亡日期不能是未来",
27
27
  "deathDateInputLabel": "死亡日期",
28
28
  "deathDateRequired": "死亡日期是必需的",
29
- "deathdayInvalidDate": "死亡日期和时间不能早于出生日期",
29
+ "deathdayBeforeBirthday": "Death date and time cannot be before the birthday",
30
30
  "deathdayIsRequired": "当患者被标记为已故,死亡日期是必需的。",
31
31
  "deathdayNotInTheFuture": "",
32
32
  "deathSection": "死亡信息",
@@ -44,11 +44,12 @@
44
44
  "dobToggleLabelText": "出生日期已知?",
45
45
  "editIdentifierTooltip": "编辑",
46
46
  "editPatientDetails": "编辑患者详情",
47
- "editPatientDetailsBreadcrumb": "编辑患者详情",
48
47
  "enterNonCodedCauseOfDeath": "输入非编码死因",
49
48
  "error": "错误",
49
+ "errorFetchingAddresses": "错误 fetching address results",
50
50
  "errorFetchingCodedCausesOfDeath": "获取编码死因时出错",
51
51
  "errorFetchingOrderedFields": "获取地址层次结构的排序字段时发生错误",
52
+ "errorFetchingResults": "错误 fetching results",
52
53
  "estimatedAgeInMonthsLabelText": "月龄估算",
53
54
  "estimatedAgeInYearsLabelText": "年龄估算",
54
55
  "familyNameLabelText": "姓氏",
@@ -64,17 +65,21 @@
64
65
  "identifierValueRequired": "ID标识是必填项",
65
66
  "idFieldLabelText": "ID",
66
67
  "IDInstructions": "选择您想为该患者添加的ID标识:",
68
+ "inputDummyData": "输入测试数据",
67
69
  "invalidEmail": "无效 email",
68
70
  "invalidInput": "输入无效",
69
71
  "isDeadInputLabel": "已故",
70
72
  "jumpTo": "跳转至",
73
+ "loading": "加载中",
71
74
  "male": "男性",
72
75
  "middleNameLabelText": "中间名",
73
76
  "negativeMonths": "预计月份不能为负数",
74
77
  "negativeYears": "预计年份不能为负数",
75
78
  "no": "否",
79
+ "noAddressResults": "No matching addresses found",
80
+ "noMatchingResults": "No matching results",
76
81
  "nonCodedCauseOfDeath": "非编码死因",
77
- "nonCodedCauseOfDeathRequired": "死因是必需的",
82
+ "nonCodedCauseOfDeathRequiredWhenSelected": "Non-coded cause 共 death is required",
78
83
  "nonsensicalYears": "预计年份不能大于 140",
79
84
  "numberInNameDubious": "姓名中含有数字",
80
85
  "obsFieldUnknownDatatype": "obs字段'{{fieldDefinitionId}}'的概念具有未知数据类型'{{datatypeName}}'",
@@ -82,7 +87,6 @@
82
87
  "optionalIdentifierLabel": "{{identifierName}} (optional)",
83
88
  "other": "其他",
84
89
  "patientNameKnown": "患者的姓名已知?",
85
- "patientRegistrationBreadcrumb": "患者注册",
86
90
  "refreshOrContactAdmin": "尝试刷新页面或联系您的系统管理员",
87
91
  "registerPatient": "登记患者",
88
92
  "registerPatientSuccessSnackbarSubtitle": "现在可以通过姓名或ID号搜索到该患者",
@@ -101,6 +105,7 @@
101
105
  "restoreRelationshipActionButton": "撤销",
102
106
  "searchAddress": "搜索地址",
103
107
  "searchIdentifierPlaceholder": "搜索ID标识",
108
+ "searching": "搜索中...",
104
109
  "searchLocationPersonAttribute": "搜索地点",
105
110
  "selectAnOption": "选择一个选项",
106
111
  "sexFieldLabelText": "性别",
@@ -26,7 +26,7 @@
26
26
  "deathDateInFuture": "Death date cannot be in future",
27
27
  "deathDateInputLabel": "Date of death",
28
28
  "deathDateRequired": "Death date is required",
29
- "deathdayInvalidDate": "Death date and time cannot be before the birthday",
29
+ "deathdayBeforeBirthday": "Death date and time cannot be before the birthday",
30
30
  "deathdayIsRequired": "Death date is required when the patient is marked as deceased.",
31
31
  "deathdayNotInTheFuture": "",
32
32
  "deathSection": "Death Info",
@@ -44,11 +44,12 @@
44
44
  "dobToggleLabelText": "Date of Birth Known?",
45
45
  "editIdentifierTooltip": "Edit",
46
46
  "editPatientDetails": "Edit patient details",
47
- "editPatientDetailsBreadcrumb": "Edit patient details",
48
47
  "enterNonCodedCauseOfDeath": "Enter non-coded cause of death",
49
48
  "error": "Error",
49
+ "errorFetchingAddresses": "Error fetching address results",
50
50
  "errorFetchingCodedCausesOfDeath": "Error fetching coded causes of death",
51
51
  "errorFetchingOrderedFields": "Error occured fetching ordered fields for address hierarchy",
52
+ "errorFetchingResults": "Error fetching results",
52
53
  "estimatedAgeInMonthsLabelText": "Estimated age in months",
53
54
  "estimatedAgeInYearsLabelText": "Estimated age in years",
54
55
  "familyNameLabelText": "Family Name",
@@ -64,17 +65,21 @@
64
65
  "identifierValueRequired": "Identifier value is required",
65
66
  "idFieldLabelText": "Identifiers",
66
67
  "IDInstructions": "Select the identifiers you'd like to add for this patient:",
68
+ "inputDummyData": "Input Dummy Data",
67
69
  "invalidEmail": "Invalid email",
68
70
  "invalidInput": "Invalid Input",
69
71
  "isDeadInputLabel": "Is dead",
70
72
  "jumpTo": "Jump to",
73
+ "loading": "Loading",
71
74
  "male": "Male",
72
75
  "middleNameLabelText": "Middle Name",
73
76
  "negativeMonths": "Estimated months cannot be negative",
74
77
  "negativeYears": "Estimated years cannot be negative",
75
78
  "no": "No",
79
+ "noAddressResults": "No matching addresses found",
80
+ "noMatchingResults": "No matching results",
76
81
  "nonCodedCauseOfDeath": "Non-coded cause of death",
77
- "nonCodedCauseOfDeathRequired": "Cause of death is required",
82
+ "nonCodedCauseOfDeathRequiredWhenSelected": "Non-coded cause of death is required",
78
83
  "nonsensicalYears": "Estimated years cannot be more than 140",
79
84
  "numberInNameDubious": "Number in name is dubious",
80
85
  "obsFieldUnknownDatatype": "Concept for obs field '{{fieldDefinitionId}}' has unknown datatype '{{datatypeName}}'",
@@ -82,7 +87,6 @@
82
87
  "optionalIdentifierLabel": "{{identifierName}} (optional)",
83
88
  "other": "Other",
84
89
  "patientNameKnown": "Patient's Name is Known?",
85
- "patientRegistrationBreadcrumb": "Patient Registration",
86
90
  "refreshOrContactAdmin": "Try refreshing the page or contact your system administrator",
87
91
  "registerPatient": "Register patient",
88
92
  "registerPatientSuccessSnackbarSubtitle": "The patient can now be found by searching for them using their name or ID number",
@@ -101,6 +105,7 @@
101
105
  "restoreRelationshipActionButton": "Undo",
102
106
  "searchAddress": "Search address",
103
107
  "searchIdentifierPlaceholder": "Search identifier",
108
+ "searching": "Searching...",
104
109
  "searchLocationPersonAttribute": "Search location",
105
110
  "selectAnOption": "Select an option",
106
111
  "sexFieldLabelText": "Sex",
@@ -0,0 +1,4 @@
1
+ import { mergeConfig } from 'vitest/config';
2
+ import sharedConfig from '../../tools/vitest.shared';
3
+
4
+ export default mergeConfig(sharedConfig, {});
@@ -1,152 +0,0 @@
1
- # Address Field Configuration Guide
2
-
3
- This guide explains how to configure which address fields are required in the patient registration form.
4
-
5
- ## Overview
6
-
7
- By default, the required address fields are determined by the backend address template configuration. However, you can override this behavior using the `requiredAddressFields` configuration option.
8
-
9
- ## Configuration Option
10
-
11
- ### `requiredAddressFields`
12
-
13
- An array of address field names that should be marked as required in the registration form. This overrides the backend address template's `requiredElements` configuration.
14
-
15
- **Location in config:** `fieldConfigurations.address.requiredAddressFields`
16
-
17
- ## Common Address Field Names
18
-
19
- The following are common address field names you can use:
20
-
21
- - `country` - Country
22
- - `stateProvince` - State/Province
23
- - `countyDistrict` - County/District
24
- - `cityVillage` - City/Village
25
- - `address1` - Address line 1
26
- - `address2` - Address line 2
27
- - `address3` - Address line 3
28
- - `postalCode` - Postal/ZIP code
29
- - `latitude` - Latitude
30
- - `longitude` - Longitude
31
-
32
- **Note:** The actual field names available depend on your OpenMRS address template configuration.
33
-
34
- ## Example Configuration
35
-
36
- ### Make All Address Fields Required Except Postal Code
37
-
38
- ```json
39
- {
40
- "@openmrs/esm-patient-registration-app": {
41
- "fieldConfigurations": {
42
- "address": {
43
- "requiredAddressFields": [
44
- "country",
45
- "stateProvince",
46
- "countyDistrict",
47
- "address2",
48
- "address1"
49
- ]
50
- }
51
- }
52
- }
53
- }
54
- ```
55
-
56
- In this example:
57
- - ✅ Country - **Required**
58
- - ✅ State - **Required**
59
- - ✅ Local Govt. (countyDistrict) - **Required**
60
- - ✅ Ward (address2) - **Required**
61
- - ✅ Address (address1) - **Required**
62
- - ❌ Postal Code - **Optional** (not in the list)
63
-
64
- ### Make Only Country and State Required
65
-
66
- ```json
67
- {
68
- "@openmrs/esm-patient-registration-app": {
69
- "fieldConfigurations": {
70
- "address": {
71
- "requiredAddressFields": [
72
- "country",
73
- "stateProvince"
74
- ]
75
- }
76
- }
77
- }
78
- }
79
- ```
80
-
81
- ### Make All Fields Optional
82
-
83
- ```json
84
- {
85
- "@openmrs/esm-patient-registration-app": {
86
- "fieldConfigurations": {
87
- "address": {
88
- "requiredAddressFields": []
89
- }
90
- }
91
- }
92
- }
93
- ```
94
-
95
- ## How It Works
96
-
97
- 1. **If `requiredAddressFields` is configured** (non-empty array):
98
- - Only the fields listed in the array will be marked as required
99
- - All other fields will be optional
100
- - This completely overrides the backend address template configuration
101
-
102
- 2. **If `requiredAddressFields` is not configured or is an empty array AND you want to use backend defaults**:
103
- - The system falls back to using the `requiredElements` from the backend address template
104
- - This is the default behavior
105
-
106
- 3. **If `requiredAddressFields` is explicitly set to an empty array `[]`**:
107
- - All address fields will be optional
108
- - This overrides any backend requirements
109
-
110
- ## Complete Configuration Example
111
-
112
- Here's a complete configuration that includes address hierarchy settings and required fields:
113
-
114
- ```json
115
- {
116
- "@openmrs/esm-patient-registration-app": {
117
- "fieldConfigurations": {
118
- "address": {
119
- "useAddressHierarchy": {
120
- "enabled": true,
121
- "useQuickSearch": true,
122
- "searchAddressByLevel": true,
123
- "useAddressHierarchyLabel": {
124
- "country": "Country",
125
- "stateProvince": "State",
126
- "countyDistrict": "Local Govt.",
127
- "address2": "Ward",
128
- "address1": "Address"
129
- }
130
- },
131
- "requiredAddressFields": [
132
- "country",
133
- "stateProvince",
134
- "countyDistrict",
135
- "address2",
136
- "address1"
137
- ]
138
- }
139
- }
140
- }
141
- }
142
- ```
143
-
144
- ## Notes
145
-
146
- - Field names are case-sensitive
147
- - Make sure the field names match exactly with your address template configuration
148
- - Required fields will show without "(optional)" label
149
- - Optional fields will show with "(optional)" label
150
- - Form validation will prevent submission if required fields are empty
151
- - This configuration works with both address hierarchy and non-hierarchy modes
152
-
@@ -1,142 +0,0 @@
1
- # Patient Identifier Configuration Guide
2
-
3
- This guide explains how to configure patient identifiers in the registration form.
4
-
5
- ## Overview
6
-
7
- Patient identifiers can be configured to control:
8
- 1. Which identifiers appear in the registration form
9
- 2. Whether specific identifiers are required or optional
10
-
11
- ## Configuration Options
12
-
13
- ### 1. `defaultPatientIdentifierTypes`
14
-
15
- An array of patient identifier type UUIDs that should be displayed by default in the registration form.
16
-
17
- **Example:**
18
- ```json
19
- {
20
- "@openmrs/esm-patient-registration-app": {
21
- "defaultPatientIdentifierTypes": [
22
- "fd0df06c-fcd4-4625-89b2-6b72ca44b8ed"
23
- ]
24
- }
25
- }
26
- ```
27
-
28
- ### 2. `identifierTypeOverrides`
29
-
30
- Allows you to override the required/optional status of specific identifier types. This is useful when you want to make a backend-required identifier optional in the frontend.
31
-
32
- **Example:**
33
- ```json
34
- {
35
- "@openmrs/esm-patient-registration-app": {
36
- "identifierTypeOverrides": [
37
- {
38
- "identifierTypeUuid": "fd0df06c-fcd4-4625-89b2-6b72ca44b8ed",
39
- "required": false
40
- }
41
- ]
42
- }
43
- }
44
- ```
45
-
46
- ## Complete Example
47
-
48
- To display an identifier with UUID `fd0df06c-fcd4-4625-89b2-6b72ca44b8ed` and make it optional:
49
-
50
- ```json
51
- {
52
- "@openmrs/esm-patient-registration-app": {
53
- "defaultPatientIdentifierTypes": [
54
- "fd0df06c-fcd4-4625-89b2-6b72ca44b8ed"
55
- ],
56
- "identifierTypeOverrides": [
57
- {
58
- "identifierTypeUuid": "fd0df06c-fcd4-4625-89b2-6b72ca44b8ed",
59
- "required": false
60
- }
61
- ]
62
- }
63
- }
64
- ```
65
-
66
- ## How Identifiers Are Determined
67
-
68
- Identifiers appear in the registration form if they meet **ANY** of these criteria:
69
-
70
- 1. **`isPrimary: true`** - Marked as primary identifier type in OpenMRS backend
71
- 2. **`required: true`** - Marked as required in OpenMRS backend
72
- 3. **Listed in `defaultPatientIdentifierTypes`** - Configured in the frontend config
73
-
74
- ## How Required Status Is Determined
75
-
76
- An identifier is marked as required based on the following logic:
77
-
78
- 1. **If there's an override** in `identifierTypeOverrides` for that identifier UUID:
79
- - Use the `required` value from the override
80
- 2. **Otherwise**:
81
- - Required if `isPrimary` OR `required` from the backend
82
-
83
- ## Use Cases
84
-
85
- ### Use Case 1: Make a Backend-Required Identifier Optional
86
-
87
- If an identifier is marked as `required: true` in the OpenMRS backend but you want it to be optional in the frontend:
88
-
89
- ```json
90
- {
91
- "@openmrs/esm-patient-registration-app": {
92
- "identifierTypeOverrides": [
93
- {
94
- "identifierTypeUuid": "your-identifier-uuid-here",
95
- "required": false
96
- }
97
- ]
98
- }
99
- }
100
- ```
101
-
102
- ### Use Case 2: Add an Optional Identifier
103
-
104
- To add an identifier that is not required or primary in the backend:
105
-
106
- ```json
107
- {
108
- "@openmrs/esm-patient-registration-app": {
109
- "defaultPatientIdentifierTypes": [
110
- "your-identifier-uuid-here"
111
- ]
112
- }
113
- }
114
- ```
115
-
116
- ### Use Case 3: Add an Optional Identifier (Even if Backend Says Required)
117
-
118
- Combine both configurations:
119
-
120
- ```json
121
- {
122
- "@openmrs/esm-patient-registration-app": {
123
- "defaultPatientIdentifierTypes": [
124
- "your-identifier-uuid-here"
125
- ],
126
- "identifierTypeOverrides": [
127
- {
128
- "identifierTypeUuid": "your-identifier-uuid-here",
129
- "required": false
130
- }
131
- ]
132
- }
133
- }
134
- ```
135
-
136
- ## Notes
137
-
138
- - The "Configure identifiers" button has been removed from the UI
139
- - Users can still delete non-required identifiers using the trash icon on each identifier field
140
- - Primary identifiers (`isPrimary: true`) cannot be deleted from the form
141
- - All identifier validation rules (format, uniqueness, etc.) still apply
142
-