forked from Coded/SIPRP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
4.6 KiB
166 lines
4.6 KiB
package siprp.database.cayenne.objects;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
|
|
import leaf.OrderedMap;
|
|
|
|
import siprp.database.cayenne.objects.auto._TrabalhadoresEcds;
|
|
import siprp.medicina.MedicinaConstants;
|
|
|
|
public class TrabalhadoresEcds extends _TrabalhadoresEcds implements MedicinaConstants
|
|
{
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
public String getDataString()
|
|
{
|
|
return getData() == null ? "(sem data definida)" : sdf.format( getData() );
|
|
}
|
|
|
|
public String getEstadoString()
|
|
{
|
|
return isNew() ? isNewMessage : (getEstado() == null || getEstado() >= ESTADOS_EXAME_STR.length ? "" : ESTADOS_EXAME_STR[getEstado()]);
|
|
}
|
|
|
|
public HashMap<Integer, String> getEstados()
|
|
{
|
|
HashMap<Integer, String> result = new HashMap<Integer, String>();
|
|
for( int i = 0; i < ESTADOS_EXAME_STR.length; ++i )
|
|
{
|
|
if( ESTADOS_EXAME_STR[i] != null )
|
|
{
|
|
result.put( new Integer( i ), ESTADOS_EXAME_STR[i] );
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public String toString()
|
|
{
|
|
return getDataString() + ": " + getEstadoString();
|
|
}
|
|
|
|
public OrderedMap<PrtGruposProtocolo> getGruposExamesForPerfil()
|
|
{
|
|
OrderedMap<PrtGruposProtocolo> grupos = new OrderedMap<PrtGruposProtocolo>();
|
|
List<Integer> estadosSoFar = new ArrayList<Integer>();
|
|
Trabalhadores trabalhador = this.getToTrabalhadores();
|
|
Integer perfil = trabalhador.getPerfil();
|
|
if( perfil != null )
|
|
{
|
|
Empresas empresa = trabalhador.getToEstabelecimentos().getToEmpresas();
|
|
List<PrtElementosProtocolo> ecdsPerfil = (List<PrtElementosProtocolo>) empresa.getPrtElementosProtocoloArray();
|
|
for( PrtElementosProtocolo ecdPerfil : ecdsPerfil )
|
|
{
|
|
if( perfil.equals( ecdPerfil.getNumeroPerfil() ) )
|
|
{
|
|
PrtTiposElementosProtocolo ecd = ecdPerfil.getToPrtTiposElementosProtocolo();
|
|
if( ecd != null )
|
|
{
|
|
PrtGruposProtocolo grupoEcd = ecd.getToPrtGruposProtocolo();
|
|
if( grupoEcd != null )
|
|
{
|
|
String descricao = grupoEcd.getDescricao();
|
|
if( descricao != null && !grupos.containsKey( grupoEcd ) )
|
|
{
|
|
grupos.putLast( grupoEcd, descricao );
|
|
Integer estado = getEstadoForGrupoEcd( grupoEcd );
|
|
grupos.putLast( grupoEcd, estado != null ? MedicinaConstants.ESTADOS_EXAME_STR[estado] : " " );
|
|
if( !estadosSoFar.contains( estado ) )
|
|
{
|
|
estadosSoFar.add( estado );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if( estadosSoFar.size() == 1 )
|
|
{
|
|
if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) || estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) )
|
|
{
|
|
setEstado( ESTADO_REALIZADO );
|
|
}
|
|
else if( estadosSoFar.contains( new Integer( ESTADO_POR_REALIZAR ) ) )
|
|
{
|
|
setEstado( ESTADO_POR_REALIZAR );
|
|
}
|
|
else
|
|
{
|
|
setEstado( ESTADO_POR_MARCAR );
|
|
}
|
|
}
|
|
else if( estadosSoFar.size() == 2 )
|
|
{
|
|
if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) && estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) )
|
|
{
|
|
setEstado( ESTADO_REALIZADO );
|
|
}
|
|
else if( estadosSoFar.contains( new Integer( ESTADO_POR_MARCAR ) ) )
|
|
{
|
|
setEstado( ESTADO_POR_MARCAR );
|
|
|
|
}
|
|
else if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) || estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) )
|
|
{
|
|
setEstado( ESTADO_PARCIALMENTE_REALIZADO );
|
|
}
|
|
else
|
|
{
|
|
setEstado( ESTADO_POR_REALIZAR );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( estadosSoFar.contains( new Integer( ESTADO_POR_MARCAR ) ) )
|
|
{
|
|
setEstado( ESTADO_POR_MARCAR );
|
|
}
|
|
else if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) && estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) )
|
|
{
|
|
setEstado( ESTADO_PARCIALMENTE_REALIZADO );
|
|
}
|
|
else
|
|
{
|
|
setEstado( ESTADO_POR_REALIZAR );
|
|
}
|
|
}
|
|
grupos.order();
|
|
return grupos;
|
|
}
|
|
|
|
private Integer getEstadoForGrupoEcd( PrtGruposProtocolo grupoEcd )
|
|
{
|
|
Integer estado = null;
|
|
List<TrabalhadoresEcdsDatas> marcacoes = getTrabalhadoresEcdsDatasArray();
|
|
if( marcacoes != null )
|
|
{
|
|
for( TrabalhadoresEcdsDatas marcacao : marcacoes )
|
|
{
|
|
List<TrabalhadoresEcd> ecds = marcacao.getTrabalhadoresEcdArray();
|
|
for( TrabalhadoresEcd ecd : ecds )
|
|
{
|
|
if( ecd.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo().equals( grupoEcd ) )
|
|
{
|
|
if( new Integer( ESTADO_REALIZADO ).equals( ecd.getEstado() ) || new Integer( ESTADO_ANULADO ).equals( ecd.getEstado() ) )
|
|
{
|
|
return ecd.getEstado();
|
|
}
|
|
else if( new Integer( ESTADO_POR_REALIZAR ).equals( ecd.getEstado() ) )
|
|
{
|
|
estado = ecd.getEstado();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return estado == null ? ESTADO_POR_MARCAR : estado;
|
|
}
|
|
|
|
}
|