Skip to content

Commit 90be6df

Browse files
authored
PI-2611 Update additional registrations from OASys risks (#4471)
1 parent ba8d973 commit 90be6df

33 files changed

+924
-282
lines changed

.idea/codeStyles/Project.xml

+18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

projects/assessment-summary-and-delius/src/dev/kotlin/uk/gov/justice/digital/hmpps/data/DataLoader.kt

+42-13
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ import org.springframework.context.ApplicationListener
88
import org.springframework.stereotype.Component
99
import org.springframework.transaction.annotation.Transactional
1010
import uk.gov.justice.digital.hmpps.data.generator.*
11+
import uk.gov.justice.digital.hmpps.enum.RiskLevel
12+
import uk.gov.justice.digital.hmpps.enum.RiskOfSeriousHarmType
13+
import uk.gov.justice.digital.hmpps.enum.RiskOfSeriousHarmType.*
14+
import uk.gov.justice.digital.hmpps.enum.RiskType
1115
import uk.gov.justice.digital.hmpps.integrations.delius.contact.entity.ContactType
1216
import uk.gov.justice.digital.hmpps.integrations.delius.person.entity.Event
1317
import uk.gov.justice.digital.hmpps.integrations.delius.person.entity.Person
14-
import uk.gov.justice.digital.hmpps.service.Risk
1518
import uk.gov.justice.digital.hmpps.set
1619
import uk.gov.justice.digital.hmpps.user.AuditUserRepository
1720
import java.time.LocalDate
@@ -33,7 +36,12 @@ class DataLoader(
3336
saveAll(*ReferenceDataGenerator.BUSINESS_INTERACTIONS.toTypedArray())
3437
saveAll(*ReferenceDataGenerator.COURTS.toTypedArray())
3538
saveAll(*ReferenceDataGenerator.OFFENCES.toTypedArray())
36-
saveAll(ReferenceDataGenerator.FLAG_DATASET, ReferenceDataGenerator.DEFAULT_FLAG)
39+
saveAll(
40+
ReferenceDataGenerator.FLAG_DATASET,
41+
ReferenceDataGenerator.ROSH_FLAG,
42+
ReferenceDataGenerator.SAFEGUARDING_FLAG
43+
)
44+
saveAll(ReferenceDataGenerator.LEVELS_DATASET, *ReferenceDataGenerator.LEVELS.toTypedArray())
3745
saveAll(*ContactGenerator.TYPES.values.toTypedArray())
3846
saveAll(*RegistrationGenerator.TYPES.values.toTypedArray())
3947
saveAll(*ReferenceDataGenerator.REQ_MAIN_CATS.toTypedArray())
@@ -43,18 +51,26 @@ class DataLoader(
4351
)
4452
saveAll(ReferenceDataGenerator.DISPOSAL_TYPE)
4553

46-
PersonGenerator.NO_RISK.withEvent().withRisk(Risk.M, Risk.L)
47-
PersonGenerator.LOW_RISK
54+
PersonGenerator.NO_ROSH.withEvent().withRiskOfSeriousHarm(M, L)
55+
PersonGenerator.LOW_ROSH
4856
.withEvent()
49-
.withRisk(Risk.M, Risk.H)
50-
.withAssessment("10096930")
57+
.withRiskOfSeriousHarm(M, H)
58+
.withAssessment("2")
5159
.withAccreditedProgramRequirement()
52-
PersonGenerator.MEDIUM_RISK.withEvent().withRisk(Risk.M)
53-
PersonGenerator.HIGH_RISK.withEvent().withRisk(Risk.L, Risk.H)
54-
PersonGenerator.VERY_HIGH_RISK.withEvent().withRisk(Risk.L, Risk.M, Risk.H)
60+
PersonGenerator.MEDIUM_ROSH.withEvent().withRiskOfSeriousHarm(M)
61+
PersonGenerator.HIGH_ROSH.withEvent().withRiskOfSeriousHarm(L, H)
62+
PersonGenerator.VERY_HIGH_ROSH.withEvent().withRiskOfSeriousHarm(L, M, H)
5563
saveAll(PersonGenerator.PERSON_NO_EVENT)
56-
PersonGenerator.PERSON_SOFT_DELETED_EVENT.withEvent(softDeleted = true).withRisk(Risk.L, Risk.M, Risk.H)
64+
PersonGenerator.PERSON_SOFT_DELETED_EVENT.withEvent(softDeleted = true).withRiskOfSeriousHarm(L, M, H)
5765
PersonGenerator.PRISON_ASSESSMENT.withEvent(custodial = true)
66+
PersonGenerator.NO_EXISTING_RISKS.withEvent()
67+
PersonGenerator.EXISTING_RISKS.withEvent().withRisks(
68+
RiskType.CHILDREN to RiskLevel.H,
69+
RiskType.STAFF to RiskLevel.V,
70+
RiskType.KNOWN_ADULT to RiskLevel.M,
71+
RiskType.PUBLIC to RiskLevel.M,
72+
)
73+
PersonGenerator.FEATURE_FLAG.withEvent().withRiskOfSeriousHarm(V)
5874
}
5975

6076
private fun Person.withEvent(softDeleted: Boolean = false, custodial: Boolean = false): Person {
@@ -79,18 +95,31 @@ class DataLoader(
7995
return this
8096
}
8197

82-
private fun Person.withRisk(vararg risks: Risk): Person {
83-
risks.forEach {
98+
private fun Person.withRiskOfSeriousHarm(vararg riskOfSeriousHarmTypes: RiskOfSeriousHarmType): Person {
99+
riskOfSeriousHarmTypes.forEach {
84100
val type = RegistrationGenerator.TYPES[it.code]
85101
val contact = entityManager.merge(ContactGenerator.generateContact(this, type!!.registrationContactType!!))
86-
val registration = RegistrationGenerator.generate(this.id, LocalDate.parse("2023-06-14"), type, contact)
102+
val registration = RegistrationGenerator.generate(this.id, LocalDate.parse("2023-06-14"), contact, type)
87103
val reviewContact = entityManager.merge(ContactGenerator.generateContact(this, type.reviewContactType!!))
88104
highestRiskColour = type.colour
89105
saveAll(this, registration.withReview(reviewContact))
90106
}
91107
return this
92108
}
93109

110+
private fun Person.withRisks(vararg risks: Pair<RiskType, RiskLevel>): Person {
111+
risks.forEach { risk ->
112+
val type = RegistrationGenerator.TYPES[risk.first.code]
113+
val level = ReferenceDataGenerator.LEVELS.single { it.code == risk.second.code }
114+
val contact = entityManager.merge(ContactGenerator.generateContact(this, type!!.registrationContactType!!))
115+
val registration =
116+
RegistrationGenerator.generate(this.id, LocalDate.parse("2023-06-14"), contact, type, level)
117+
val reviewContact = entityManager.merge(ContactGenerator.generateContact(this, type.reviewContactType!!))
118+
saveAll(this, registration.withReview(reviewContact))
119+
}
120+
return this
121+
}
122+
94123
private fun Person.withAccreditedProgramRequirement(): Person {
95124
saveAll(PersonGenerator.generateRequirement(this))
96125
return this

projects/assessment-summary-and-delius/src/dev/kotlin/uk/gov/justice/digital/hmpps/data/generator/PersonGenerator.kt

+12-8
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@ import uk.gov.justice.digital.hmpps.integrations.delius.person.entity.*
44
import uk.gov.justice.digital.hmpps.integrations.delius.referencedata.entity.ReferenceData
55

66
object PersonGenerator {
7-
val NO_RISK = generate("N123456")
8-
val LOW_RISK = generate("L123456")
9-
val MEDIUM_RISK = generate("M123456")
10-
val HIGH_RISK = generate("H123456")
11-
val VERY_HIGH_RISK = generate("V123456")
12-
val PERSON_NO_EVENT = generate("E123456")
13-
val PERSON_SOFT_DELETED_EVENT = generate("F123456")
14-
val PRISON_ASSESSMENT = generate("O123456")
7+
val NO_ROSH = generate("A000001")
8+
val LOW_ROSH = generate("A000002")
9+
val MEDIUM_ROSH = generate("A000003")
10+
val HIGH_ROSH = generate("A000004")
11+
val VERY_HIGH_ROSH = generate("A000005")
12+
val PERSON_NO_EVENT = generate("A000006")
13+
val PERSON_SOFT_DELETED_EVENT = generate("A000007")
14+
val PRISON_ASSESSMENT = generate("A000008")
15+
16+
val NO_EXISTING_RISKS = generate("A000009")
17+
val EXISTING_RISKS = generate("A000010")
18+
val FEATURE_FLAG = generate("A000011")
1519

1620
fun generate(
1721
crn: String,

projects/assessment-summary-and-delius/src/dev/kotlin/uk/gov/justice/digital/hmpps/data/generator/ReferenceDataGenerator.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package uk.gov.justice.digital.hmpps.data.generator
22

33
import uk.gov.justice.digital.hmpps.audit.BusinessInteraction
4+
import uk.gov.justice.digital.hmpps.enum.RiskLevel
45
import uk.gov.justice.digital.hmpps.integrations.delius.audit.BusinessInteractionCode
56
import uk.gov.justice.digital.hmpps.integrations.delius.court.entity.Court
67
import uk.gov.justice.digital.hmpps.integrations.delius.court.entity.Offence
@@ -19,7 +20,10 @@ object ReferenceDataGenerator {
1920
)
2021
}
2122
val FLAG_DATASET = generateDataset(Dataset.Code.REGISTER_TYPE_FLAG.value)
22-
val DEFAULT_FLAG = generateReferenceData("1", dataset = FLAG_DATASET)
23+
val ROSH_FLAG = generateReferenceData("1", "RoSH", FLAG_DATASET)
24+
val SAFEGUARDING_FLAG = generateReferenceData("3", "Safeguarding", FLAG_DATASET)
25+
val LEVELS_DATASET = generateDataset(Dataset.Code.REGISTER_LEVEL.value)
26+
val LEVELS = RiskLevel.entries.map { generateReferenceData(it.code, it.name, dataset = LEVELS_DATASET) }
2327
val OFFENCES = listOf("80400", "00857").map { generateOffence(it) }
2428
val COURTS = listOf("CRT150", "LVRPCC").map { generateCourt(it) }
2529
val REQ_MAIN_CATS = listOf("RM38").map { generateReqMainCat(it) }
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,52 @@
11
package uk.gov.justice.digital.hmpps.data.generator
22

3+
import uk.gov.justice.digital.hmpps.data.generator.ReferenceDataGenerator.ROSH_FLAG
4+
import uk.gov.justice.digital.hmpps.enum.RiskOfSeriousHarmType
5+
import uk.gov.justice.digital.hmpps.enum.RiskType
36
import uk.gov.justice.digital.hmpps.integrations.delius.contact.entity.Contact
47
import uk.gov.justice.digital.hmpps.integrations.delius.contact.entity.ContactType
58
import uk.gov.justice.digital.hmpps.integrations.delius.person.entity.RegisterType
69
import uk.gov.justice.digital.hmpps.integrations.delius.person.entity.Registration
710
import uk.gov.justice.digital.hmpps.integrations.delius.referencedata.entity.ReferenceData
8-
import uk.gov.justice.digital.hmpps.service.Risk
911
import java.time.LocalDate
1012

1113
object RegistrationGenerator {
1214

13-
val TYPES = Risk.entries.map {
14-
generateType(
15-
it.code, colour = when (it) {
16-
Risk.V -> "Red"
17-
Risk.H -> "Orange"
18-
Risk.M -> "Amber"
19-
Risk.L -> "Green"
20-
}
21-
)
22-
}.associateBy { it.code }
15+
val TYPES = listOf(
16+
RiskOfSeriousHarmType.entries.map { generateType(it.code, it.colour, flag = ROSH_FLAG) },
17+
RiskType.entries.map { generateType(it.code, "Amber", "Risk to ${it.name.lowercase()}") }
18+
).flatten().associateBy { it.code }
19+
20+
val RiskOfSeriousHarmType.colour
21+
get() = when (this) {
22+
RiskOfSeriousHarmType.V -> "Red"
23+
RiskOfSeriousHarmType.H -> "Orange"
24+
RiskOfSeriousHarmType.M -> "Amber"
25+
RiskOfSeriousHarmType.L -> "Green"
26+
}
2327

2428
fun generate(
2529
personId: Long,
2630
date: LocalDate,
27-
type: RegisterType,
2831
contact: Contact,
32+
type: RegisterType,
33+
level: ReferenceData? = null,
2934
teamId: Long = ProviderGenerator.DEFAULT_TEAM_ID,
3035
staffId: Long = ProviderGenerator.DEFAULT_STAFF_ID,
3136
nextReviewDate: LocalDate? = type.reviewPeriod?.let { date.plusMonths(it) },
37+
notes: String? = null,
3238
softDeleted: Boolean = false,
3339
id: Long = IdGenerator.getAndIncrement()
34-
) = Registration(personId, date, contact, teamId, staffId, type, nextReviewDate, softDeleted, id)
40+
) = Registration(personId, date, contact, teamId, staffId, type, level, nextReviewDate, notes, softDeleted, id)
3541

3642
fun generateType(
3743
code: String,
44+
colour: String,
3845
description: String = "Description of $code",
39-
flag: ReferenceData = ReferenceDataGenerator.DEFAULT_FLAG,
46+
flag: ReferenceData = ReferenceDataGenerator.SAFEGUARDING_FLAG,
4047
registrationContactType: ContactType? = ContactGenerator.TYPES[ContactType.Code.REGISTRATION.value],
4148
reviewContactType: ContactType? = ContactGenerator.TYPES[ContactType.Code.REGISTRATION_REVIEW.value],
4249
reviewPeriod: Long? = 6,
43-
colour: String? = null,
4450
id: Long = IdGenerator.getAndIncrement()
4551
) = RegisterType(code, description, flag, registrationContactType, reviewPeriod, reviewContactType, colour, id)
4652
}

projects/assessment-summary-and-delius/src/dev/resources/messages/assessment-summary-produced-F123456.json

-12
This file was deleted.

projects/assessment-summary-and-delius/src/dev/resources/messages/assessment-summary-produced-G123456.json

-12
This file was deleted.

projects/assessment-summary-and-delius/src/dev/resources/messages/assessment-summary-produced-H123456.json

-12
This file was deleted.

projects/assessment-summary-and-delius/src/dev/resources/messages/assessment-summary-produced-L123456.json

-12
This file was deleted.

projects/assessment-summary-and-delius/src/dev/resources/messages/assessment-summary-produced-M123456.json

-12
This file was deleted.

projects/assessment-summary-and-delius/src/dev/resources/messages/assessment-summary-produced-N123456.json

-12
This file was deleted.

projects/assessment-summary-and-delius/src/dev/resources/messages/assessment-summary-produced-O123456.json

-12
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"Type": "Notification",
33
"MessageId": "33ad848a-4342-5ff2-9fe9-d96307935317",
4-
"Message": "{\n \"eventType\": \"assessment.summary.produced\",\n \"version\": 1,\n \"description\": \"Assessment Summary has been produced\",\n \"detailUrl\": \"http://localhost:{wiremock.port}/eor/oasys/ass/asssumm/E123456/ALLOW/10069390/COMPLETE\",\n \"occurredAt\": \"2023-12-05T15:32:32+00:00\",\"personReference\":{\"identifiers\":[{\"type\":\"CRN\",\"value\":\"E123456\"}]}}",
4+
"Message": "{\n \"eventType\": \"assessment.summary.produced\",\n \"version\": 1,\n \"description\": \"Assessment Summary has been produced\",\n \"detailUrl\": \"http://localhost:{wiremock.port}/eor/oasys/ass/asssumm/A000001/ALLOW/1/COMPLETE\",\n \"occurredAt\": \"2023-12-05T15:32:32+00:00\",\"personReference\":{\"identifiers\":[{\"type\":\"CRN\",\"value\":\"A000001\"}]}}",
55
"Timestamp": "2023-12-05T15:32:33.823Z",
66
"MessageAttributes": {
77
"eventType": {
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"probNumber": "N123456",
2+
"probNumber": "A000001",
33
"assessments": [
44
{
5-
"assessmentPk": 10071389,
5+
"assessmentPk": 1,
66
"assessmentType": "LAYER3",
77
"dateCompleted": "2023-12-07T12:22:44",
88
"assessorSignedDate": "2023-12-07T12:16:12",
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"probNumber": "L123456",
2+
"probNumber": "A000002",
33
"assessments": [
44
{
5-
"assessmentPk": 10096930,
5+
"assessmentPk": 2,
66
"assessmentType": "LAYER3",
77
"dateCompleted": "2023-12-07T12:22:44",
88
"assessorSignedDate": "2023-12-07T12:16:12",
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"probNumber": "H123456",
2+
"probNumber": "A000003",
33
"assessments": [
44
{
5-
"assessmentPk": 100835871,
5+
"assessmentPk": 3,
66
"assessmentType": "LAYER3",
77
"dateCompleted": "2023-12-15T08:34:44",
88
"assessorSignedDate": "2023-12-15T08:33:39",
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"probNumber": "F123456",
2+
"probNumber": "A000004",
33
"assessments": [
44
{
5-
"assessmentPk": 10078385,
5+
"assessmentPk": 4,
66
"assessmentType": "LAYER3",
77
"dateCompleted": "2023-12-15T08:34:44",
88
"assessorSignedDate": "2023-12-15T08:33:39",

0 commit comments

Comments
 (0)