cm_rm_notes.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. Topics:
  2. client
  3. - CM Eligibility
  4. - CM Enrollment
  5. - RM Eligibility
  6. - RM Enrollment
  7. Note
  8. - CM Setup
  9. CareMonth
  10. - CM Enrollment
  11. - RM Enrollment
  12. - RM setup
  13. =====================================================================================================
  14. Client CM Eligibility
  15. The relevant fields are:
  16. isEligibleForCm = YesNoOrUnknown.UNKNOWN;
  17. whyNotEligibleForCmCategory //null
  18. whyNotEligibleForCmMemo //null
  19. Updating Client CM Eligibility
  20. /api/client/updateCmEligibility
  21. void updateCmEligibility
  22. client.setIsEligibleForCm(...);
  23. client.setWhyNotEligibleForCmCategory(...);
  24. client.setWhyNotEligibleForCmMemo(...);
  25. Client CM Enrollment
  26. The relevant fields are:
  27. isEnrolledInCm = YesNoOrUnknown.UNKNOWN;
  28. cmEnrollmentConsentMethod //null
  29. cmEnrollmentConsentMethodMemo; //null
  30. whyNotEnrolledInCmCategory; //null
  31. whyNotEnrolledInCmMemo; //null
  32. hasCmSetupBeenPerformed = Boolean.FALSE;
  33. Updating Client CM Enrollment
  34. /api/client/setIsEnrolledInCmToTrue
  35. void setIsEnrolledInCmToTrue;
  36. client.setIsEnrolledInCm(..);
  37. client.setCmEnrollmentConsentMethod(..);
  38. client.setCmEnrollmentConsentMethodMemo(..);
  39. /api/client/setIsEnrolledInCmToFalse
  40. void setIsEnrolledInCmToFalse
  41. client.setIsEnrolledInCm(...);
  42. client.setWhyNotEnrolledInCmCategory(...);
  43. client.setWhyNotEnrolledInCmMemo(...);
  44. Updating Client CM Enrollment Consent Info
  45. /api/client/updateCmEnrollmentConsentInfo
  46. void updateCmEnrollmentConsentInfo
  47. client.setCmEnrollmentConsentMethod(...);
  48. client.setCmEnrollmentConsentMethodMemo(...);
  49. Updating client "Why not enrolled in CM"
  50. /api/client/updateWhyNotEnrolledInCm
  51. void updateWhyNotEnrolledInCm
  52. client.setWhyNotEnrolledInCmCategory(...);
  53. client.setWhyNotEnrolledInCmMemo(...);
  54. Client RM Eligibility
  55. The relevant fields are:
  56. isEligibleForRm = YesNoOrUnknown.UNKNOWN;
  57. whyNotEligibleForRmCategory //null
  58. whyNotEligibleForRmMemo //null
  59. Updating client RM Eligiblity
  60. /api/client/updateRmEligibility
  61. void updateRmEligibility
  62. client.setIsEligibleForRm(...)
  63. client.setWhyNotEligibleForRmCategory(...)
  64. client.setWhyNotEligibleForRmMemo(...)
  65. Client RM Enrollment
  66. The relevant fields are:
  67. isEnrolledInRm = YesNoOrUnknown.UNKNOWN;
  68. whyNotEnrolledInRmCategory //null
  69. whyNotEnrolledInRmMemo //null
  70. Updating Client RM Enrollment
  71. /api/client/setIsEnrolledInRmToTrue
  72. void setIsEnrolledInRmToTrue;
  73. client.setIsEnrolledInRm(...);
  74. client.setRmReasons(...);
  75. /api/client/setIsEnrolledInRmToFalse
  76. void setIsEnrolledInRmToFalse
  77. client.setIsEnrolledInRm(...);
  78. client.setWhyNotEnrolledInRmCategory(...);
  79. client.setWhyNotEnrolledInRmMemo(...);
  80. Updating client "Why not enrolled in RM"
  81. /api/client/updateWhyNotEnrolledInRm
  82. void updateWhyNotEnrolledInRm;
  83. client.setWhyNotEnrolledInRmCategory(...);
  84. client.setWhyNotEnrolledInRmMemo(...);
  85. Adding client CM/RM reasons
  86. /api/clientCmRmReason/create
  87. String clientUid
  88. CmOrRm cmOrRm
  89. String code
  90. String description
  91. int positionIndex
  92. NB:
  93. - The value of client.isEligibleForRm/Cm is not considered anywhere(e.g enrollment in cm/rm) in the business logic
  94. - For 'cm setup' to be performed on a note, client must have been 'enrolled in cm'. Currently no similar check on 'rm setup' on care month
  95. - CM Enrollement requires 'consent method' and 'consent memo'
  96. - When a care month is created, the following fields are copied from the client to the care month:
  97. careMonth.isClientEnrolledInCm = client.isEnrolledInCm
  98. careMonth.whyNotEnrolledInCmCategory = client.whyNotEnrolledInCmCategory
  99. careMonth.whyNotEnrolledInCmMemo = client.whyNotEnrolledInCmMemo
  100. careMonth.isClientEnrolledInRm = client.isEnrolledInRm
  101. careMonth.whyNotEnrolledInRmCategory = client.whyNotEnrolledInRmCategory
  102. careMonth.whyNotEnrolledInRmMemo = client.whyNotEnrolledInRmMemo
  103. - Client CM/RM reasons are copied over as CareMonth CM/RM reasons
  104. Note CM Setup
  105. - The relevant fields are:
  106. Note
  107. Boolean wasCmSetupPerformed;
  108. String cmSetupDetail;
  109. String cmSetupNaSignatureStatus;
  110. String cmSetupMcpSignatureStatus;
  111. String cmSetupManagerSignatureStatus;
  112. Claim cmSetupClaim;
  113. Client
  114. Boolean hasCmSetupBeenPerformed = Boolean.FALSE;
  115. Note cmSetupNote;
  116. Marking CM setup as performed on a note:
  117. /api/note/markCmSetupPerformed
  118. void markCmSetupPerformed
  119. - check client for the note is enrolled in cm
  120. - check note does not have active claims
  121. - check note client does not have cmSetupNote
  122. - check this note is not already marked cm setup performed
  123. note.setWasCmSetupPerformed(true);
  124. note.setCmSetupDetail(cmSetupDetail);
  125. client.setHasCmSetupBeenPerformed(true);
  126. client.setCmSetupNote(note);
  127. generateClaimSuggestionJson with a line for G0506
  128. Undoing "markCmSetupPerformed"
  129. /api/note/undoMarkCmSetupPerformed
  130. void undoMarkCmSetupPerformed(AppSession performer, Note note);
  131. - check this note has cm setup marked as performed
  132. - check this note has not active claims
  133. note.setWasCmSetupPerformed(false);
  134. Client client = note.getClient();
  135. client.setHasCmSetupBeenPerformed(false);
  136. client.setCmSetupNote(null);
  137. generateClaimSuggestionJson - refresh the claim suggestion json to remove the G0506 line
  138. Updating CM Setup detail on a note:
  139. /api/note/updateCmSetupDetail [NOT IN USE ON THE FRONTEND]
  140. void updateCmSetupDetail
  141. note.setCmSetupDetail(...);
  142. Updating CM setup NA signature status: [NOT IN USE ON THE FRONTEND]
  143. /api/note/updateCmSetupNaSignatureStatus
  144. void updateCmSetupNaSignatureStatus
  145. note.setCmSetupNaSignatureStatus
  146. Updating CM Setup MCP signature status [NOT USE ON THE FRONTEND]
  147. /api/note/updateCmSetupMcpSignatureStatus
  148. void updateCmSetupMcpSignatureStatus
  149. - check performer is the note hcp pro
  150. - check performer is note client mcpPro
  151. note.setCmSetupMcpSignatureStatus(...);
  152. Updating CM Setup Manager signature status [NOT USE ON THE FRONTEND]
  153. /api/note/updateCmSetupManagerSignatureStatus
  154. void updateCmSetupManagerSignatureStatus
  155. note.setCmSetupManagerSignatureStatus(...);
  156. NB:
  157. - The following fields on the note are currently not supported by the frontend:
  158. cmSetupNaSignatureStatus
  159. cmSetupMcpSignatureStatus
  160. cmSetupManagerSignatureStatus
  161. - "cmSetupClaim" is currently not in use.
  162. - When "cm setup" is performed on a note, The claim generated for the note will have the CM setup code "G0506"
  163. - Client must be 'enrolled in cm' for cm setup to be performed
  164. - When "cm setup" is performed on a note, the following fields are updated on the client:
  165. client.hasCmSetupBeenPerformed = Boolean.FALSE;
  166. client.cmSetupNote;
  167. - CM setup is done once in the life of a patient
  168. - CM setup can be undone if no claim has been generated on client.cmSetupNote
  169. Care Month RM Enrollment:
  170. The relevant fields are:
  171. Boolean isClientEnrolledInRm;
  172. String whyNotEnrolledInRmCategory;
  173. String whyNotEnrolledInRmMemo;
  174. *Boolean isRmCanceledThisMonth;
  175. *String whyIsRmCanceledThisMonth;
  176. - When a care month is created, this fields are copied over from the corresponding fields on the client
  177. - Client RM enrollment on a given care month can be modified using the below endpoints
  178. /api/careMonth/setIsClientEnrolledInRmToTrue
  179. void setIsClientEnrolledInRmToTrue
  180. careMonth.confirmHasNoActiveBillForRm();
  181. careMonth.setIsClientEnrolledInRm(true);
  182. /api/careMonth/setIsClientEnrolledInRmToFalse
  183. void setIsClientEnrolledInRmToFalse
  184. careMonth.confirmHasNoActiveBillForRm();
  185. careMonth.setIsClientEnrolledInRm(false);
  186. /api/careMonth/updateWhyNotEnrolledInRm
  187. void updateWhyNotEnrolledInRm
  188. careMonth.confirmHasNoActiveBillForRm();
  189. careMonth.setWhyNotEnrolledInRmCategory(...);
  190. careMonth.setWhyNotEnrolledInRmMemo(...);
  191. /api/careMonth/setIsRmCanceledThisMonthToTrue [NOT IN USE ON FRONTEND]
  192. void setIsRmCanceledThisMonthToTrue
  193. - ensure caremonth has no active rm bill
  194. careMonth.setIsRmCanceledThisMonth(true);
  195. careMonth.setWhyIsRmCanceledThisMonth(memo);
  196. /api/careMonth/updateWhyIsRmCanceledThisMonth [NOT IN USE ON FRONTEND]
  197. void updateWhyIsRmCanceledThisMonth
  198. careMonth.setWhyIsRmCanceledThisMonth(memo);
  199. /api/careMonth/setIsRmCanceledThisMonthToFalse [NOT IN USE ON FRONTEND]
  200. void setIsRmCanceledThisMonthToFalse
  201. careMonth.setIsRmCanceledThisMonth(false);
  202. Care Month CM Enrollment:
  203. - The relevant fields are:
  204. Boolean isClientEnrolledInCm;
  205. String whyNotEnrolledInCmCategory;
  206. String whyNotEnrolledInCmMemo;
  207. *Boolean isCmCanceledThisMonth;
  208. *String whyIsCmCanceledThisMonth;
  209. - When a new care month is created, this fields are copied over from the corresponding fields on the client
  210. - Client CM enrollment on a given care month can be modified using the below endpoints:
  211. /api/careMonth/setIsClientEnrolledInCmToTrue
  212. void setIsClientEnrolledInCmToTrue
  213. careMonth.confirmHasNoActiveBillForCm();
  214. careMonth.setIsClientEnrolledInCm(true);
  215. /api/careMonth/setIsClientEnrolledInCmToFalse
  216. void setIsClientEnrolledInCmToFalse
  217. careMonth.confirmHasNoActiveBillForCm();
  218. careMonth.setIsClientEnrolledInCm(false);
  219. /api/careMonth/updateWhyNotEnrolledInCm
  220. void updateWhyNotEnrolledInCm
  221. careMonth.confirmHasNoActiveBillForCm();
  222. careMonth.setWhyNotEnrolledInCmCategory(whyNotEnrolledInCmCategory);
  223. careMonth.setWhyNotEnrolledInCmMemo(whyNotEnrolledInCmMemo);
  224. /api/careMonth/setIsCmCanceledThisMonthToTrue [CURRENTLY NOT USED ON THE FRONTEND]
  225. void setIsCmCanceledThisMonthToTrue [NOT IN USE ON FRONTEND]
  226. - ensure no cm bill for the care month
  227. careMonth.setIsCmCanceledThisMonth(true);
  228. careMonth.setWhyIsCmCanceledThisMonth(memo);
  229. /api/careMonth/updateWhyIsCmCanceledThisMonth [CURRENTLY NOT USED ON THE FRONTEND]
  230. void updateWhyIsCmCanceledThisMonth [NOT IN USE ON FRONTEND]
  231. careMonth.setWhyIsCmCanceledThisMonth(memo);
  232. /api/careMonth/setIsCmCanceledThisMonthToFalse [CURRENTLY NOT USED ON THE FRONTEND]
  233. void setIsCmCanceledThisMonthToFalse [NOT IN USE ON FRONTEND]
  234. careMonth.setIsCmCanceledThisMonth(false);
  235. Care Month RM Setup:
  236. - The relevant fields are:
  237. - RM setup is done on a care month.
  238. - The relevant fields are:
  239. CareMonth:
  240. Boolean wasRmSetupPerformed;
  241. Claim rmSetupClaim;
  242. Client:
  243. Boolean hasRmSetupBeenPerformed;
  244. CareMonth rmSetupCareMonth;
  245. - Care month is marked as "rm setup performed" as follows:
  246. /api/careMonth/markRmSetupPerformed
  247. void markRmSetupPerformed
  248. - ensure careMonth is does not already have hasRmSetupBeenPerformed = true
  249. - ensure client for the careMonth does not have rmSetupCareMonth set
  250. careMonth.setWasRmSetupPerformed(true);
  251. careMonth.getClient().setHasRmSetupBeenPerformed(true);
  252. careMonth.getClient().setRmSetupCareMonth(careMonth);
  253. - The above can be undone as follows:
  254. /api/careMonth/undoMarkRmSetupPerformed
  255. void undoMarkRmSetupPerformed(AppSession performer, CareMonth careMonth);
  256. - check care month wasRmSetupPerformed is marked as true
  257. - check no rmSetupClaim exists,
  258. if one exists and has status = "NEW", cancel it
  259. if one exists and has status != "NEW", request user to cancel first
  260. careMonth.setWasRmSetupPerformed(false);
  261. careMonth.getClient().setHasRmSetupBeenPerformed(false);
  262. careMonth.getClient().setRmSetupCareMonth(null);
  263. - The rmSetupClaim is generated using endpoint:
  264. /api/careMonth/generateRmSetupClaim
  265. void generateRmSetupClaim
  266. - check careMonth has wasRmSetupPerformed marked to true
  267. - check rmSetupClaim does not exis or is cancelled
  268. - create rmSetupClaim
  269. - setRmSetupClaim on the careMonth
  270. Care Month CM/RM Reasons
  271. - This are copied over from "clientCmRmReasons" when a new care month is created
  272. - They can be updated using the following endpoints
  273. /api/careMonthCmRmReason/create
  274. /api/careMonthCmRmReason/updateBasic
  275. //TODO: Care Month Stats
  276. Integer cmTotalTimeInSeconds;
  277. Integer cmTotalTimeInSecondsByMcp;
  278. Integer cmTotalTimeInSecondsByCmPro;
  279. Integer rmTotalTimeInSeconds;
  280. Integer rmTotalTimeInSecondsByMcp;
  281. Integer rmTotalTimeInSecondsByRmmPro;
  282. Integer rmTotalTimeInSecondsByRmePro;
  283. Integer rmTotalTimeInSecondsByRmsPro;
  284. Integer rmTotalTimeInSecondsByRmgPro;
  285. Integer rmNumMeasurementsNotStampedByMcp;
  286. Integer rmNumMeasurementsNotStampedByNonHcp;
  287. Integer rmNumMeasurementsNotStampedByRmm;
  288. Integer rmNumMeasurementsNotStampedByRme;
  289. Integer numberOfDaysWithRemoteMeasurements;
  290. //TODO: Others
  291. Boolean isRmInteractionWaived;
  292. Boolean isRmTimeWaived;
  293. Boolean hasAnyoneInteractedWithClientAboutRmOutsideNote;
  294. Boolean hasMcpRmInteractedByNote;
  295. TODO: TM
  296. /api/careMonth/setIsTmThisMonthToTrue
  297. void setIsTmThisMonthToTrue
  298. - ensure no CmBill on the care month
  299. careMonth.setIsTmThisMonth(true);
  300. /api/careMonth/setIsTmThisMonthToFalse
  301. void setIsTmThisMonthToFalse
  302. careMonth.setIsTmThisMonth(false);
  303. TODO: CareMonth CM/RM Bills
  304. Bill generateBillForCm [NOT IN USE ON FRONTEND]
  305. -- refer to implementation logic
  306. Bill generateBillForRm
  307. -- refer to implementation logic