function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Perspectiva Negócios DigitaisPerspectiva Negócios Digitais 

Schedule Batch INVALID_FIELD_FOR_INSERT_UPDATE, cannot specify Id in an insert call: [Id]

Hello everyone I'm having the following problem as you can see in the title of the post, when I made the code tried only with one account in my scope and worked perfectly, but with two accounts is returning this error, I think the problem is in the for but I can't solve it.

My Code:
global class CancerDeColonBatch implements Schedulable, Database.Batchable<sObject> {
	
	global Database.QueryLocator start(Database.BatchableContext BC) {
		return Database.getQueryLocator([SELECT Id, PersonContactId 
                                         FROM Account 
                                         WHERE RecordTypeId IN (SELECT Id 
                                                                FROM RecordType 
                                                                WHERE Name = 'Paciente' 
                                                                AND SObjectType = 'Account') 
                                         AND Detecta__pc = TRUE 
                                         AND Idade__pc >= 50 
                                         AND Idade__pc <= 74]);
	}

   	global void execute(Database.BatchableContext BC, List<sObject> scope) {
		List<Account> accounts = (List<Account>) scope;
		Set<Id> accountIds = new Set<Id>();
        Set<Id> personAccountsIds = new Set<Id>();
		for(Account c : accounts){
			accountIds.add(c.Id);
            personAccountsIds.add(c.PersonContactId);
		}
        system.debug(accountIds);
        system.debug(personAccountsIds);
	
      	List<AggregateResult> procedimentos = [SELECT C_digo_do_Procedimento__r.Name exame,
                                               		  Nome_do_Paciente__c conta,
                                               		  MAX(Data_de_Processamento__c) dataExame 
												 FROM Dados_Utiliza_o__c
												WHERE C_digo_do_Procedimento__r.Name IN ('40303250', '40202690',
                                                                                         '40202720', '40202739',
                                                                                         '40202666', '40201082',
                                                                                         '41001265', '40201090',
                                                                                         '40201350', '40202135')
												  AND Nome_do_Paciente__c IN :accountIds
												GROUP BY Nome_do_Paciente__c, C_digo_do_Procedimento__r.Name];
  
        Map<Id, Boolean> criarCase = new Map<Id, Boolean>();        
		for(AggregateResult ex : procedimentos){
			Date dataExame = (Date) ex.get('dataExame');
            Date todayDate = Date.today();
			Integer difCalc = dataExame.daysBetween(todayDate);
			if((ex.get('exame') == '40303250') && (difCalc >= 365)){
				criarCase.put((Id) ex.get('conta'), true);
                system.debug('if1');
			}
            else if(((ex.get('exame') == '40202690') || (ex.get('exame') == '40202720') || (ex.get('exame') == '40202739')) && (difCalc >= 1825)){
				criarCase.put((Id) ex.get('conta'), true);
                system.debug('if2');
			}
			else if(((ex.get('exame') == '40202666') || (ex.get('exame') == '40201082') || (ex.get('exame') == '41001265') || (ex.get('exame') == '40201090') || (ex.get('exame') == '40201350') || (ex.get('exame') == '40202135')) && difCalc >= 3650){
                criarCase.put((Id) ex.get('conta'), true);
                system.debug('if3');
            }
    	}
        
        List<Account> semProcedimentos = new List<Account>([SELECT Id 
                                                            FROM Account 
                                                            WHERE Id NOT IN (SELECT Nome_do_Paciente__c 
                                                                             FROM Dados_Utiliza_o__c 
                                                                             WHERE C_digo_do_Procedimento__r.Name IN ('40303250', '40202690',
                                                                                                                      '40202720', '40202739',
                                                                                                                      '40202666', '40201082',
                                                                                                                      '41001265', '40201090',
                                                                                                                      '40201350', '40202135'))
                                                            AND Detecta__pc = TRUE 
                                                            AND Idade__pc >= 50
                                                            AND Idade__pc <= 74]);
        

        for(Account sp : semProcedimentos){
            system.debug('entrou sem procedimentos');
            criarCase.put((Id) sp.Id, true);
        }
        
        String CaseDescription;
        CaseDescription = 'Exames pendentes: Sangue oculto nas fezes, pesquisa imunológica (40303250), ';
        CaseDescription += 'Retossigmoidoscopia flexível com biópsia e/ou citologia (40202690), ';
        CaseDescription += 'Retossigmoidoscopia rígida com biópsia e/ou citologia (40202720), ';
        CaseDescription += 'Retossigmoidoscopia rígida com polipectomia (40202739), ';
        CaseDescription += 'Colonoscopia com biópsia e/ou citologia (40202666), ';
        CaseDescription += 'Colonoscopia (inclui a retossigmoidoscopia) (40201082), ';
        CaseDescription += 'TC - Colonoscopia virtual (41001265), ';
        CaseDescription += 'Colonoscopia com magnificação (40201090), ';
        CaseDescription += 'Colonoscopia com cromoscopia (40201350), ';
        CaseDescription += 'Colonoscopia com magnificação e tatuagem (40202135)';
        
		RecordType carePlantRecordType = [SELECT Id FROM RecordType WHERE Name = 'CarePlan' AND SObjectType = 'Case'];
            
        List<Case> newCases = new List<Case>();
        List<CaseTeamMember> newteamMembers = new List<CaseTeamMember>();
        List<HealthCloudGA__CarePlanProblem__c> newProblem = new List<HealthCloudGA__CarePlanProblem__c>();
        List<HealthCloudGA__CarePlanGoal__c> newGoal = new List<HealthCloudGA__CarePlanGoal__c>();
        HealthCloudGA__CarePlanProblem__c problemaCriado;
        HealthCloudGA__CarePlanGoal__c metaCriada;
        List<Task> newtask = new List<Task>();
        
        for(Id pId : personAccountsIds){
            for(Id cId : accountIds){
                if(criarCase.keySet().contains(cId)){
                    Case newCase = new Case(
                        Subject = 'Câncer de Cólon - Exames Pendentes',
                        RecordType = carePlantRecordType,
                        AccountId = cId,
                        ContactId = pId,
                        Description = CaseDescription
                    );
                    newCases.add(newCase);
                    try{
                        system.debug('Entrou no insert');
                        insert newCases;
                        system.debug(newCases);
                    }
                    catch(Exception e){
                        system.debug('Erro: ' + e.getMessage());
                    }
                    CaseTeamMember newCareCoordinator = new CaseTeamMember(
                        ParentId = newCase.Id,
                        MemberId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        TeamRoleId = '0B7360000004asLCAQ' //fixo Care Coordinator, producao ou sandbox o ID não muda
                    );
                    newteamMembers.add(newCareCoordinator);
                    CaseTeamMember newPatient = new CaseTeamMember(
                        ParentId = newCase.Id,
                        MemberId = pId, //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        TeamRoleId = '0B7360000004asQCAQ' //fixo Patient producao ou sandbox o ID não muda
                    );
                    newteamMembers.add(newPatient);
                    try{
                        insert newteamMembers;
                    } 
                    catch(Exception e){
                        system.debug('Erro: ' + e.getMessage());
                    }
                    HealthCloudGA__CarePlanProblem__c newColon = new HealthCloudGA__CarePlanProblem__c(
                        HealthCloudGA__CarePlan__c = newCase.Id,
                        Name = 'Câncer de Cólon'
                    );
                    newProblem.add(newColon);
                    try{
                        insert newProblem;
                    } 
                    catch(Exception e){
                        system.debug('Erro: ' + e.getMessage());
                    }
                    try{
                        problemaCriado = [SELECT Id FROM HealthCloudGA__CarePlanProblem__c WHERE HealthCloudGA__CarePlan__c = :newCase.Id];
                    } 
                    catch(Exception e){
                        system.debug('Erro: ' + e.getMessage());
                    }
                    HealthCloudGA__CarePlanGoal__c newMeta = new HealthCloudGA__CarePlanGoal__c(
                        HealthCloudGA__CarePlan__c = newCase.Id,
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        Name = 'Realizar exames relacionados ao Câncer de Cólon'
                    );
                    newGoal.add(newMeta);
                    try{
                        insert newGoal;
                    } 
                    catch(Exception e){
                        system.debug('Erro: ' + e.getMessage());
                    }
                    try{
                        metaCriada = [SELECT Id FROM HealthCloudGA__CarePlanGoal__c WHERE HealthCloudGA__CarePlan__c = :newCase.Id];
                    } 
                    catch(Exception e){
                        system.debug('Erro: ' + e.getMessage());
                    }
                    Task newExamOne = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Retossigmoidoscopia flexível com biópsia e/ou citologia (40202690)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id 
                    );
                    newTask.add(newExamOne);
                    Task newExamTwo = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Retossigmoidoscopia rígida com biópsia e/ou citologia (40202720)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamTwo);
                    Task newExamThree = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Retossigmoidoscopia rígida com polipectomia (40202739)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamThree);
                    Task newExamFour = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Colonoscopia com biópsia e/ou citologia (40202666)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamFour);
                    Task newExamFive = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Colonoscopia (inclui a retossigmoidoscopia) (40201082',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamFive);
                    Task newExamSix = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'TC - Colonoscopia virtual (41001265)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamSix);
                    Task newExamSeven = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Colonoscopia com magnificação (40201090)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamSeven);
                    Task newExamEight = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Colonoscopia com cromoscopia (40201350)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamEight);
                    Task newExamNine = new Task(
                        WhatId = newCase.Id,
                        OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda
                        WhoId = pId,
                        Subject = 'Colonoscopia com magnificação e tatuagem (40202135)',
                        Status = 'Aberta',
                        Priority = 'Normal',
                        HealthCloudGA__CarePlanProblem__c = problemaCriado.Id,
                        HealthCloudGA__CarePlanGoal__c = metaCriada.Id
                    );
                    newTask.add(newExamNine);
                    try{
                        insert newTask;
                    } 
                    catch(Exception e){
                        system.debug('Erro: ' + e.getMessage());
                    }
                }
            }
        }
    }


	global void execute(SchedulableContext sc) {
		CancerDeColonBatch b = new CancerDeColonBatch();
		DataBase.executebatch(b);
	}
	
	global void finish(Database.BatchableContext BC) {
		
	}
}

Debug Log with error , in the line 113
User-added image

Full Log:
 RawLog Link (https://pastebin.com/XEg5XMyX)