cm_rm_notes.txt 14 KB

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