Skip to content

Commit

Permalink
Merge pull request #456 from harena-lab/development
Browse files Browse the repository at this point in the history
refactor (heart): change in the order
  • Loading branch information
santanche authored Oct 23, 2023
2 parents bbaf0f6 + baea028 commit 2d092bc
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 27 deletions.
20 changes: 10 additions & 10 deletions src/adonisjs/public/player/js/heart/blockly-oid-custom.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ blocks:
'type': 'field_dropdown',
'name': 'estrutura',
'options': [
['Sino atrial', 'ondaP'],
['Nó atrio ventricular', 'segmentoPR'],
['Sistema His-Purkinje', 'ondaQRS'],
['Ventrículo', 'segmentoST/OndaT']
['Sino atrial', 'ondaP'],
['Ventrículo', 'segmentoST/ondaT'],
['Nó atrio ventricular', 'segmentoPR']
]
}
],
Expand All @@ -70,10 +70,10 @@ blocks:
'type': 'field_dropdown',
'name': 'efeito',
'options': [
['Estímulo disparando a despolarização atrial', 'ondaP'],
['Tempo de retardo entre a ativação auricular e ventricular', 'segmentoPR'],
['Condução rápida dos estímulos elétricos nos ventrículos', 'ondaQRS'],
['Intervalo entre o fim da despolarização e o início da repolarização ventricular', 'segmentoST'],
['Estímulo disparando a despolarização atrial', 'ondaP'],
['Repolarização ventricular', 'ondaT']
]
}
Expand All @@ -91,9 +91,9 @@ blocks:
'type': 'field_dropdown',
'name': 'image',
'options': [
[{src: '/player/case/images/heart/images/3movimento.png', width: 200, height: 200, alt: 'heart_mov 3'}, 'ondaQRS'],
[{src: '/player/case/images/heart/images/1movimento.png', width: 200, height: 200, alt: 'heart_mov 1'}, 'ondaP'],
[{src: '/player/case/images/heart/images/2movimento.png', width: 200, height: 200, alt: 'heart_mov 2'}, 'segmentoPR/segmentoST'],
[{src: '/player/case/images/heart/images/3movimento.png', width: 200, height: 200, alt: 'heart_mov 3'}, 'ondaQRS'],
[{src: '/player/case/images/heart/images/5movimento.png', width: 200, height: 200, alt: 'heart_mov 4'}, 'ondaT']
]
}
Expand All @@ -104,9 +104,9 @@ blocks:
'type': 'field_dropdown',
'name': 'estrutura',
'options': [
['Átrio', 'ondaP'],
['Nó AV', 'segmentoPR'],
['Ventrículo', 'ondaQRS/segmentoST/OndaT']
['Átrio', 'ondaP'],
['Ventrículo', 'ondaQRS/segmentoST/ondaT']
]
}
],
Expand All @@ -116,10 +116,10 @@ blocks:
'type': 'field_dropdown',
'name': 'efeitoMec',
'options': [
['Contração atrial', 'ondaP'],
['Não existe atividade mecânica', 'segmentoST'],
['Convergência dos estímulos atriais + retardo da condução do estímulo elétrico', 'segmentoPR'],
['Contração atrial', 'ondaP'],
['Contração ventricular', 'ondaQRS'],
['Não existe atividade mecânica', 'segmentoST'],
['Relaxamento Ventricular', 'ondaT']
]
}
Expand All @@ -131,7 +131,7 @@ blocks:
'name': 'efeitoFis',
'options': [
['Envio de sangue sob pressão do átrio para ventrículos', 'ondaP'],
['Retadrdo de condução para contração atrial antes da contração ventricular', 'segmentoPR'],
['Retardo de condução para contração atrial antes da contração ventricular', 'segmentoPR'],
['Envio do sangue para o sistema arterial pulmonar e sistêmico', 'ondaQRS'],
['Representa o início da repolarização ventricular', 'segmentoST'],
['Enchimento dos ventrículos', 'ondaT']
Expand Down
60 changes: 43 additions & 17 deletions src/adonisjs/public/player/js/heart/lively-talk-oid-custom.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,39 @@ Oid.customize('foid:lively-talk', {
process: function(oid, parameters) {
if (parameters) {
if (parameters.value == 'simular') {
let erro = 0
oid.know = ''
console.log('=== simular')
console.log(oid.statements)
if (oid.statements == null || oid.statements.length == 0)
if (oid.statements == null || oid.statements.length == 0){
oid.handleSend('display', {value: '-> Nada a ser processado'})
erro++
}
else {
if (oid.statements.length > 1 || !Array.isArray(oid.statements[0]))
if (oid.statements.length > 1 || !Array.isArray(oid.statements[0])){
oid.handleSend('display', {value: '-> Ainda há instruções soltas, não posso processar'})
else {
erro++
}
else{
let feedback = ''
const vstm = oid.statements[0]
if (vstm.length < 5)
if (vstm.length < 5){
feedback += '-> Estão faltando ciclos no meu pobre coração\n'
else if (vstm.length > 5)
erro++
}
else if (vstm.length > 5){
feedback += '-> Há muitos ciclos no meu coração, ele está fora de controle\n'
erro++
}
let empty = false
for (const stm of vstm) {
if (stm.onda == null || stm.atvEle == null || stm.atvMec == null)
empty = true
}
if (empty) feedback += '-> Há uma ou mais instruções incompletas\n'

if (empty) {
feedback += '-> Há uma ou mais instruções incompletas\n'
erro++
}
// analisando consistencia entre texto e imagem de cada célula
let pEle = 0
for (const stm of vstm) {
Expand All @@ -47,6 +58,7 @@ Oid.customize('foid:lively-talk', {
if (pEle > 0) {
feedback += `-> O texto que você escolheu em uma das imagens em algum dos blocos não descreve adequadamente a atividade ilustrada. (detalhes em Saiba mais)\n`
oid.know += `-> Associação entre textos e imagens inconsistente em ${pEle} blocos na atividade elétrica\n`
erro++
}
// analisando consistencia entre texto e imagem atividade mecanica
let pMec = 0
Expand All @@ -59,10 +71,11 @@ Oid.customize('foid:lively-talk', {
if (pMec > 0) {
feedback += `-> O texto que você escolheu em uma das imagens em algum dos blocos não descreve adequadamente a atividade ilustrada. (detalhes em Saiba mais)\n`
oid.know += `-> Associação entre textos e imagens inconsistente em ${pMec} blocos na atividade mecânica\n`
erro++
}

// analisando a ordem das células atividade elétrica
const ordemEle = ['ondaP', 'segmentoPR', 'ondaQRS', 'segmentoST', 'OndaT']
const ordemEle = ['ondaP', 'segmentoPR', 'ondaQRS', 'segmentoST', 'ondaT']
const max = (vstm.length < 5) ? vstm.length : 5
let iEle = false
for (let i = 0; i < max; i++) {
Expand All @@ -71,30 +84,37 @@ Oid.customize('foid:lively-talk', {
iEle = true
}
if (iEle) {
feedback += `-> Alguma coisa está fora de ordem.\n`
//feedback += `-> Alguma coisa está fora de ordem. (detalhes em Saiba mais)\n`
oid.know += `-> Revise a ordem em que o pulso elétrico segue. Do jeito que está, o impulso não segue uma sequência contínua.\n`
erro++
}
// analisando a ordem das Ondas ECG
let iOnda = false
for (let i = 0; i < max; i++) {
const onda = vstm[i].onda
if (onda != null && onda.image != ordemEle[i])
iOnda = true
}
}

if (iOnda){
feedback += `-> Alguma coisa está fora de ordem.\n`
//feedback += `-> Alguma coisa está fora de ordem. (detalhes em Saiba mais)\n`
oid.know += `-> Revise a ordem da onda do ECG. Do jeito que está a onda não segue uma sequência contínua.\n`
erro++
}
// analisando a ordem da atividade mecanica
let iMec = false
for (let i = 0; i < max; i++) {
const onda = vstm[i].atvMec
if (onda != null && onda.efeitoFis != ordemEle[i])
iOnda = true
iMec = true
}
if (iOnda){
feedback += `-> Alguma coisa está fora de ordem.\n`
oid.know += `-> Revise a ordem da atividade mecânica. Do jeito que está, o movimento não permite bombear sangue na sequência correta.\n`
if (iMec){
//feedback += `-> Alguma coisa está fora de ordem. (detalhes em Saiba mais)\n`
oid.know += `-> Revise a ordem da atividade mecânica. Do jeito que está, o movimento não permite bombear sangue na sequência correta.\n`
erro++
}
if(iMec || iEle || iOnda)
feedback += `-> Alguma coisa está fora de ordem. (detalhes em Saiba mais)\n`
// verifica compatibilidade entre as células das três colunas
let incompat = false
for (let i = 0; i < max; i++) {
Expand All @@ -108,9 +128,15 @@ Oid.customize('foid:lively-talk', {
vstm[i].atvEle.image != vstm[i].atvMec.efeitoFis)
incompat = true
}
if (incompat) feedback += '-> Há incompatibilidade entre as colunas\n'

if (incompat){
feedback += '-> Há incompatibilidade entre as colunas\n'
erro++
}
if(erro==0){
feedback = '-> Parabéns! Meu coração esta funcionando!\n'
}
oid.handleSend('display', {value: feedback})

}
}
}
Expand Down

0 comments on commit 2d092bc

Please sign in to comment.